git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Dmitry Potapov <dpotapov@gmail.com>
To: Johan Herland <johan@herland.net>
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: Mon, 7 Feb 2011 03:07:00 +0300	[thread overview]
Message-ID: <AANLkTi=A-rh+wfg7O4KryydxVuorM8nkuGYmpbgVfVJp@mail.gmail.com> (raw)
In-Reply-To: <201102062312.51655.johan@herland.net>

On Sun, Feb 06, 2011 at 11:12:51PM +0100, Johan Herland wrote:
>
> 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.

There are two sorts of tags:
- local tags, which are never intended to be shared with others but used
  by users to mark some points in the working repository.
- global tags, which are just _social_convention_ about what the current
  project considers as official versions. Without social convention, they
  make no sense.

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

Tags like words are social convention, which are used for communication
between people participated in a project. But accordingly to you, it
seems somehow "technically correct" to invent their own words in Humpty
Dumpty's ways:

'When I use a word,' Humpty Dumpty said, in rather a scornful tone, 'it
means just what I choose it to mean — neither more nor less.'

I am afraid you got the wrong idea about "proper DVCS", because DVCS
does not imply that there is no social convention. It just means that
there is no single authority that dictates everything. Like with words,
there is no single authority that assigns meaning to new words, but
that does not mean that you cannot just say "When I use a word... "
if you want to be understood by others.

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

It hurts the common case in a few ways:
1. It breaks existing user scripts
2. It complicates things for users (as Matthieu wrote above).
3. git fetch cannot report a tag clash if it happens

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

I believe that the right interface when the common case is simple, but
an uncommon case is still possible to handle. I don't think that
currently git meets this criterion, but making tag namespaces based on
the remote name strikes me as a really bad idea. Tags are attributes of
a project and not particular remote.

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

IMHO, it is very confusing, especially for people whose script was
suddenly broken by those namespaces.

>
> 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/*.

It seems you do not understand the problem that I am trying to say all
way along: there is more than one repo from which I fetch tags, and
because they are belong to the same project, they should be in the same
namespace.

So, IMHO, the proper solution should be ability to specify the desired
namespace for any remote repository, like this:

remote.<name>.tagNameSpace = foo

So, those who want to have many namespaces should be able to that
easily, but forcing multiple namespaces on those who have a single
namespace semantically is simple wrong. Not to mention that it breaks
existing scripts for no good reason.

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

Public tags are purely social convention. If there is no convention,
they are completely meaningless, and we can use only SHA-1. Thus
speaking about technical correctness of tags makes no sense.


Dmitry

  reply	other threads:[~2011-02-07  0:07 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
2011-02-07  0:07                       ` Dmitry Potapov [this message]
     [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-07 19:05                         ` Bernhard R. Link
2011-02-08  1:20                           ` Dmitry Potapov
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='AANLkTi=A-rh+wfg7O4KryydxVuorM8nkuGYmpbgVfVJp@mail.gmail.com' \
    --to=dpotapov@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=johan@herland.net \
    --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).