Re: [PATCH v3 07/10] sparse-checkout: enable reapply to take --[no-]{cone,sparse-index}
- From
Elijah Newren <newren@gmail.com>
- Date
- Dec 14, 2021, 02:39 UTC
- Message-ID
- <CABPp-BGq5-_84=hXqpxg5A7syauXYK_MBzgSY989d3KmR4rn-g@mail.gmail.com>
- In-Reply-To
- <xmqq1r2ge53u.fsf@gitster.g>
On Mon, Dec 13, 2021 at 10:23 AM Junio C Hamano <gitster@pobox.com> wrote:
Show 14 quoted lines
> > "Elijah Newren via GitGitGadget" <gitgitgadget@gmail.com> writes: > > > From: Elijah Newren <newren@gmail.com> > > > > Folks may want to switch to or from cone mode, or to or from a > > sparse-index without changing their sparsity paths. Allow them to do so > > using the reapply command. > > Interesting. > > Are there certain pattern that would make sense only in one of the > modes but not the other? If there isn't any such pattern, this > feature perfectly makes sense, I would think.
Good question.
Valid cone mode patterns are a strict subset of the possible sparsity patterns. So, switching from cone to non-cone mode trivially makes sense. Understanding why switching in the other direction is okay takes a bit more understanding...
Stolee designed cone mode such that when it's active, and someone edits .git/info/sparse-checkout and adds patterns of their own (which users might do because that had been suggested for several years in the read-tree docs -- and still is), then the code will print a warning ("disabling cone pattern matching") and operate in non-cone mode. As such, the sparsity does not "break" when they switch modes if they have non-cone patterns; they'll just get warnings.
Further, we're making `reapply` consistent with `init` here. Stolee made `init` usable for switching modes in an active sparse-checkout (though it wasn't well documented, and it's slightly confusing to users who might worry that they'll lose their sparsity patterns by using `init`). We're just copying that ability from `init` over in `reapply`, and recommending using the latter rather than the former.
Show 5 quoted lines
> If an existing pattern changes its meaning between the old mode and > the new mode, that is very much fine---that is what the user wanted > to achieve by switching between the modes with "reapply". > > Thanks.