git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: Matheus Tavares <matheus.bernardino@usp.br>,
	git@vger.kernel.org, rhi@pengutronix.de
Subject: Re: [PATCH] describe: output tag's ref instead of embedded name
Date: Tue, 18 Feb 2020 22:56:50 -0500	[thread overview]
Message-ID: <20200219035650.GA84414@coredump.intra.peff.net> (raw)
In-Reply-To: <xmqqr1yrgt2d.fsf@gitster-ct.c.googlers.com>

On Tue, Feb 18, 2020 at 07:22:02PM -0800, Junio C Hamano wrote:

> > Still, I'm not entirely convinced. As a decentralized system, I think
> > our first duty is to make things convenient and workable for the
> > preferences of the local repository, and second to facilitate
> > communication with other people's clones of the same repository.
> 
> Yes, and that can be done by either (1) locally moving a tag that is
> stored in a wrong location to where it wants to be, or (2) locally
> *creating* a tag that suits the preferences of the local repository,
> ignoring the tag obtained from outside world that is stored in a
> wrong place.  The latter would not help to facilitate communication,
> though.

I think a left a few things unsaid in my "v1.0-bob" example. I was
imagining that there are _two_ v1.0 tags floating around. One that you
consider "wrong", tagged by Bob, and one you like. You keep the latter
in refs/tags/v1.0.

I suppose that technically is your (1), as you renamed Bob's wrong tag
locally.

I think this is a steady-state that makes sense. Bob erroneously called
his tag "v1.0", but you want to hold on to it for talking to Bob, or
understanding Bob's world-view.

Now imagine you run "git describe", and it says:

  $ git describe HEAD
  warning: tag 'v1.0' is really 'v1.0-bob' here
  v1.0

Does that mean we found "v1.0-bob"? Or did we pass through looking at
Bob's v1.0 and eventually found our own "real" v1.0? (I'm actually not
sure if the "pass through" case would even generate such a warning).

But it seems like saying "we found v1.0-bob" unambiguously would make
the output more useful. Another way of thinking about it is that you can
only have one ref namespace locally, and therefore only one
refs/tags/foo; but you can have an infinite number of tags that claim to
be "foo".

> > If for whatever reason I chose to call my version of the global v1.0 tag
> > as "v1.0-bob", then it seems friendlier to me to report the name that
> > can actually be used with further local commands (and remind the user of
> > the global name) than the other way around.
> 
> That you can do with "git tag v1.0-bob <whatever object>" locally, no?

Not if you already have something else there, as above.

> > Though TBH the situation is rare enough that I kind of doubt it matters
> > all that much either way. It's been like this for over a decade, and
> > this is the first time I recall it being brought up.
> 
> Yeah, I do not think this is an often-arising concern.  It's merely
> what the expected and recommended direction to escape when it
> happens, and what the warning message should say to make the
> recommendation communicated better, I think.

Yeah, I'll be the first to admit that the example above is totally
contrived. I've never run into it myself.  But then, I've never seen
this warning in the wild either.  The usual resolution, I imagine, would
be "oops, I was trying to do some tricky with tags and screwed it up;
let me fix the name". And if we are going to give any advise() hint, I
think it would be that (and people who really do want a long-running
v1.0-bob would presumably want to disable that advice).

-Peff

  reply	other threads:[~2020-02-19  3:56 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-05 14:13 git-describe --tags warning: 'X' is really 'Y' here Roland Hieber
2020-02-05 17:15 ` Matheus Tavares Bernardino
2020-02-14  6:53   ` Jeff King
2020-02-14 16:57     ` Junio C Hamano
2020-02-15 21:34       ` [PATCH] describe: output tag's ref instead of embedded name Matheus Tavares
2020-02-16  6:51         ` Jeff King
2020-02-18 19:31           ` Junio C Hamano
2020-02-18 19:54             ` Jeff King
2020-02-18 23:05               ` Junio C Hamano
2020-02-18 23:28                 ` Junio C Hamano
2020-02-19  1:57                   ` Jeff King
2020-02-19  3:22                     ` Junio C Hamano
2020-02-19  3:56                       ` Jeff King [this message]
2020-02-19 11:14                         ` Junio C Hamano
2020-02-20 11:25                           ` Jeff King
2020-02-20 17:34                             ` Junio C Hamano
2020-02-20 22:19                               ` Matheus Tavares Bernardino
2020-02-20 22:59                                 ` Junio C Hamano
2020-02-21  1:33                                   ` Matheus Tavares
2020-02-21  2:05                                     ` Junio C Hamano
2020-02-21  6:00                                       ` Jeff King
2020-02-21  5:58                               ` Jeff King
2020-02-19 10:08                       ` Roland Hieber

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=20200219035650.GA84414@coredump.intra.peff.net \
    --to=peff@peff.net \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=matheus.bernardino@usp.br \
    --cc=rhi@pengutronix.de \
    /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).