如何为Git仓库启用identstring?
如何在Git仓库中启用ident $Id$
文件?
总结:在产品中embedded版本信息的推荐方式是使用构build系统 ; 请参阅下面的详细信息和替代方法。
在Git中(我通常也在其他带有primefaces提交的VCS系统中考虑),没有像单个文件的版本那样的东西。
Git支持按需扩展$Id:$
关键字,但是:
- 它仅根据要求完成。 你必须指定(或者使用globbing模式)一个文件(或者一组文件)有一个
ident
属性集(在树中的'.gitattributes'文件中,或者在本地存储库设置的'.git / info / attributes'中) 。 - 它扩展到文件内容的SHA-1 (或更准确地说是
$Id:<sha-1 of blob>$
)。 这个select的原因是Git不会触及分支切换或倒带过程中没有改变的文件; 如果'$ Id:$'扩展到版本信息,则需要更新每个受版本控制的文件,例如,在切换分支时。
Git支持相当宽的$Format:...$
占位符,它扩展为提交信息(例如$Format:%H$
被一个提交散列代替),但是:
- 只有在输出文件中运行git archive时才能进行扩展。
- 它按要求完成,通过
export-subst
属性进行控制。
embedded版本信息的推荐方式是通过构build系统 (在构build阶段); 请参阅Git Makefile以及Git Web界面中由Makefile使用的GIT-VERSION-GEN脚本,以供git.git存储库使用。
然而,您可以使用clean / smudgefilter驱动程序(通过filter
属性)来获取类似CVS的关键字扩展,在签出时扩展关键字,并在将内容input到存储库时进行清理。
您可以通过在.gitattributes
文件中添加一个您希望使用此function的文件的模式,然后添加ident
来完成.gitattributes
操作。 这将取代$ Id $与$ Id:<40位SHA> $结帐的文件。 注意,不会像CVS / SVN那样给你一个文件的修订号。
例:
$ echo '*.txt ident' >> .gitattributes $ echo '$Id$' > test.txt $ git commit -a -m "test" $ rm test.txt $ git checkout -- test.txt $ cat test.txt
链接到gitattributes(5)手册页
Git的ident不会做$ Id $在其他版本系统中做的事情。 作为一个kludge,使用RCS与git:RCS的个人文件修订和git检查点作为一个整体的项目。 正如我所说,这是一个kludge,但它确实有道理(有时为某些事情)。