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