Dnia czwartek 13. sierpnia 2009 14:38, Nguyen Thai Ngoc Duy napisał: > On 8/13/09, Jakub Narebski <jnareb@xxxxxxxxx> wrote: >> Nguyen Thai Ngoc Duy <pclouds@xxxxxxxxx> writes: >>> 2009/8/12 Junio C Hamano <gitster@xxxxxxxxx>: >> >>>> It could also require core.sparseworktree configuration set to true if we >>>> are really paranoid, but without the actual sparse specification file >>>> flipping that configuration to true would not be useful anyway, so in >>>> practice, giving --sparse-work-tree option to these Porcelain commands >>>> would be no-op, but --no-sparse-work-tree option would be useful to >>>> ignore $GIT_DIR/info/sparse and populate the work tree fully. >>> >>> Only part "ignore $GIT_DIR/info/sparse" is correct. >>> "--no-sparse-work-tree" would not clear CE_VALID from all entries in >>> index (which is good, if you are using CE_VALID for another purpose). >>> >>> To quit sparse checkout, you must create an empty >>> $GIT_DIR/info/sparse, then do "git checkout" or "git read-tree -m -u >>> HEAD" so that the tree is full populated, then you can remove >>> $GIT_DIR/info/sparse. Quite unintuitive.. >> >> >> Hmmm... this looks like either argument for introducing --full option >> to git-checkout (ignore CE_VALID bit, checkout everything, and clean >> CE_VALID (?))... >> >> ...or for going with _separate_ bit for partial checkout, like in the >> very first version of this series, which otherwise functions like >> CE_VALID, or is just used to mark that CE_VALID was set using sparse. > > In my opinion, making an empty .git/info/sparse to fully populate > worktree is not too bad. I wanted to have plumbing-level support in > git so that you could try sparse checkout on your projects (possibly > with a few additional scripts to make your life easier). Then good > Porcelain UI may emerge later (or in worst case, people would roll > their own sparse checkout). Deciding whether sparse checkout should use CE_VALID only, or should it (as it was in the very first version of series) use additional flag, either CE_NO_CHECKOUT, or CE_VALID_IS_USED_HERE_FOR_SPARSE_CHECKOUT ;-) is a design decision about *plumbing-level* support. Note that shallow clone, while using the same mechanism as grafts file, nevertheless use separate file; so perhaps sparse checkout while using the same mechanism as --assume-unchanged should use additional flag. BTW. you might want to use GIT_SPARSE_FILE, similar to GIT_INDEX_FILE; see the fact that plumbing doesn't have .gitignore not .git/info/excludes hardcoded... well, except for --standard-excludes. This way full checkout would be as simple as using $ GIT_SPARSE_FILE= git checkout -- . -- Jakub Narebski Poland -- 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