From: Johan Herland <johan@herland.net>
To: Dmitry Potapov <dpotapov@gmail.com>
Cc: git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>,
Sverre Rabbelier <srabbelier@gmail.com>,
Jeff King <peff@peff.net>,
Nguyen Thai Ngoc Duy <pclouds@gmail.com>,
Nicolas Pitre <nico@fluxnic.net>
Subject: Re: [1.8.0] Provide proper remote ref namespaces
Date: Sun, 06 Feb 2011 23:12:51 +0100 [thread overview]
Message-ID: <201102062312.51655.johan@herland.net> (raw)
In-Reply-To: <AANLkTi=gd5iu0i=ggqJC++N_rL+nU6RO9PNw=jMpT0NH@mail.gmail.com>
On Sunday 06 February 2011, Dmitry Potapov wrote:
> On Sun, Feb 06, 2011 at 05:11:45PM +0100, Johan Herland wrote:
> > In practice, there is almost always one namespace (i.e. your repo
> > belongs to_ only one project with project-wide unique tags). However,
> > in any distributed_ system, the only-one-namespace is fundamentally a
> > myth.
>
> By your logic git 1.7.4 is a myth, because I have not specified from
> what repository I pull it.
Yes, technically git 1.7.4 is a myth. However, by convention, we all agree
what "v1.7.4" points to, and nobody seriously believe they can get away with
pointing "v1.7.4" somewhere else.
The core of this discussion is where we want to place Git in the space
between "technically correct" and "socially conventional", where the former
means owning up to the fact that each repo really is its own namespace, and
there's no way around that in a proper DVCS, and the latter means building
social convention into our tools, thereby making it harder to deal with the
few unconventional cases (like my two semi-related repos case).
AFAICS, my proposal does not harm the common case (unambiguous tags are
still interpreted unambiguously, even if they may exist in multiple
namespaces), while it _does_ help the uncommon case (by allowing ambiguous
tags to co-exist in the same repo).
Granted, if we leave all tags in a single namespace, I can still work around
this by manually futzing with the configured refspecs to create ad hoc
namespaces. But I _really_ hate it when I'm forced to hack around the tool,
because the tool thinks it "knows better".
> But, IMHO, it is a myth that having different
> namespaces solves the problem, because in _most_ cases, you really want
> to have a single namespace _semantically_, so you can communicate with
> other people using this tag name.
My proposal tries very hard to present a single namespace _semantically_ to
the user in the common case (when tags are unambiguous). I'd even go as far
as proposing that "git tag -l" should by default list only a single
shortened tag name in the cases where there are multiple unambiguous
alternatives.
Alternatively, I'd suggest a compromise (already mentioned elsewhere in this
thread) where we add a config variable tags.preferredRemote (defaults to
"origin") which allows you to directly select which namespace you consider
official. You could even implement this as physically copying
refs/remotes/${tag.preferredRemote}/tags/* into refs/tags/*.
> > In that case it would be wrong of gitk to display "v1.0". Instead it
> > should_ display a longer, unambiguous name, e.g. "origin/v1.0".
>
> But it is still ambiguous because my "origin" may be different from
> yours origin. It is only unambiguous when it look at it _locally_ but
> that makes it completely useless for communication with other people.
> One project should have only one version with the same tag regardless
> where it came from.
Again, you are setting "technical correctness" up against "social
convention". Technically, _any_ ref name whatsoever is repo-specific and
"completely useless for communication with other people". The only thing we
can communicate unambiguously is SHA-1 object names. However, social
conventions compel us to name our refs unambiguously and to use common sense
when communicating, so that - in practice - everybody in the project knows
exactly what is meant by "v1.0".
It seems our opinions differ on whether Git should try to _force_ this
social convention on you, or rather stick to technical correctness (with a
bias towards conventional behavior as long as there no ambiguities).
> I agree in your use case of semi-related projects you need separate
> namespaces. But I don't think it is how most people use git. It may
> be nice to have an option that will make tag namespace separate, but
> I do not think it should be default. Not until, it is widely tested.
Well, this _is_ the thread for discussing things "we would have done
differently if we were writing Git from scratch". ;)
Still, you have yet to convince me exactly _what_ will in practice be
horribly and user-visibly broken by this proposal. AFAICS, all the common
use cases today will still work well with this proposal.
...Johan
--
Johan Herland, <johan@herland.net>
www.herland.net
next prev parent reply other threads:[~2011-02-06 22:13 UTC|newest]
Thread overview: 105+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-01 10:44 [1.8.0] Remote tag namespace Nguyen Thai Ngoc Duy
2011-02-01 14:10 ` Leo Razoumov
2011-02-01 15:07 ` Marc Branchaud
2011-02-01 15:35 ` Nguyen Thai Ngoc Duy
2011-02-02 19:38 ` Marc Branchaud
2011-02-01 18:14 ` Jeff King
2011-02-01 23:14 ` Sverre Rabbelier
2011-02-02 2:21 ` [1.8.0] Provide proper remote ref namespaces Johan Herland
2011-02-02 13:27 ` Santi Béjar
2011-02-02 15:51 ` Johan Herland
2011-02-02 16:19 ` Santi Béjar
2011-02-03 5:33 ` Nguyen Thai Ngoc Duy
2011-02-03 8:46 ` Johan Herland
2011-02-03 11:35 ` Nguyen Thai Ngoc Duy
2011-02-03 13:10 ` Johan Herland
2011-02-03 14:10 ` Santi Béjar
2011-02-03 15:48 ` Nguyen Thai Ngoc Duy
2011-02-04 22:39 ` Junio C Hamano
2011-02-05 1:18 ` Johan Herland
2011-02-05 18:00 ` Kevin P. Fleming
2011-02-05 21:40 ` Dmitry Potapov
2011-02-06 0:04 ` Johan Herland
2011-02-06 12:03 ` Dmitry Potapov
2011-02-06 14:09 ` Nicolas Pitre
2011-02-06 15:17 ` Dmitry Potapov
2011-02-06 16:11 ` Johan Herland
2011-02-06 17:28 ` Dmitry Potapov
2011-02-06 22:12 ` Johan Herland [this message]
2011-02-07 0:07 ` Dmitry Potapov
2011-02-07 19:05 ` Bernhard R. Link
2011-02-08 1:20 ` Dmitry Potapov
[not found] ` <201102070429.05033.johan@herland.net>
2011-02-07 3:47 ` Nicolas Pitre
2011-02-08 1:06 ` Dmitry Potapov
2011-02-08 8:15 ` Johan Herland
2011-02-08 19:11 ` Enrico Weigelt
2011-02-08 23:13 ` Junio C Hamano
2011-02-09 1:24 ` Johan Herland
2011-02-06 20:28 ` Matthieu Moy
2011-02-06 23:22 ` Johan Herland
2011-02-06 23:51 ` Matthieu Moy
2011-02-07 3:51 ` Johan Herland
2011-02-07 5:11 ` Jeff King
2011-02-07 8:58 ` Johan Herland
2011-02-07 9:01 ` Sverre Rabbelier
2011-02-07 10:06 ` Johan Herland
2011-02-07 10:22 ` Nguyen Thai Ngoc Duy
2011-02-07 20:19 ` Jeff King
2011-02-08 0:59 ` Johan Herland
2011-02-11 15:13 ` Jakub Narebski
2011-02-13 23:36 ` Johan Herland
2011-02-14 7:35 ` Junio C Hamano
2011-02-14 9:18 ` Johan Herland
2011-02-14 9:59 ` Jakub Narebski
2011-02-14 17:30 ` Junio C Hamano
2011-02-14 18:06 ` Re* " Junio C Hamano
2011-02-14 18:53 ` Jay Soffian
2011-02-14 19:44 ` Sverre Rabbelier
2011-02-14 19:50 ` Jay Soffian
2011-02-14 21:21 ` [1.8.0 RFC] push: start warning upcoming default change for push.default Jonathan Nieder
2011-02-14 21:41 ` Jay Soffian
2011-02-14 21:55 ` Jonathan Nieder
2011-02-14 21:57 ` Re* [1.8.0] Provide proper remote ref namespaces Matthieu Moy
2011-02-14 22:35 ` Jeff King
2011-02-14 22:38 ` Sverre Rabbelier
2011-02-14 23:36 ` [1.8.0 RFC] push: start warning upcoming default change for push.default Jonathan Nieder
2011-02-14 23:45 ` Re* [1.8.0] Provide proper remote ref namespaces Junio C Hamano
2011-02-14 23:05 ` Junio C Hamano
2011-02-15 15:06 ` Johan Herland
2011-02-15 18:06 ` Junio C Hamano
2011-02-16 0:54 ` [PATCH] push.default: Rename 'tracking' to 'upstream' Johan Herland
2011-02-16 6:35 ` Junio C Hamano
2011-02-16 8:55 ` Matthieu Moy
2011-02-16 9:42 ` Martin von Zweigbergk
2011-02-16 10:08 ` Jakub Narebski
2011-02-16 10:26 ` Matthieu Moy
2011-02-16 10:27 ` Sverre Rabbelier
2011-02-16 17:56 ` Junio C Hamano
2011-02-16 18:08 ` Sverre Rabbelier
2011-02-16 18:37 ` Junio C Hamano
2011-02-18 0:51 ` Martin von Zweigbergk
2011-02-18 0:57 ` Martin von Zweigbergk
2011-02-16 10:54 ` Bernhard R. Link
2011-02-14 9:40 ` [1.8.0] Provide proper remote ref namespaces Jakub Narebski
2011-02-14 15:45 ` Marc Branchaud
2011-02-14 19:35 ` Nicolas Pitre
2011-02-14 18:30 ` Junio C Hamano
2011-02-14 19:06 ` Nicolas Pitre
2011-02-14 19:46 ` Sverre Rabbelier
2011-02-07 6:54 ` Matthieu Moy
2011-02-07 0:14 ` Dmitry Potapov
2011-02-05 18:39 ` Nicolas Pitre
2011-02-05 19:37 ` Jeff King
2011-02-05 19:55 ` Nicolas Pitre
2011-02-05 23:39 ` Johan Herland
2011-02-06 20:04 ` Junio C Hamano
2011-02-07 16:10 ` Marc Branchaud
2011-02-07 19:40 ` Junio C Hamano
2011-02-07 20:37 ` Nicolas Pitre
2011-02-07 5:18 ` Jeff King
2011-02-07 14:53 ` Nicolas Pitre
2011-02-07 20:25 ` Jeff King
2011-02-07 20:51 ` Nicolas Pitre
2011-02-07 20:56 ` Jeff King
2011-02-01 23:15 ` [1.8.0] Remote tag namespace Johan Herland
-- strict thread matches above, loose matches on Subject: below --
2011-02-07 3:35 [1.8.0] Provide proper remote ref namespaces Johan Herland
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201102062312.51655.johan@herland.net \
--to=johan@herland.net \
--cc=dpotapov@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=nico@fluxnic.net \
--cc=pclouds@gmail.com \
--cc=peff@peff.net \
--cc=srabbelier@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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).