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 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).