On Oct 21, 2011, at 9:43 AM, Robert Newson wrote:

> I'll also note that 'git pull --tags' will update any tags that have
> changed, despite what the man page for git-tags actually says.


dustinnmb:/tmp/test 695% mkdir upstream
dustinnmb:/tmp/test 696% cd upstream/
dustinnmb:/tmp/test/upstream 697% git init
Initialized empty Git repository in /private/tmp/test/upstream/.git/
dustinnmb:/tmp/test/upstream 698% git commit --allow-empty -m first
[master (root-commit) ca3e451] first
dustinnmb:/tmp/test/upstream 699% git tag -am 'beginning of time' testing
dustinnmb:/tmp/test/upstream 700% cd ..
dustinnmb:/tmp/test 701% git clone upstream downstream
Cloning into downstream...
done.
dustinnmb:/tmp/test 702% cd upstream/
dustinnmb:/tmp/test/upstream 703% git tag -d testing
Deleted tag 'testing' (was 21f1c92)
dustinnmb:/tmp/test/upstream 704% cd ../downstream/
dustinnmb:/tmp/test/downstream 705% git pull --tags
Fetching tags only, you probably meant:
  git fetch --tags
dustinnmb:/tmp/test/downstream 706% git fetch --tags
dustinnmb:/tmp/test/downstream 707% git tag
testing


        Deleting tags is hard.

        Updating them is slightly less hard, but requires users to be 
performing non-default behavior, and I think that leads to far, far more 
confusion as there's no way to know whether the users are doing the non-default 
things that cause your pointers to propagate, e.g.:  "I'm running 1.1.1". 
"Which 1.1.1?"

        IMO, simplicity and conventions win here.  Tags should be treated as 
immutable pointers to commits that had some meaning and should be named and 
labeled meaningfully as well.  Branches are pointers to works in progress.  
When work is "finished", they can be tagged and deleted.  If you do this, all 
of the defaults work and you don't have to invent and document as much.

        I'm not trying to suggest you guys are doing a bad job or don't know 
what you're doing, or should be using bcrypt or anything.  I'm just pointing 
out that some of the suggestions in this thread will lead to technical 
difficulties.  "temporary tag" isn't meaningful outside of a local repository.  
And it's really easy to accidentally push one.  And it's nearly impossible to 
tell where it goes after you push it (e.g. every one of my github repos 
automatically triggers replication on every push).


-- 
dustin sallings



Reply via email to