Re: [PATCH/resent 0/9] Sparse checkout (first half)
- From
- Santi Béjar <santi@agolina.net>
- Date
- Oct 1, 2008, 14:38 UTC
- Message-ID
- <adf1fd3d0810010738j21a6432foef3758fc7ed1cb1f@mail.gmail.com>
- In-Reply-To
- <fcaeb9bf0810010509m4d2045e4qcc2a887c180a787@mail.gmail.com>
On Wed, Oct 1, 2008 at 2:09 PM, Nguyen Thai Ngoc Duy <pclouds@gmail.com> wrote:
Show 12 quoted lines
> On 10/1/08, Santi Béjar <santi@agolina.net> wrote: >> On Wed, Oct 1, 2008 at 12:20 PM, Santi Béjar <santi@agolina.net> 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