This is the first part for subtree checkout: restrict write access to index. The second part would be restrict/adjust access to working directory so that it only needs part of full working directory to work on. I would like to hear comments from people before heading to part 2. As I understand, the hardest part is probably merging. My strategy is quite simple: allow merge as long as no conflicts are outside index prefix. While it is done as part of subtree checkout. I think it can be also used as a separate feature: working on a worktree where only a subtree is to be worked on. One example is gentoo-x86 repository (~80k files). I only work on a tree of dozen of files, but every time I do "git status", ~100k stats will be issued. With this, it can be reduced to about 20 stats. So back to the topic. Is the approach broken? Do I miss anything that can write outside index prefix? What else needs more test case? Thanks Nguyễn Thái Ngọc Duy (2): Introduce GIT_INDEX_PREFIX Add tests for index prefix builtin-merge-recursive.c | 4 +- builtin-read-tree.c | 5 + builtin-rev-parse.c | 5 + builtin-update-index.c | 3 + cache.h | 2 + environment.c | 12 ++ read-cache.c | 84 ++++++++++++- t/t2300-index-prefix.sh | 207 +++++++++++++++++++++++++++++ t/t2301-index-prefix-merge-recursive.sh | 221 +++++++++++++++++++++++++++++++ unpack-trees.c | 3 + unpack-trees.h | 3 +- 11 files changed, 545 insertions(+), 4 deletions(-) create mode 100755 t/t2300-index-prefix.sh create mode 100755 t/t2301-index-prefix-merge-recursive.sh -- 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