From: Johan Herland <johan@herland.net>
To: git@vger.kernel.org
Cc: Sverre Rabbelier <srabbelier@gmail.com>,
Junio C Hamano <gitster@pobox.com>,
Jonathan Nieder <jrnieder@gmail.com>,
Shawn Pearce <spearce@spearce.org>, Kenny Root <kroot@google.com>,
Thomas Rast <trast@student.ethz.ch>
Subject: Re: [PATCH] Remove restriction on notes ref base
Date: Thu, 04 Nov 2010 01:49:47 +0100 [thread overview]
Message-ID: <201011040149.47968.johan@herland.net> (raw)
In-Reply-To: <AANLkTin_NuzQocOab+w=B3Ka+n22j2-OXQu8=J6uzByS@mail.gmail.com>
On Wednesday 03 November 2010, Sverre Rabbelier wrote:
> On Wed, Nov 3, 2010 at 17:17, Junio C Hamano <gitster@pobox.com> wrote:
> > I was actually thinking more along the lines of "not keeping track of
> > remote state at all". We don't do that for tags either.
>
> I would rather see us go the other way (and make the tags refspec put
> tags under refs/tags/remotes/.../). I can understand not scoping tags
> (since they're supposed to be immutable, and are usually global), but
> I don't think the same holds for notes. Notes _are_ versioned, and
> it's expected that users will collaborate.
Agreed. I don't see how you can easily share and manipulate notes between
repos _without_ keeping the remote state separate from the local state.
I'm probably gonna be flamed for this, but I'd like to go even further, and
- for a future major version of Git - reconsider Git's default refspecs.
Currently we have:
Remote repo -> Local repo
------------------------------------------------
refs/heads/* refs/remotes/$remote/*
refs/tags/* refs/tags/*
refs/notes/* ???
Of these, the first is specified in the config, the second is
implicit/magic, and the third would be specified in the config.
I'd probably suggest a more straightforward (and hopefully less confusing)
setup like this:
Remote repo -> Local repo
------------------------------------------------
refs/heads/* refs/remotes/$remote/heads/*
refs/tags/* refs/remotes/$remote/tags/*
refs/notes/* refs/remotes/$remote/notes/*
...and these would all be set in the config, i.e. no implicit/magic
refspecs.
Now, there would obviously need to be some accompanying changes:
We would, for example, extend the ref disambiguation of <name> (as
documented in the "SPECIFYING REVISIONS" section of git-rev-parse(1)), so
that in the cases where <name> is of the form "<foo>/<bar>" AND <foo> is an
existing remote, we also check for the following refs (after none of the
existing checks have returned a match):
7. refs/remotes/<foo>/tags/<bar>
8. refs/remotes/<foo>/heads/<bar>
We would also need similar disambiguation rules for notes refs, e.g.:
1. $GIT_DIR/<name>
2. refs/notes/<name>
3. refs/remotes/<foo>/notes/<bar> (when <name> is of the form <foo>/<bar>)
With these rules, we could use "origin/master", "origin/v1.2.3" and
"origin/bugnotes" to refer to "refs/remotes/origin/heads/master",
"refs/remotes/origin/tags/v1.2.3" and "refs/remotes/origin/notes/bugnotes"
respectively.
As a bonus, we'd get better handling of conflicting tag names: If e.g.
remotes "alice" and "bob" each have a tag "xyzzy" pointing to different
objects, you could reference and compare both tags (using "alice/xyzzy" and
"bob/xyzzy", respectively), and optionally set your own local tag
("refs/tags/xyzzy") to match either of them.
...Johan (scrambles for a flame retardant suit)
--
Johan Herland, <johan@herland.net>
www.herland.net
next prev parent reply other threads:[~2010-11-04 0:49 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-02 0:16 [PATCH] Remove restriction on notes ref base Kenny Root
2010-11-02 6:52 ` Jonathan Nieder
2010-11-02 8:48 ` Johan Herland
2010-11-02 14:11 ` Shawn Pearce
2010-11-02 14:29 ` Jeff King
2010-11-02 15:24 ` Johan Herland
2010-11-02 17:41 ` Junio C Hamano
2010-11-02 22:58 ` Johan Herland
2010-11-02 23:28 ` Chris Forbes
2010-11-03 6:41 ` Jonathan Nieder
2010-11-03 16:17 ` Junio C Hamano
2010-11-03 16:30 ` Sverre Rabbelier
2010-11-04 0:49 ` Johan Herland [this message]
2010-11-04 1:00 ` Sverre Rabbelier
2010-11-04 14:35 ` Tag refspecs (was Re: [PATCH] Remove restriction on notes ref base) Marc Branchaud
2010-11-05 1:02 ` Johan Herland
2010-11-05 15:11 ` Marc Branchaud
2010-11-04 14:58 ` [PATCH] Remove restriction on notes ref base Jeff King
2010-11-05 1:29 ` Johan Herland
2010-11-05 14:55 ` Jeff King
2010-11-03 16:35 ` Jonathan Nieder
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=201011040149.47968.johan@herland.net \
--to=johan@herland.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jrnieder@gmail.com \
--cc=kroot@google.com \
--cc=spearce@spearce.org \
--cc=srabbelier@gmail.com \
--cc=trast@student.ethz.ch \
/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.