Thread (15 messages) flat view 15 messages, 3 authors, 2016-06-15

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help