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). > 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. [...] -- Jakub Narebski Poland -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html