From: Andreas Ericsson <ae@op5.se>
To: kernel-hacker@bennee.com
Cc: git@vger.kernel.org
Subject: Re: [QUESTION] What is a tag for?
Date: Wed, 18 Jan 2006 11:35:30 +0100 [thread overview]
Message-ID: <43CE19F2.6000709@op5.se> (raw)
In-Reply-To: <1137538344.9104.34.camel@malory>
Alex Bennee wrote:
> Hi,
>
> So I want to track Linus's 2.6 git tree as well as do a little small
> time hacking. I'm not brave enough to sit on the very bleeding edge and
> build what ever happens to be at the "HEAD" of the tree. However when a
> kernel releases I'd like to build *that* kernel.
>
> I keep thinking of tags like labels in the old convetional SCM case. Is
> this correct? I can see once I've done my update (fetch/cogito what
> ever) that these tags apear in my local tree:
>
I'm not sure if you got the answer you wanted from Junio or Petr, so I
thought I'd add my own explanation to this as well. If nothing else it
might be useful for someone greping through the archives.
There are three types of tags: simple, annotated and signed+annotated.
All tags work just as a branch head, except that you can't do 'git
checkout' on it (i.e. it's a pointer to a particular commit, but lives
in $GIT_DIR/refs/tags instead of $GIT_DIR/refs/heads).
Simple, or unannotated, tags are useful for creating anchor points so
that you can jump to a particular state of development that's useful for
you as a developer to know about (I for one think sha-hashes are a tad
hard to remember). You could just as easily create a branch for doing
this, but that's not always practical. F.e. when you're resetting or
rebasing the current branch or doing some other of gits more voodoo-ish
things. If you do
$ git cat-file -t <tagname>
on a simple tag it'll tell you it's a "commit" object, because that's
the type of the object it points to in the object database.
If you do the same on an annotated tag, whether it's signed or not, "git
cat-file -t <tagname>" will tell you it's a 'tag' object.
A tag object has a reference to a commit-object and some additional data
inside it. Try
$ git cat-file tag v1.0.0
in the current git-repo and you'll see the following output
----8<---8<---8<----
object c2f3bf071ee90b01f2d629921bb04c4f798f02fa
type commit
tag v1.0.0
tagger Junio C Hamano <junkio@cox.net> 1135152060 -0800
GIT 1.0.0
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)
iD8DBQBDqOh7wMbZpPMRm5oRAg+OAJ90pNi/fq5rguVou1PSxx95PYCVeACfbnZM
nN/PlwOWKA3rW8EPmWO4BzE=
=TCRg
-----END PGP SIGNATURE-----
----8<----8<----8<----
'object' at the first line is the commit the tag points to. The rest
should be fairly self-evident.
After the empty line there follows a message that the tagger can enter
when typing the tag. This can be fairly useful if you wish to make it
so. I use it to write a gisted changelog, listing new features and fixed
bugs in a few words. All annotated tags that gets pushed to our shared
repos are automatically, through the 'update' hook, sent by email to our
sales and marketing people. I like that, since I only have to use one
tool for hacking, reporting, logging history and everything else that's
real developer work. It also means I never forget sending feature
updates to the suits, so they pester me less and life is a bit sweeter.
A signed annotated tag requires that you have a valid gpg key. The tag
shown above is signed using gpg (the only way of signing supported, I
think).
So, in essence;
* A simple, or unannotated tag just points to a commit object and has no
message attached to it.
* An annotated tag points to a tag object and has a message of arbitrary
length attached to it. The tag object points to a commit object.
* Only annotated tags can be signed.
I'd recommend not allowing un-annotated tags in your shared repo. I sent
a patch for the default update-hook sometime ago that disallows this.
Junio seemed happy about it so I don't understand why it hasn't been
pushed to the master branch yet.
--
Andreas Ericsson andreas.ericsson@op5.se
OP5 AB www.op5.se
Tel: +46 8-230225 Fax: +46 8-230231
next prev parent reply other threads:[~2006-01-18 10:35 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-01-17 22:52 [QUESTION] What is a tag for? Alex Bennee
2006-01-17 23:05 ` Petr Baudis
2006-01-18 1:41 ` Junio C Hamano
2006-01-18 4:00 ` Linus Torvalds
2006-01-18 4:40 ` Junio C Hamano
2006-01-18 9:58 ` Petr Baudis
2006-01-18 10:07 ` Petr Baudis
2006-01-18 10:35 ` Andreas Ericsson [this message]
2006-01-18 18:19 ` Junio C Hamano
2006-01-18 18:50 ` Andreas Ericsson
2006-01-25 2:08 ` Junio C Hamano
2006-01-25 9:02 ` Andreas Ericsson
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=43CE19F2.6000709@op5.se \
--to=ae@op5.se \
--cc=git@vger.kernel.org \
--cc=kernel-hacker@bennee.com \
/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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.