Re: How to embed a hash, tag or branch name?
- From
- Dirk Süsserott <newsletter@dirk.my1.cc>
- Date
- Aug 1, 2009, 16:04 UTC
- Message-ID
- <4A7467AA.7060400@dirk.my1.cc>
- In-Reply-To
- <200908011513.13016.jnareb@gmail.com>
Am 01.08.2009 15:13 schrieb Jakub Narebski:
Show 24 quoted lines
> On Sat, 1 August 2009, Dirk Süsserott wrote: >> Am 31.07.2009 11:52 schrieb Mikko Rapeli: >>> On Fri, Jul 31, 2009 at 02:27:50AM -0700, Jakub Narebski wrote: > >>>> You can embed SHA-1 of a _file contents_ (blob) using '$Id: $' keyword >>>> with `ident` attribute - see gitattributes manpage. >>> Great, thanks! >>> >>>> 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. >> Hi Mikko, >> >> I don't know whether you want to use the "ident" command on your final >> binary. With Git, that's pointless, as all source files will have the >> same $Id$. So it's perfectly sufficient to have only ONE file enriched >> with Git's SHA1. > > You are wrong. In Git $Id$ / $Id: $ expands to SHA-1 id of _blob_ > (i.e. of file *contents*), not SHA-1 id of a commit. This way when > switching branches or rewinding branch using git-reset we don't have > to pay huge performance penalty because of `ident`, as we would have > because every file would have to be changed if $Id$ was about commit > id (or if there was $Revision$ or $Author$ implemented).
Ok, sorry about that. Actually I haven't read the concerning docs *that* well when I figured out that keyword expansion with Git is not exactly a good idea.
Show 8 quoted lines
> >> Suggestion: During build time, compile (and link in) a file (e.g. >> version.c) with "-DVERSION=\"$(git describe)\"". My version.c looks like >> this: > > GIT-VERSION-GEN and various tricks in Makefile do just that, not only > for compiled parts, but also for scripts. >
Right, but my explanation shows the overall intention of that. So, Mikko, have a look at GIT-VERSION-GEN and my suggestion and use some kind of summary of them.