From: David Turner <dturner@twopensource.com>
To: Junio C Hamano <gitster@pobox.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 15:24:30 -0400 [thread overview]
Message-ID: <1438111470.18134.24.camel@twopensource.com> (raw)
In-Reply-To: <xmqqpp3cds44.fsf@gitster.dls.corp.google.com>
On Tue, 2015-07-28 at 12:00 -0700, Junio C Hamano wrote:
> 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"?
They are downcased for consistency with the other notes_merge_* stuff.
> [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".
Do you mean move all current pseudorefs? Or just the notes stuff?
Moving MERGE_HEAD means that if someone upgrades in the middle of a
merge, they'll end up confused. The same is true of the notes stuff,
but I imagine that many fewer people use notes than use git merge, so I
wasn't going to worry about that. What do you think?
next prev parent reply other threads:[~2015-07-28 19:24 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
2015-07-28 19:24 ` David Turner [this message]
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=1438111470.18134.24.camel@twopensource.com \
--to=dturner@twopensource.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--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.