I hope this series is now ready to be reviewed. Documentation is in place so no more explanation here (main document is in git-checkout.txt). The series could be splitted into: Nguy�n Thái Ng�c Duy (6): Extend index to save more flags Introduce CE_NO_CHECKOUT bit update-index: refactor mark_valid() in preparation for new options update-index: add --checkout/--no-checkout to update CE_NO_CHECKOUT bit ls-files: add --narrow-checkout option to "will checkout" entries Add tests for updating no-checkout entries in index .gitignore | 1 + Documentation/git-ls-files.txt | 6 +++ Documentation/git-update-index.txt | 12 ++++++ Makefile | 2 +- builtin-ls-files.c | 11 ++++++ builtin-update-index.c | 40 +++++++++++++-------- cache.h | 66 +++++++++++++++++++++++++++++++++-- read-cache.c | 57 ++++++++++++++++++++++++------- t/t2104-update-index-narrow.sh | 36 +++++++++++++++++++ test-index-version.c | 14 ++++++++ 10 files changed, 212 insertions(+), 33 deletions(-) This adds CE_NO_CHECKOUT bit and plumbing support to manipulate it. This bit is to mark what entry will be checked out. Nguy�n Thái Ng�c Duy (4): Prevent diff machinery from examining worktree outside narrow checkout checkout_entry(): CE_NO_CHECKOUT on checked out entries. ls-files: apply --deleted on narrow area only grep: skip files that have not been checked out builtin-grep.c | 7 ++++++- builtin-ls-files.c | 2 +- diff-lib.c | 5 +++-- diff.c | 4 +++- entry.c | 1 + t/t2104-update-index-narrow.sh | 6 ++++++ 6 files changed, 20 insertions(+), 5 deletions(-) Various fixes to make sure it works once in this mode. Nguy�n Thái Ng�c Duy (5): unpack_trees(): add support for narrow checkout narrow spec: put '+' before a spec will change semantic of '*' ls-files: add --narrow-match=spec option for testing narrow matching clone: support narrow checkout with --path option checkout: add new options to support narrow checkout Documentation/git-checkout.txt | 68 ++++++++++++++++++++++++- Documentation/git-clone.txt | 8 +++- Documentation/git-ls-files.txt | 7 ++- builtin-checkout.c | 44 ++++++++++++++++ builtin-clone.c | 13 +++++ builtin-ls-files.c | 14 +++++- cache.h | 3 + t/t2011-checkout-narrow.sh | 80 +++++++++++++++++++++++++++++ t/t3003-ls-files-narrow-match.sh | 45 ++++++++++++++++ t/t5703-clone-narrow.sh | 39 ++++++++++++++ unpack-trees.c | 105 ++++++++++++++++++++++++++++++++++++++ unpack-trees.h | 6 ++ 12 files changed, 427 insertions(+), 5 deletions(-) Support for "git checkout" and "git clone" to enter/update/leave narrow/sparse/partial checkout. Nguy�n Thái Ng�c Duy (1): ls-files: add --overlay option Documentation/git-ls-files.txt | 4 ++++ builtin-ls-files.c | 16 +++++++++++++--- t/t2104-update-index-narrow.sh | 4 ++++ 3 files changed, 21 insertions(+), 3 deletions(-) Bonus stuff, not strictly needed. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html