threads / discuss / 9723

CVS-$Id:$ replacement in git?

Subject: CVS-$Id:$ replacement in git?

## tl;dr

6 messages between Aug 31, 2007 and Aug 31, 2007.

replies: 5people: 4as markdown or json

Andreas Hildebrandt· Aug 31, 2007, 15:03 UTC · lore
Dear all,

we would very much like to migrate our currently CVS-managed project, the Biochemical ALgorithms Library BALL (http://www.ball-project.org) to git. Apart from the problem that our repository turned out to be horribly broken after 12 years of development -- which made conversion to git a somewhat unpleasant experience -- we would now be nearly ready to migrate. But unfortunately, we internally rely heavily on the $Id:$ - expansion of CVS, that is the ability to have a line like

$Id:$
in the source file expanded to something like
$Id: HINFile.C,v 1.64 2005/02/09 13:02:41 oliver Exp $

The information we want to store in the file would be something like the SHA1 of the last commit that touched that file, the date when it happened and the person who commited it.

I have been thinking about trying to achieve something like this in git. From my very limited understanding of the internals of git, I thought it should be possible to have a sed-script at the appropriate hooks that inserts the updated information into a file whenever it is affected by a commit.

Do you think that this could work? And if so, would it suffice to add a pre-commit hook?

I can currently see two main problems of this idea: the first is that I would expect this to do strange things when people work with a cloned or copied repository but forget to install the scripts at the correct location. This, I would be willing to ignore. The other problem I expect are lots of meaningless conflicts upon merging, since for a file that has been touched in two branches, the $Id:$ - lines will necessarily be different. Is there a way around this problem? And, more importantly, did I overlook any potentially more serious problems with such an approach?

Thanks a lot,
  Andreas Hildebrandt
Johannes Schindelin· Aug 31, 2007, 16:33 UTC · re: Andreas Hildebrandt · lore

Re: CVS-$Id:$ replacement in git?

Hi,
On Fri, 31 Aug 2007, Andreas Hildebrandt wrote:
Show 12 quoted lines
> But unfortunately, we internally rely heavily on the $Id:$ - expansion 
> of CVS, that is the ability to have a line like
> 
> $Id:$
> 
> in the source file expanded to something like
> 
> $Id: HINFile.C,v 1.64 2005/02/09 13:02:41 oliver Exp $
> 
> The information we want to store in the file would be something like the 
> SHA1 of the last commit that touched that file, the date when it 
> happened and the person who commited it.
Please see Documentation/gitattributes.txt, look for 'ident'.

Hth, Dscho

Junio C Hamano· Aug 31, 2007, 16:37 UTC · re: Johannes Schindelin · lore

Re: CVS-$Id:$ replacement in git?

Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
Show 16 quoted lines
> On Fri, 31 Aug 2007, Andreas Hildebrandt wrote:
>
>> But unfortunately, we internally rely heavily on the $Id:$ - expansion 
>> of CVS, that is the ability to have a line like
>> 
>> $Id:$
>> 
>> in the source file expanded to something like
>> 
>> $Id: HINFile.C,v 1.64 2005/02/09 13:02:41 oliver Exp $
>> 
>> The information we want to store in the file would be something like the 
>> SHA1 of the last commit that touched that file, the date when it 
>> happened and the person who commited it.
>
> Please see Documentation/gitattributes.txt, look for 'ident'.

Please do _not_ see that. ident is about blob object name and does not have anything to do with the commit, pathname, committer, nor date, and this is deliberately so.

Rogan Dawes· Aug 31, 2007, 16:58 UTC · re: Junio C Hamano · lore

Re: CVS-$Id:$ replacement in git?

Junio C Hamano wrote:
Show 22 quoted lines
> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> 
>> On Fri, 31 Aug 2007, Andreas Hildebrandt wrote:
>>
>>> But unfortunately, we internally rely heavily on the $Id:$ - expansion 
>>> of CVS, that is the ability to have a line like
>>>
>>> $Id:$
>>>
>>> in the source file expanded to something like
>>>
>>> $Id: HINFile.C,v 1.64 2005/02/09 13:02:41 oliver Exp $
>>>
>>> The information we want to store in the file would be something like the 
>>> SHA1 of the last commit that touched that file, the date when it 
>>> happened and the person who commited it.
>> Please see Documentation/gitattributes.txt, look for 'ident'.
> 
> Please do _not_ see that.  ident is about blob object name and
> does not have anything to do with the commit, pathname,
> committer, nor date, and this is deliberately so.
> 
For more details see this thread:
<http://thread.gmane.org/gmane.comp.version-control.git/44750>
Rogan
Johannes Schindelin· Aug 31, 2007, 17:12 UTC · re: Junio C Hamano · lore

Re: CVS-$Id:$ replacement in git?

Hi,
On Fri, 31 Aug 2007, Junio C Hamano wrote:
Show 22 quoted lines
> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> 
> > On Fri, 31 Aug 2007, Andreas Hildebrandt wrote:
> >
> >> But unfortunately, we internally rely heavily on the $Id:$ - expansion 
> >> of CVS, that is the ability to have a line like
> >> 
> >> $Id:$
> >> 
> >> in the source file expanded to something like
> >> 
> >> $Id: HINFile.C,v 1.64 2005/02/09 13:02:41 oliver Exp $
> >> 
> >> The information we want to store in the file would be something like the 
> >> SHA1 of the last commit that touched that file, the date when it 
> >> happened and the person who commited it.
> >
> > Please see Documentation/gitattributes.txt, look for 'ident'.
> 
> Please do _not_ see that.  ident is about blob object name and
> does not have anything to do with the commit, pathname,
> committer, nor date, and this is deliberately so.

But this is what I was suggesting... To change the ways for the better. I admit that I was really sneaky about it.

Ciao, Dscho

Junio C Hamano· Aug 31, 2007, 18:45 UTC · re: Johannes Schindelin · lore

Re: CVS-$Id:$ replacement in git?

Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
Show 7 quoted lines
> On Fri, 31 Aug 2007, Junio C Hamano wrote:
> ...
>> Please do _not_ see that.  ident is about blob object name and
>> does not have anything to do with the commit, pathname,
>> committer, nor date, and this is deliberately so.
>
> But this is what I was suggesting...  To change the ways for the better.  

The thing is that it is not "for the better". See earlier discussion and please do not beat the dead horse.

← back to recent threads