如何启用ident $Id$
在一个Git仓库上的文件?
Answer 1:
摘要:在产品中嵌入的版本信息的推荐方法是使用构建系统是什么; 参阅下面的详细信息和替代方法。
在Git的(我认为通常也符合原子提交其他VCS系统),有喜欢的单个文件的版本没有这样的事情。
Git的不支持的按需扩展的$Id:$
关键字,但是:
- 它是只要求完成。 您必须指定(可能使用文件名匹配模式),文件(或文件集)具有
ident
属性设置(在“.gitattributes'文件树,或者” git的/信息/属性对本地存储库设置) 。 - 它扩展为SHA-1的文件的内容 (或者更精确地说,以
$Id:<sha-1 of blob>$
)。 这样做的原因选择是Git不会触及该分支开关或后退过程中未更改的文件; 如果“$编号:$”扩展到修订信息这需要切换分支时更新每个版本控制的文件,例如。
Git的支持相当广泛的一套$Format:...$
它扩展到提交信息的占位符(如$Format:%H$
通过提交哈希替换),但是:
- 运行时,扩展只是做git的存档 ,在其输出文件。
- 它要求进行,通过控制
export-subst
属性。
嵌入版本信息的推荐方法是通过构建系统 (在构建阶段)做到这一点; 例如见Git的Makefile文件和GIT-VERSION-GEN脚本的Git的Web界面的git.git库使用的Makefile。
但是,您可以(AB)用干净/涂抹过滤驱动程序(通过filter
的属性),以获得类似CVS的关键字扩展,结账扩大关键字和清洁起来就进入内容库。
Answer 2:
您可以通过添加你想要这个功能,然后对哪些文件的模式做到这一点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)手册
Answer 3:
Git的IDENT没有做什么的$ id $确实在其他版本的系统。 作为一个杂牌,使用RCS用git一起:RCS为单个文件的修订和git检查点的项目作为一个整体。 正如我所说,这是个杂牌,但它确实有点道理(有时一些事情)。
文章来源: How do I enable the ident string for a Git repository?