Removing tags in git
Jannis Pohlmann
jannis at xfce.org
Mon Nov 2 13:28:02 CET 2009
On Mon, 2 Nov 2009 11:42:04 +0100
Nick Schermer <nickschermer at gmail.com> wrote:
> During the last exo release I added an invalid tag (well not entirely
> invalid, but i did a pull --rebase before pushing, so the hash the tag
> points to is not visible, when you click the tag in git the tarball
> still contains the correct data). So I tried removing the tag with git
> push origin :refs/tags/exo-0.5.1, but it seems this is not allowed by
> our rules.
> Talked about that with Jannis and he confirmed this was blocked on
> purpose, but he couldn't remember why exactly.
>
> So, why is removing tags not allowed? It seems to be normal to me to
> correct mistakes like this or are there technical reasons?
The reason is explained in the man page of git-tag:
On Re-tagging
What should you do when you tag a wrong commit and you would
want to re-tag?
If you never pushed anything out, just re-tag it. Use "-f" to
replace the old one. And you're done.
But if you have pushed things out (or others could just read your
repository directly), then others will have already seen the old
tag. In that case you can do one of two things:
1. The sane thing. Just admit you screwed up, and use a
different name. Others have already seen one tag-name, and if
you keep the same name, you may be in the situation that two
people both have "version X", but they actually have different
"X"'s. So just call it "X.1" and be done with it.
2. The insane thing. You really want to call the new version
"X" too, even though others have already seen the old one. So
just use git-tag -f again, as if you hadn't already published
the old one. However, Git does not (and it should not) change
tags behind users back. So if somebody already got the old tag,
doing a git-pull on your tree shouldn't just make them
overwrite the old one.
If somebody got a release tag from you, you cannot just change
the tag for them by updating your own one. This is a big
security issue, in that people MUST be able to trust their
tag-names. If you really want to do the insane thing, you need
to just fess up to it, and tell people that you messed up. You
can do that by making a very public announcement saying:
Ok, I messed up, and I pushed out an earlier version tagged
as X. I then fixed something, and retagged the *fixed* tree
as X again.
If you got the wrong tag, and want the new one, please delete
the old one and fetch the new one by doing:
git tag -d X
git fetch origin tag X
to get my updated tag.
You can test which tag you have by doing
git rev-parse X
which should return 0123456789abcdef.. if you have the new
version.
Sorry for inconvenience.
Does this seem a bit complicated? It should be. There is no way
that it would be correct to just "fix" it behind peoples backs.
People need to know that their tags might have been changed.
So, the best way probably is to retag 0.5.1 with 0.5.1.1 or 0.5.1-proper
or something. Opinions?
- Jannis
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://mail.xfce.org/pipermail/xfce4-dev/attachments/20091102/f4245039/attachment.pgp>
More information about the Xfce4-dev
mailing list