Re: [PATCH/resent 0/9] Sparse checkout (first half)
From: Santi Béjar <hidden>
Date: 2016-06-15 22:45:25
On Wed, Oct 1, 2008 at 2:09 PM, Nguyen Thai Ngoc Duy [off-list ref] wrote:
On 10/1/08, Santi Béjar [off-list ref] wrote:quoted
On Wed, Oct 1, 2008 at 12:20 PM, Santi Béjar [off-list ref] wrote: > Not in this half but I've seen that you added a --default-sparse flag > to "git clone". I think it is useless as mostly always the one given > in -sparse-checkout should be used. To be more precise, whenever you do "git clone --sparse-checkout" you will want it to be the default sparse pattern.Yes, if only the default pattern gets updated properly when you update your checkout area.
I don't parse this sentence, but I cannot see the connection between the default sparse pattern for _clone_ and updating it or the working area.
If "git clone --sparse-checkout" makes the default pattern, then "git checkout --reset-sparse" should reset the default pattern as well.
Makes sense.
The hard part is how to update default pattern with --include-sparse and --exclude-sparse.
Maybe you could let the core.defaultsparse be defined multiple times.
[core]
defaultsparse = Documentation/*
defaultsparse = t/*
defaultsparse = !t/*svn*
equivalent to
[core]
defaultsparse = Documentation/*:t/*:!t/*svn*
but it moves the complexity to the parsing of the config.
Also, people can use "git update-index" to update checkout area, which should not touch default pattern at all.
I would prefer having a --not-update-sparse-pattern. The most common workflow should be the most straightforward. The most common use-case would be somebody working _only_ in some subdirectory (say Documentation), then what s/he normally does is: 1) cloning and default sparse chechout: $ git clone --sparse-checkout=Documentation/* ... or within an existing wd $ git checkout --reset-sparse=Documentation/* ... (maybe just --sparse?) 2) Work normally inside the Documentation directory... 3) Abort a merge with conflicts outside the sparse area: $ git reset --hard ORIG_HEAD) <Now there are files outside the default sparse area> $ git checkout --reset-sparse # with --sparse to set the sparse pattern Including/excluding more paths in the default sparse checkout is not something you would do normally, but I think it makes sense to add them to the default pattern. Please correct me if you think there are other use-cases, or more things in my use-case.
Maybe just throw a warning when default pattern no longer matches the checkout area, then let them decide.
Sure, and inform in the "git status" that you are in a sparse checkout. Best regards, Santi