Subject: Re: How to embed a hash, tag or branch name?

From: Jakub Narebski <[email-masked]>
Date: Fri, 31 Jul 2009 02:27:50 -0700 (PDT)

Mikko Rapeli <[email-masked]> writes:

> How do I embed a hash, tag or branch name into source code managed by
> git?
> 
> I've tried searching the net, git manuals etc but haven't found a
> replacement for the old '$Id: $' strings from svn. What I need is a way to
> map compiled binaries and flash images to git tree heads, tags and
> branches.

You can embed SHA-1 of a _file contents_ (blob) using '$Id: $' keyword
with `ident` attribute - see gitattributes manpage.

The correct solution of embedding version number is to do it at 
_build time_, using e.g. script similar to GIT-VERSION-GEN used by
Git itself and by Linux kernel.  It helps if you tag your releases.

If you really, really, really need it, you can embed tag or branch
name into source code using `filter` attribute and custom clean/smudge
filters to do keyword un-expansion and keyword expansion.  But please
think twice about what you want to achive with keyword expansion, and
whether keyword expansion is a best solution...

-- 
Jakub Narebski
Poland
ShadeHawk on #git