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