From: Junio C Hamano <gitster@pobox.com>
To: David Turner <dturner@twopensource.com>
Cc: git@vger.kernel.org, mhagger@alum.mit.edu,
sunshine@sunshineco.com, philipoakley@iee.org
Subject: Re: [PATCH v3 2/6] notes: replace pseudorefs with real refs
Date: Tue, 28 Jul 2015 12:00:59 -0700 [thread overview]
Message-ID: <xmqqpp3cds44.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <1438107144-24293-3-git-send-email-dturner@twopensource.com> (David Turner's message of "Tue, 28 Jul 2015 14:12:20 -0400")
David Turner <dturner@twopensource.com> writes:
> All-caps files like NOTES_MERGE_REF are pseudorefs, and thus are
> per-worktree. We don't want multiple notes merges happening at once
> (in different worktrees), so we want to make these refs true refs.
>
> So, we lowercase NOTES_MERGE_REF and friends. That way, backends
> that distinguish between pseudorefs and real refs can correctly
> handle notes merges.
>
> This will also enable us to prevent pseudorefs from being updated by
> the ref update machinery e.g. git update-ref.
>
> Signed-off-by: David Turner <dturner@twopensource.com>
> ---
This seems to do a bit more than what it claims to do. As this kind
of changes are very error-prone to review, I did a bulk replace of
the three all-caps NOTES_*THING* and compared the result with what
this patch gives to spot this:
> # Fail to finalize merge
> test_must_fail git notes merge --commit >output 2>&1 &&
> - # .git/NOTES_MERGE_* must remain
> - test -f .git/NOTES_MERGE_PARTIAL &&
> - test -f .git/NOTES_MERGE_REF &&
> - test -f .git/NOTES_MERGE_WORKTREE/$commit_sha1 &&
> - test -f .git/NOTES_MERGE_WORKTREE/$commit_sha2 &&
> - test -f .git/NOTES_MERGE_WORKTREE/$commit_sha3 &&
> - test -f .git/NOTES_MERGE_WORKTREE/$commit_sha4 &&
> + # .git/notes_merge_* must remain
> + git rev-parse --verify notes_merge_partial &&
> + git rev-parse --verify notes_merge_ref &&
> + test -f .git/notes_merge_worktree/$commit_sha1 &&
> + test -f .git/notes_merge_worktree/$commit_sha2 &&
> + test -f .git/notes_merge_worktree/$commit_sha3 &&
> + test -f .git/notes_merge_worktree/$commit_sha4 &&
The two "rev-parse --verify" looks semi-sensible [*1*];
notes_merge_partial is all lowercase and it refers to
$GIT_DIR/notes_merge_partial, because they are shared across working
tree.
But then why are $GIT_DIR/notes_merge_worktree/* still checked with
"test -f"? If they are not refs or ref-like things, why should they
be downcased? If they are, why not "rev-parse --verify"?
[Footnote]
*1* I say "semi-" sensible, because it looks ugly. All ref-like
things immediately below $GIT_DIR/ are all-caps by convention.
Perhaps it is a better idea to move it under refs/; "everything
under refs/ is shared across working trees" is probably a much
better rule than "all caps but HEAD is special".
next prev parent reply other threads:[~2015-07-28 19:01 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-28 18:12 [PATCH v3 0/6] pseudorefs David Turner
2015-07-28 18:12 ` [PATCH v3 1/6] refs: Introduce pseudoref and per-worktree ref concepts David Turner
2015-07-28 18:12 ` [PATCH v3 2/6] notes: replace pseudorefs with real refs David Turner
2015-07-28 19:00 ` Junio C Hamano [this message]
2015-07-28 19:24 ` David Turner
2015-07-28 19:44 ` Junio C Hamano
2015-07-28 21:23 ` [PATCH] notes: handle multiple worktrees David Turner
2015-07-28 21:42 ` David Turner
2015-07-28 22:00 ` Junio C Hamano
2015-07-28 22:12 ` Junio C Hamano
2015-07-28 22:50 ` Johan Herland
2015-08-03 13:27 ` Duy Nguyen
2015-07-28 22:17 ` Eric Sunshine
2015-07-28 22:38 ` [PATCH v3 2/6] notes: replace pseudorefs with real refs Johan Herland
2015-07-28 22:52 ` Junio C Hamano
2015-07-28 23:43 ` Johan Herland
2015-07-29 0:33 ` Junio C Hamano
2015-07-29 0:56 ` Michael Haggerty
2015-07-29 1:23 ` Jacob Keller
2015-07-29 1:24 ` Johan Herland
2015-07-29 2:25 ` Junio C Hamano
2015-07-29 2:00 ` Junio C Hamano
2015-07-29 2:53 ` Johan Herland
2015-07-29 5:00 ` Junio C Hamano
2015-07-29 2:34 ` Johan Herland
2015-07-29 5:01 ` Junio C Hamano
2015-07-29 13:19 ` Johan Herland
2015-07-29 16:37 ` Junio C Hamano
2015-07-29 16:58 ` Junio C Hamano
2015-07-30 6:05 ` Johan Herland
2015-07-30 16:24 ` Junio C Hamano
2015-07-29 2:17 ` Junio C Hamano
2015-07-29 2:37 ` Johan Herland
2015-07-28 18:12 ` [PATCH v3 3/6] refs: add ref_type function David Turner
2015-07-29 6:32 ` Eric Sunshine
2015-07-28 18:12 ` [PATCH v3 4/6] pseudorefs: create and use pseudoref update and delete functions David Turner
2015-07-29 6:38 ` Eric Sunshine
2015-07-28 18:12 ` [PATCH v3 5/6] rebase: use update_ref David Turner
2015-07-28 18:12 ` [PATCH v3 6/6] sequencer: replace write_cherry_pick_head with update_ref David Turner
2015-07-28 19:01 ` [PATCH v3 0/6] pseudorefs Junio C Hamano
2015-07-28 19:07 ` David Turner
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqpp3cds44.fsf@gitster.dls.corp.google.com \
--to=gitster@pobox.com \
--cc=dturner@twopensource.com \
--cc=git@vger.kernel.org \
--cc=mhagger@alum.mit.edu \
--cc=philipoakley@iee.org \
--cc=sunshine@sunshineco.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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.