From: Elijah Newren <newren@gmail.com>
To: Matheus Tavares <matheus.bernardino@usp.br>
Cc: Git Mailing List <git@vger.kernel.org>,
Junio C Hamano <gitster@pobox.com>,
Derrick Stolee <stolee@gmail.com>
Subject: Re: [PATCH v4 0/7] add/rm: honor sparse checkout and warn on sparse paths
Date: Wed, 14 Apr 2021 09:36:19 -0700 [thread overview]
Message-ID: <CABPp-BGFfqOLg4tt85f-F-TJEXTDQFfAvRuui6VCctcd0FB5sQ@mail.gmail.com> (raw)
In-Reply-To: <cover.1617914011.git.matheus.bernardino@usp.br>
On Thu, Apr 8, 2021 at 1:41 PM Matheus Tavares
<matheus.bernardino@usp.br> wrote:
>
> Make `rm` honor sparse checkouts, and make both `rm` and `add` warn
> when asked to update sparse entries.
>
> There are two changes since v3:
>
> - `test_i18ncmp` and `test_i18ngrep` were replaced by `test_cmp` and
> `grep`
>
> - The flag added in patch 5 now makes refresh_index() completely ignore
> skip_worktree entries, instead of just suppressing their matches on
> the seen[] array. The previous implementation was not necessarily
> wrong but, as Junio pointed out, it was rather odd to keep matching
> the entries if we no longer want to use the matches.
>
> As "side effects", the new version of the flag also makes
> refresh_index() refrain from both:
>
> (1) checking and warning if skip_worktree entries matching the given
> pathspec are unmerged.
>
> (2) marking skip_worktree entries matching the given pathspec with
> CE_UPTODATE.
>
> The change (1) is actually interesting because `git add` doesn't
> update skip_worktree entries, and thus, it doesn't make much sense to
> warn if they are unmerged. Besides, we will already warn if the user
> requests to update such entries, anyway. And finally, unmerged
> entries should not have the skip_worktree bit set in the first place.
> (`git merge` should clean this bit when writing the new index, and
> neither `git sparse-checkout` nor `git update-index` allow to set the
> bit on an unmerged entry.)
>
> Change (2) is perhaps not very beneficial, but it is also not harmful.
> The only practical difference we get by not setting the CE_UPTODATE
> flag in the skip_worktree entries is that, when writing a new index at
> the end of `git add --refresh`, do_write_index() will start checking
> if these entries are racy clean. Note that it already does that for
> all the skip_worktree entries that do not match the user-given
> pathspecs. And, in fact, this behavior distinction based on the
> pathspec only happens with `--refresh`. Plain `git add` and other
> options don't mark any skip_worktree entry with CE_UPTODATE
> (regardless of the pathspecs) and thus, all these entries are checked
> when writing the index. So `git add --refresh` will only do what the
> other options already do.
Sorry for the delay. These two changes sound good to me, and the
range-diff looks reasonable.
> (Additionally, as I mentioned in [1], there might actually be at least
> one advantage in checking if the skip_worktree entries are racy clean.
> But this is a very specific case, and it's probably a topic for a
> another thread :)
>
> [1]: https://lore.kernel.org/git/CAHd-oW4kRLjV9Sq3CFt-V1Ot9pYFzJggU1zPp3Hcuw=qWfq7Mg@mail.gmail.com/
This I'm a bit surprised by. I thought the outcome there was that you
didn't want to mark skip_worktree entries as CE_UPTODATE in order to
force them to be stat'd in the future when someone clears the
skip_worktree bit. (And that we'd expect the sparse-checkout
add/disable command to be the likely one to handle that, though if
users use `git update-index --no-skip-worktree PATH` then they'd also
be responsible for any refreshing as well.) Am I misunderstanding?
next prev parent reply other threads:[~2021-04-14 16:37 UTC|newest]
Thread overview: 93+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-12 21:01 [PATCH] rm: honor sparse checkout patterns Matheus Tavares
2020-11-12 23:54 ` Elijah Newren
2020-11-13 13:47 ` Derrick Stolee
2020-11-15 20:12 ` Matheus Tavares Bernardino
2020-11-15 21:42 ` Johannes Sixt
2020-11-16 12:37 ` Matheus Tavares Bernardino
2020-11-23 13:23 ` Johannes Schindelin
2020-11-24 2:48 ` Matheus Tavares Bernardino
2020-11-16 14:30 ` Jeff Hostetler
2020-11-17 4:53 ` Elijah Newren
2020-11-16 13:58 ` [PATCH v2] " Matheus Tavares
2021-02-17 21:02 ` [RFC PATCH 0/7] add/rm: honor sparse checkout and warn on sparse paths Matheus Tavares
2021-02-17 21:02 ` [RFC PATCH 1/7] add --chmod: don't update index when --dry-run is used Matheus Tavares
2021-02-17 21:45 ` Junio C Hamano
2021-02-18 1:33 ` Matheus Tavares
2021-02-17 21:02 ` [RFC PATCH 2/7] add: include magic part of pathspec on --refresh error Matheus Tavares
2021-02-17 22:20 ` Junio C Hamano
2021-02-17 21:02 ` [RFC PATCH 3/7] t3705: add tests for `git add` in sparse checkouts Matheus Tavares
2021-02-17 23:01 ` Junio C Hamano
2021-02-17 23:22 ` Eric Sunshine
2021-02-17 23:34 ` Junio C Hamano
2021-02-18 3:11 ` Matheus Tavares Bernardino
2021-02-18 3:07 ` Matheus Tavares Bernardino
2021-02-18 14:38 ` Matheus Tavares
2021-02-18 19:05 ` Junio C Hamano
2021-02-18 19:02 ` Junio C Hamano
2021-02-22 18:53 ` Elijah Newren
2021-02-17 21:02 ` [RFC PATCH 4/7] add: make --chmod and --renormalize honor " Matheus Tavares
2021-02-17 21:02 ` [RFC PATCH 5/7] pathspec: allow to ignore SKIP_WORKTREE entries on index matching Matheus Tavares
2021-02-17 21:02 ` [RFC PATCH 6/7] add: warn when pathspec only matches SKIP_WORKTREE entries Matheus Tavares
2021-02-19 0:34 ` Junio C Hamano
2021-02-19 17:11 ` Matheus Tavares Bernardino
2021-02-17 21:02 ` [RFC PATCH 7/7] rm: honor sparse checkout patterns Matheus Tavares
2021-02-22 18:57 ` [RFC PATCH 0/7] add/rm: honor sparse checkout and warn on sparse paths Elijah Newren
2021-02-24 4:05 ` [PATCH v2 " Matheus Tavares
2021-02-24 4:05 ` [PATCH v2 1/7] add: include magic part of pathspec on --refresh error Matheus Tavares
2021-02-24 4:05 ` [PATCH v2 2/7] t3705: add tests for `git add` in sparse checkouts Matheus Tavares
2021-02-24 5:15 ` Elijah Newren
2021-02-24 4:05 ` [PATCH v2 3/7] add: make --chmod and --renormalize honor " Matheus Tavares
2021-02-24 4:05 ` [PATCH v2 4/7] pathspec: allow to ignore SKIP_WORKTREE entries on index matching Matheus Tavares
2021-02-24 5:23 ` Elijah Newren
2021-02-24 4:05 ` [PATCH v2 5/7] refresh_index(): add REFRESH_DONT_MARK_SPARSE_MATCHES flag Matheus Tavares
2021-02-24 4:05 ` [PATCH v2 6/7] add: warn when pathspec only matches SKIP_WORKTREE entries Matheus Tavares
2021-02-24 6:50 ` Elijah Newren
2021-02-24 15:33 ` Matheus Tavares
2021-03-04 15:23 ` Matheus Tavares
2021-03-04 17:21 ` Elijah Newren
2021-03-04 21:03 ` Junio C Hamano
2021-03-04 22:48 ` Elijah Newren
2021-03-04 21:26 ` Matheus Tavares Bernardino
2021-02-24 4:05 ` [PATCH v2 7/7] rm: honor sparse checkout patterns Matheus Tavares
2021-02-24 6:59 ` Elijah Newren
2021-02-24 7:05 ` [PATCH v2 0/7] add/rm: honor sparse checkout and warn on sparse paths Elijah Newren
2021-03-12 22:47 ` [PATCH v3 " Matheus Tavares
2021-03-12 22:47 ` [PATCH v3 1/7] add: include magic part of pathspec on --refresh error Matheus Tavares
2021-03-12 22:47 ` [PATCH v3 2/7] t3705: add tests for `git add` in sparse checkouts Matheus Tavares
2021-03-23 20:00 ` Derrick Stolee
2021-03-12 22:47 ` [PATCH v3 3/7] add: make --chmod and --renormalize honor " Matheus Tavares
2021-03-12 22:47 ` [PATCH v3 4/7] pathspec: allow to ignore SKIP_WORKTREE entries on index matching Matheus Tavares
2021-03-12 22:48 ` [PATCH v3 5/7] refresh_index(): add REFRESH_DONT_MARK_SPARSE_MATCHES flag Matheus Tavares
2021-03-18 23:45 ` Junio C Hamano
2021-03-19 0:00 ` Junio C Hamano
2021-03-19 12:23 ` Matheus Tavares Bernardino
2021-03-19 16:05 ` Junio C Hamano
2021-03-30 18:51 ` Matheus Tavares Bernardino
2021-03-31 9:14 ` Elijah Newren
2021-03-12 22:48 ` [PATCH v3 6/7] add: warn when asked to update SKIP_WORKTREE entries Matheus Tavares
2021-03-12 22:48 ` [PATCH v3 7/7] rm: honor sparse checkout patterns Matheus Tavares
2021-03-21 23:03 ` Ævar Arnfjörð Bjarmason
2021-03-22 1:08 ` Matheus Tavares Bernardino
2021-03-23 20:47 ` Derrick Stolee
2021-03-13 7:07 ` [PATCH v3 0/7] add/rm: honor sparse checkout and warn on sparse paths Elijah Newren
2021-04-08 20:41 ` [PATCH v4 " Matheus Tavares
2021-04-08 20:41 ` [PATCH v4 1/7] add: include magic part of pathspec on --refresh error Matheus Tavares
2021-04-08 20:41 ` [PATCH v4 2/7] t3705: add tests for `git add` in sparse checkouts Matheus Tavares
2021-04-14 16:39 ` Derrick Stolee
2021-04-08 20:41 ` [PATCH v4 3/7] add: make --chmod and --renormalize honor " Matheus Tavares
2021-04-08 20:41 ` [PATCH v4 4/7] pathspec: allow to ignore SKIP_WORKTREE entries on index matching Matheus Tavares
2021-04-08 20:41 ` [PATCH v4 5/7] refresh_index(): add flag to ignore SKIP_WORKTREE entries Matheus Tavares
2021-04-08 20:41 ` [PATCH v4 6/7] add: warn when asked to update " Matheus Tavares
2021-04-08 20:41 ` [PATCH v4 7/7] rm: honor sparse checkout patterns Matheus Tavares
2021-04-14 16:36 ` Elijah Newren [this message]
2021-04-14 18:04 ` [PATCH v4 0/7] add/rm: honor sparse checkout and warn on sparse paths Matheus Tavares Bernardino
2021-04-16 21:33 ` Junio C Hamano
2021-04-16 23:17 ` Elijah Newren
2020-11-16 20:14 ` [PATCH] rm: honor sparse checkout patterns Junio C Hamano
2020-11-17 5:20 ` Elijah Newren
2020-11-20 17:06 ` Elijah Newren
2020-12-31 20:03 ` sparse-checkout questions and proposals [Was: Re: [PATCH] rm: honor sparse checkout patterns] Elijah Newren
2021-01-04 3:02 ` Derrick Stolee
2021-01-06 19:15 ` Elijah Newren
2021-01-07 12:53 ` Derrick Stolee
2021-01-07 17:36 ` Elijah Newren
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-BGFfqOLg4tt85f-F-TJEXTDQFfAvRuui6VCctcd0FB5sQ@mail.gmail.com \
--to=newren@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=matheus.bernardino@usp.br \
--cc=stolee@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).