为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Git
慕慕森 2019-08-13 14:32:22
如何为Git存储库启用ident字符串?如何启用ident $Id$Git存储库中的文件?
查看完整描述

3 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

简介:在产品中嵌入版本信息的推荐方法是使用构建系统 ; 请参阅下面的详细信息和替代方法。


在Git中(我认为通常也在其他具有原子提交的VCS系统中)没有像单个文件的版本那样的东西。

Git确实支持$Id:$关键字的按需扩展,但是:

  1. 在要求时完成。您必须指定(可能使用globbing模式)文件(或一组文件)具有ident 属性集(在树中的'.gitattributes'文件中,或在'.git / info / attributes'中用于本地存储库设置)。

  2. 它扩展到文件内容的SHA-1(或更准确地说$Id:<sha-1 of blob>$)。这种选择的原因是Git不会触摸在分支切换或倒带期间没有改变的文件; 如果'$ Id:$'扩展到修订信息,则需要更新每个版本控制的文件,例如在切换分支时。

Git支持相当多的$Format:...$占位符,这些占位符扩展为提交信息(例如,$Format:%H$由提交哈希替换)但是:

  1. 只有在输出文件中运行git archive才会进行扩展。

  2. 它是根据请求完成的,通过export-subst属性控制。

嵌入版本信息的推荐方法是通过构建系统(在构建阶段)进行; 例如,参见Git web文件界面中Makefile使用的Git MakefileGIT-VERSION-GEN脚本,用于git.git存储库。

但是,您可以(ab)使用干净/涂抹过滤器驱动程序(via filter属性)来获得类似CVS的关键字扩展,在结帐时扩展关键字,并在将内容输入存储库时清除它们。


查看完整回答
反对 回复 2019-08-13
?
波斯汪

TA贡献1811条经验 获得超4个赞

您可以通过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)手册页


查看完整回答
反对 回复 2019-08-13
?
暮色呼如

TA贡献1853条经验 获得超9个赞

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


查看完整回答
反对 回复 2019-08-13
  • 3 回答
  • 0 关注
  • 560 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信