Thread (6 messages) flat view 6 messages, 3 authors, 2016-06-15

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

From: Jakub Narebski <hidden>
Date: 2016-06-15 22:47:08

On Sat, 1 August 2009, Dirk Süsserott wrote:
Am 31.07.2009 11:52 schrieb Mikko Rapeli:
quoted
On Fri, Jul 31, 2009 at 02:27:50AM -0700, Jakub Narebski wrote:
quoted
quoted
You can embed SHA-1 of a _file contents_ (blob) using '$Id: $' keyword
with `ident` attribute - see gitattributes manpage.
Great, thanks!
quoted
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help