From: Elijah Newren <newren@gmail.com>
To: Jonathan Nieder <jrnieder@gmail.com>
Cc: "Git Mailing List" <git@vger.kernel.org>,
"Jonathan Tan" <jonathantanmy@google.com>,
"Jose Lopes" <jabolopes@google.com>,
"Jeff Hostetler" <jeffhostetler@github.com>,
"Derrick Stolee" <derrickstolee@github.com>,
"Johannes Schindelin" <Johannes.Schindelin@gmx.de>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
"Junio C Hamano" <gitster@pobox.com>
Subject: Re: [PATCH v3] repo_read_index: add config to expect files outside sparse patterns
Date: Fri, 25 Feb 2022 22:01:28 -0800 [thread overview]
Message-ID: <CABPp-BFpOWAuaA7DpS8FBty=LdNu3UFbnkq1zsM68fnE9m93eA@mail.gmail.com> (raw)
In-Reply-To: <YhkE2vxI4nM3ut0K@google.com>
On Fri, Feb 25, 2022 at 8:33 AM Jonathan Nieder <jrnieder@gmail.com> wrote:
>
> Hi,
>
> Elijah Newren wrote:
>
> > Signed-off-by: Elijah Newren <newren@gmail.com>
>
> Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
>
> Thanks, and sorry for the slow review. My one remaining area for nits
> is the documentation, but that can be improved iteratively via patches
> on top.
>
> [...]
> > --- /dev/null
> > +++ b/Documentation/config/sparse.txt
> > @@ -0,0 +1,28 @@
> > +sparse.expectFilesOutsideOfPatterns::
> > + Typically with sparse checkouts, files not matching any
> > + sparsity patterns are marked as such in the index file and
> > + missing from the working tree. Accordingly, Git will
> > + ordinarily check whether files that the index indicates are
> > + outside of the sparse area are present in the working tree and
>
> Junio mentioned the "sparse area" could suggest that the area is
> itself sparse and devoid of files, so it might not have been the best
> choice of words on my part. Perhaps "whether files that the index
> indicates are not checked out are present in the working tree" would
> work here?
I rewrote the paragraph. I think it's more clear now; I'll resubmit
it here soon.
> > + mark them as present in the index if so. This option can be
> > + used to tell Git that such present-but-unmatching files are
> > + expected and to stop checking for them.
> > ++
> > +The default is `false`. Paths which are marked as SKIP_WORKTREE
> > +despite being present (which can occur for a few different reasons)
> > +typically present a range of problems which are difficult for users to
> > +discover and recover from. The default setting avoids such issues.
>
> The git-sparse-checkout(1) page never describes what SKIP_WORKTREE
> means, so it might not be obvious to them what this means. Also, the
> "can occur for a few different reasons" may leave the user wondering
> whether they are subject to those reasons. What the reader wants to
> know is "I should keep using the default because it makes Git work
> better", so how about something like
>
> The default is `false`, which allows Git to automatically recover
> from the list of files in the index and working tree falling out of
> sync.
> +
>
> ?
I like this.
> > ++
> > +A Git-based virtual file system (VFS) can turn the usual expectation
> > +on its head: files are present in the working copy but do not take
> > +up much disk space because their contents are not downloaded until
> > +they are accessed. With such a virtual file system layer, most files
> > +do not match the sparsity patterns at first, and the VFS layer
> > +updates the sparsity patterns to add more files whenever files are
> > +written. Setting this to `true` supports such a setup where files are
> > +expected to be present outside the sparse area and a separate, robust
> > +mechanism is responsible for keeping the sparsity patterns up to date.
>
> Here I spent most of the words explaining what a Git-based VFS layer
> is, which is also not too relevant to most users (who are just
> interested in "is `true` the right value for me?"). How about
> reducing it to the following?
>
> Set this to `true` if you are in a setup where extra files are expected
> to be present and a separate, robust mechanism is responsible for
> keeping the sparsity patterns up to date, such as a Git-aware virtual
> file system.
>
> ?
I like this, but I also added in some of the wording suggestions from
Junio here, so it's
a bit longer but has both some of his suggested wording and yours for
slightly different aspects that I think works well together.
>
> > ++
> > +Note that the checking and clearing of the SKIP_WORKTREE bit only
> > +happens when core.sparseCheckout is true, so this config option has no
> > +effect unless core.sparseCheckout is true.
>
> Good note. Same nit about the user not necessarily knowing what
> SKIP_WORKTREE means applies. Also, we can remove the extra words
> "Note that" since the dutiful reader should be noting everything we
> say. :) I think that would make
>
> +
> Regardless of this setting, Git does not check for
> present-but-unmatching files unless sparse checkout is enabled, so
> this config option has no effect unless `core.sparseCheckout` is
> `true`.
I like this too. Thanks for the suggestions, the proposed changes,
and the review.
next prev parent reply other threads:[~2022-02-26 6:01 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-20 5:05 [PATCH] Provide config option to expect files outside sparse patterns Elijah Newren via GitGitGadget
2022-02-20 19:41 ` Derrick Stolee
2022-02-20 20:16 ` Junio C Hamano
2022-02-22 2:17 ` Elijah Newren
2022-02-22 12:28 ` Johannes Schindelin
2022-02-22 13:43 ` Derrick Stolee
2022-02-21 20:34 ` Johannes Schindelin
2022-02-21 22:53 ` Ævar Arnfjörð Bjarmason
2022-02-22 2:25 ` Elijah Newren
2022-02-22 12:13 ` Johannes Schindelin
2022-02-22 12:57 ` Ævar Arnfjörð Bjarmason
2022-02-22 23:13 ` Jonathan Nieder
2022-02-25 16:39 ` Ævar Arnfjörð Bjarmason
2022-02-22 2:23 ` Elijah Newren
2022-02-22 10:05 ` Ævar Arnfjörð Bjarmason
2022-02-22 12:11 ` Johannes Schindelin
2022-02-22 13:47 ` Derrick Stolee
2022-02-23 2:26 ` [PATCH v2] repo_read_index: add config " Jonathan Nieder
2022-02-23 3:10 ` Elijah Newren
2022-02-24 5:22 ` [PATCH v3] " Elijah Newren
2022-02-24 18:24 ` Junio C Hamano
2022-02-26 5:58 ` Elijah Newren
2022-02-25 16:33 ` Jonathan Nieder
2022-02-26 6:01 ` Elijah Newren [this message]
2022-02-26 6:12 ` [PATCH v4] " Elijah Newren
2022-03-02 4:33 ` [PATCH v5] " Elijah Newren
2022-03-02 7:36 ` Junio C Hamano
2022-03-02 8:01 ` Elijah Newren
2022-03-02 13:37 ` [PATCH v4] " Derrick Stolee
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CABPp-BFpOWAuaA7DpS8FBty=LdNu3UFbnkq1zsM68fnE9m93eA@mail.gmail.com' \
--to=newren@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=avarab@gmail.com \
--cc=derrickstolee@github.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jabolopes@google.com \
--cc=jeffhostetler@github.com \
--cc=jonathantanmy@google.com \
--cc=jrnieder@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).