git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Lightweight tag ?

From
Michael J Gruber <git@drmicha.warpmail.net>
Date
Jan 12, 2009, 14:54 UTC
Message-ID
<496B59A3.2080507@drmicha.warpmail.net>
In-Reply-To
<38b2ab8a0901120556x279f320oe693304dd2452050@mail.gmail.com>
Francis Moreau venit, vidit, dixit 01/12/09 14:56:
Show 11 quoted lines
> On Mon, Jan 12, 2009 at 1:55 PM, Michael J Gruber
> <git@drmicha.warpmail.net> wrote:
>> Your test above confirms that the description is correct and nothing is
>> missing. "git push" pushes explicitly listed refspecs (or : as a
>> default). It pushes tags (light and heavy) when asked to.
>>
> 
> So do you mean that the only way I have for pushing annoted tags only is
> to do:
> 
>    $ git push origin refs/tags/annoted

You could use the equivalent, more user friendly "git push origin tag annoted".

Show 8 quoted lines
> That's not what Junio said:
> 
>    Don't use explicit --tags blindly.  It says "no matter what kind of tag,
>    transfer everything under refs/tags".  Otherwise you won't see a
>    difference.
> 
> So I interpret this like don't use --tags otherwise lightweight and annoted tags
> are the same.

I don't see a difference between lightweight tags and tag objects regarding the question of automatic tag following, see my parenthetical request for correction (below) in case I'm wrong.

Show 18 quoted lines
>> "git pull" pulls tags if they can be reached from heads which are
>> pulled. It pulls all tags only when asked to.
>>
> 
> [...]
> 
>> So, "non-local" tags are the ones which can be reached from heads which
>> you pull, and local ones are the others.
> 
> So I can't create a local tag on public heads (the ones I'm pushing
> out), can I ?
> 
>> I don't think lightweight tags are more local than tag objects
>> (please correct me if I'm wrong; I think this needs more doc)
> 
> Perhaps it needs documents which are more user friendly: I don't know where
> the 'lightweight' word is coming from (perhaps from the implementation) but
> I would expect that the _local_ term appears in the git-tag manual.

It's the other way round. "lightweight" is in the first few lines of the man, "local" nowhere. In fact I don't see it anywhere in the docs.

Show 8 quoted lines
>> It's just that the latter reside in the object db
>> store whereas the former are simple refs under refs/tags.
> 
> That's implementation detail...
> 
> I just need to create a local tag where I'm sure it won't be seen by others
> whatever the git operations I'm doing, normally a simple "git tag" switch
> should be enough...
Taking "whatever" literally this is impossible, of course.

Taking it /cum grano salis/ it's still impossible within the same repo: If others have read access they can "ls-remote" and "fetch" happily what they want. The sane and easy way is to use a private repo for your local work and all your "local tags", then to push to a public (i.e. publically readable) repo those branches and tags which you want to be seen.

Are you a Mercurial user by any chance? "hg tag -l" creates local tags which are stored in an unversioned, private file, whereas "hg tag" creates (and commits) a tag entry in a versioned file, which is the source of some confusion and problems with hg tags ("hg co sometag" does not contain sometag etc.). Maybe you want the behaviour of "hg tag -l"?

Cheers, Michael

Previous: Francis MoreauNext: Junio C Hamano
Message 6 of 8 in “Lightweight tag ?”
  1. Francis MoreauJan 11, 2009
  2. Junio C HamanoJan 11, 2009
  3. Francis MoreauJan 12, 2009
  4. Michael J GruberJan 12, 2009
  5. Francis MoreauJan 12, 2009
  6. Michael J GruberJan 12, 2009
  7. Junio C HamanoJan 12, 2009
  8. Francis MoreauJan 12, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.