猿问

如何为Git存储库启用ident字符串?

如何为Git存储库启用ident字符串?

如何启用ident $Id$Git存储库中的文件?



慕慕森
浏览 561回答 3
3回答

翻过高山走不出你

简介:在产品中嵌入版本信息的推荐方法是使用构建系统&nbsp;;&nbsp;请参阅下面的详细信息和替代方法。在Git中(我认为通常也在其他具有原子提交的VCS系统中)没有像单个文件的版本那样的东西。Git确实支持$Id:$关键字的按需扩展,但是:仅在要求时完成。您必须指定(可能使用globbing模式)文件(或一组文件)具有ident&nbsp;属性集(在树中的'.gitattributes'文件中,或在'.git / info / attributes'中用于本地存储库设置)。它扩展到文件内容的SHA-1(或更准确地说$Id:<sha-1 of blob>$)。这种选择的原因是Git不会触摸在分支切换或倒带期间没有改变的文件;&nbsp;如果'$ Id:$'扩展到修订信息,则需要更新每个版本控制的文件,例如在切换分支时。Git支持相当多的$Format:...$占位符,这些占位符扩展为提交信息(例如,$Format:%H$由提交哈希替换)但是:只有在输出文件中运行git archive时才会进行扩展。它是根据请求完成的,通过export-subst属性控制。嵌入版本信息的推荐方法是通过构建系统(在构建阶段)进行;&nbsp;例如,参见Git web文件界面中Makefile使用的Git&nbsp;Makefile和GIT-VERSION-GEN脚本,用于git.git存储库。但是,您可以(ab)使用干净/涂抹过滤器驱动程序(via&nbsp;filter属性)来获得类似CVS的关键字扩展,在结帐时扩展关键字,并在将内容输入存储库时清除它们。

波斯汪

您可以通过ident在.gitattributes文件中添加您希望此功能所遵循的文件的模式来执行此操作。这将在结帐时将$ Id $替换为$ Id:<40位SHA> $。请注意,它不会像CVS / SVN那样为您提供文件的修订号。例:$&nbsp;echo&nbsp;'*.txt&nbsp;ident'&nbsp;>>&nbsp;.gitattributes$&nbsp;echo&nbsp;'$Id$'&nbsp;>&nbsp;test.txt$&nbsp;git&nbsp;commit&nbsp;-a&nbsp;-m&nbsp;"test"$&nbsp;rm&nbsp;test.txt$&nbsp;git&nbsp;checkout&nbsp;--&nbsp;test.txt$&nbsp;cat&nbsp;test.txt链接到gitattributes(5)手册页

暮色呼如

Git的ident不会执行$ Id $在其他版本控制系统中的功能。作为kludge,使用RCS和git:RCS进行单个文件修订,并使用git来检查项目整体。正如我所说,这是一个kludge,但它确实有意义(有时为某些事情)。
随时随地看视频慕课网APP
我要回答