threads / discuss / 45849

Could GIT manage revision headers embedded in code ?

Subject: Could GIT manage revision headers embedded in code ?

## tl;dr

4 messages between May 2, 2017 and May 2, 2017.

replies: 3people: 3as markdown or json

Delanoe Eric· May 2, 2017, 11:48 UTC · lore
Hello,

We need a great deal of traceability for our source, made of many scripts in interpreted languages, spread in many "independent" modules, as far as can be ;-). In particular, somebody troubleshooting a script in production should be able to know exactly the revision or commit ID (or tag label) of a given file, and its location in the GIT source directory tree.

Our old CVS... let's say it was its only advantage... was doing this with keywords embedded in code comments: $Header$, $Id$, $Rev$, $File$ etc... When a file was committed, its $Header$ keyword was expanded into a rich piece of "version" information like '' $Header: /cvsstore/SourcesOracle/Install/COMMUN/CST.sql,v 1.69.2.10 2017/04/14 09:38:48 edelanoe $".

Could this kind of "keyword expansion" feature be added into GIT ? Focusing on the goal: enable the identification of a file and its revision(*) inside the committed code itself. (*) the "revision" information or a commit ID. The tag(s) attached at commit time would be less reliable, as a tag can be moved between revisions.

Thank you in advance for any answer, Best regards, E.Delanoë

Grenobloise d'Electronique et d'Automatismes Inovallée - 12, Chemin de Malacher 38243 MEYLAN CEDEX FRANCE

Christian Couder· May 2, 2017, 12:11 UTC · re: Delanoe Eric · lore

Re: Could GIT manage revision headers embedded in code ?

Hi,
On Tue, May 2, 2017 at 1:48 PM, Delanoe Eric <e.delanoe@gea.fr> wrote:
Show 8 quoted lines
> Hello,
>
> We need a great deal of traceability for our source, made of many scripts in interpreted languages, spread in many "independent" modules, as far as can be ;-).
> In particular, somebody troubleshooting a script in production should be able to know exactly the revision or commit ID (or tag label) of a given file, and its location in the GIT source directory tree.
>
> Our old CVS... let's say it was its only advantage... was doing this with keywords embedded in code comments: $Header$, $Id$, $Rev$, $File$ etc... When a file was committed, its $Header$ keyword was expanded into a rich piece of "version" information like '' $Header: /cvsstore/SourcesOracle/Install/COMMUN/CST.sql,v 1.69.2.10 2017/04/14 09:38:48 edelanoe $".
>
> Could this kind of "keyword expansion" feature be added into GIT ?

You can already do it with "smudge" and "clean" filters. Look for "Keyword Expansion" in:

https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes
Delanoe Eric· May 2, 2017, 13:33 UTC · re: Christian Couder · lore

RE: Could GIT manage revision headers embedded in code ?

Thank you for your quick answer. And great answer ! I'm looking forward to try this.

Thanks again and best regards, E.Delanoë

-----Message d'origine----- De : Christian Couder [mailto:christian.couder@gmail.com] Envoyé : mardi 2 mai 2017 14:11 À : Delanoe Eric Cc : git@vger.kernel.org Objet : Re: Could GIT manage revision headers embedded in code ?

Hi,
On Tue, May 2, 2017 at 1:48 PM, Delanoe Eric <e.delanoe@gea.fr> wrote:
Show 8 quoted lines
> Hello,
>
> We need a great deal of traceability for our source, made of many scripts in interpreted languages, spread in many "independent" modules, as far as can be ;-).
> In particular, somebody troubleshooting a script in production should be able to know exactly the revision or commit ID (or tag label) of a given file, and its location in the GIT source directory tree.
>
> Our old CVS... let's say it was its only advantage... was doing this with keywords embedded in code comments: $Header$, $Id$, $Rev$, $File$ etc... When a file was committed, its $Header$ keyword was expanded into a rich piece of "version" information like '' $Header: /cvsstore/SourcesOracle/Install/COMMUN/CST.sql,v 1.69.2.10 2017/04/14 09:38:48 edelanoe $".
>
> Could this kind of "keyword expansion" feature be added into GIT ?
You can already do it with "smudge" and "clean" filters. Look for "Keyword Expansion" in:
https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes
Johannes Schindelin· May 2, 2017, 15:54 UTC · re: Delanoe Eric · lore

Re: Could GIT manage revision headers embedded in code ?

Hi Eric,
On Tue, 2 May 2017, Delanoe Eric wrote:
> Could this kind of "keyword expansion" feature be added into GIT ?

Back in the days, it was decided that this should be part of the "export as zip" functionality, see the `export-subst` feature in git-archive's and gitattributes' documentation.

In reality, what most projects do is to generate a header or some such as part of their build process. Git itself may serve as a case in point:

	https://github.com/git/git/blob/master/GIT-VERSION-GEN
used in
	https://github.com/git/git/blob/v2.12.2/Makefile#L390-L392

Ciao, Johannes

← back to recent threads