From: David Turner <dturner@twopensource.com>
To: Duy Nguyen <pclouds@gmail.com>
Cc: Git Mailing List <git@vger.kernel.org>
Subject: Re: [PATCH v5 2/5] refs: add ref_type function
Date: Mon, 03 Aug 2015 16:44:49 -0400 [thread overview]
Message-ID: <1438634689.7348.35.camel@twopensource.com> (raw)
In-Reply-To: <CACsJy8DK9k67yM_mJqbqgDxNKdGKpoLPOQQ4beqGgzUobzyFUQ@mail.gmail.com>
On Mon, 2015-08-03 at 20:55 +0700, Duy Nguyen wrote:
> On Fri, Jul 31, 2015 at 1:06 PM, David Turner <dturner@twopensource.com> wrote:
> > Add a function ref_type, which categorizes refs as per-worktree,
> > pseudoref, or normal ref.
>
> For per-worktree refs, you probably should follow common_list[] in
> path.c because that's how file-based ref namespace is splitted between
> per-repo and per-worktree, even though just as simple as "everything
> outside refs/ is per-worktree" (with an exception of NOTES_MERGE_REF,
> which should be on the list as well). At least the two should be
> aligned so that the default file-based backend works the same way as
> new backends.
That would be cleaner, I think. I'm maybe a little worried about
performance if we do this, but I guess we could optimize later.
Before I re-roll, I'll wait until we come to a conclusion on the
other per-worktree ref thread.
I think we discussed NOTES_MERGE_REF[1], and decided that it should work
like HEAD. Does that seem right to you?
> Going further, I think you need to pass the "worktree identifier" to
> ref backend, at least in ref_transaction_begin_fn. Each backend is
> free to store per-worktree refs however it wants. Of course if I ask
> for refs/foo of worktree A, you should not return me refs/foo of
> worktree B. ref_transaction_begin_fn can return a fault code if it
> does not support multiple worktrees, which is fine.
If we did that, we would have to add it all over the place -- not just
ref_transaction_begin, but also update_ref.
I think it's better to encapsulate this knowledge inside the refs code.
> > Later, we will use this in refs.c to treat pseudorefs specially.
> > Alternate ref backends may use it to treat both pseudorefs and
> > per-worktree refs differently.
>
> I'm not so sure that this can't be hidden behind backends and they can
> have total control on falling back to file-based, or store them in
> some secondary storage. I haven't re-read your discussion with Junio
> yet (only skimmed through long ago) so I may be missing some important
> points.
The worry is symbolic refs -- a symbolic ref might be a per-worktree ref
pointing to a shared ref pointing to a per-worktree ref. This is why
it's simpler to let backends handle things. If we had some rules about
this, we could maybe hide this from the backend, but so far, this was
the simplest thing to do (it works great!).
[1] http://www.spinics.net/lists/git/msg256793.html
next prev parent reply other threads:[~2015-08-03 20:45 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-31 6:06 [PATCH v5 1/5] refs: introduce pseudoref and per-worktree ref concepts David Turner
2015-07-31 6:06 ` [PATCH v5 2/5] refs: add ref_type function David Turner
2015-08-03 13:55 ` Duy Nguyen
2015-08-03 20:44 ` David Turner [this message]
2015-08-11 18:39 ` David Turner
2015-07-31 6:06 ` [PATCH v5 3/5] pseudorefs: create and use pseudoref update and delete functions David Turner
2015-07-31 23:40 ` Stefan Beller
2015-08-11 18:46 ` David Turner
2015-08-11 22:32 ` Junio C Hamano
2015-08-11 22:47 ` Junio C Hamano
2015-08-11 22:53 ` David Turner
2015-07-31 6:06 ` [PATCH v5 4/5] bisect: use update_ref David Turner
2015-07-31 6:06 ` [PATCH v5 5/5] sequencer: replace write_cherry_pick_head with update_ref 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=1438634689.7348.35.camel@twopensource.com \
--to=dturner@twopensource.com \
--cc=git@vger.kernel.org \
--cc=pclouds@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.
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 NNTP newsgroup(s).