在我当前的项目中,我尝试使用 git 来版本控制文本文件,这些文件由生成代码的软件使用。这本身不是问题,问题是每次我生成代码时,它都会自动更新此文件的属性,例如代码生成的日期以及我的名字。
你可以想象它看起来像这样:
SomeHeader{
-SomeProperty : x
-NameOfUserThatGenerateCode: myName
-DateTimeCodeGenerated: 2013-07-23 06:28
-SomeOtherProperty: y
}
我想要的是一种告诉 git 说“没关系”的方法,如果名称和代码生成时间都发生变化(即:忽略有变化),但请注意“SomeProperty”是否更改为“z” ”。
在第二种情况下,它将提交整个文件(以及更新的自动生成的文件)。
有办法做到这一点吗?我认识到 git 确实在“文件”级别进行更改,但我希望可能有某种我可以绑定的预处理挂钩,只有当 git 尝试比较文件更改时才起作用。
对于那些关心的人,这将使我能够正确地控制狂想曲文件的版本。
我会推荐:
- 保留这些文件的副本(作为私有文件,意味着没有版本控制):您的软件将在这些副本中生成代码
- a
clean
脚本,作为内容过滤器驱动程序 https://stackoverflow.com/a/5132569/6309,在 a 中声明.gitattributes file http://git-scm.com/docs/gitattributes(详细信息见Git Pro 书籍 http://git-scm.com/book/en/Customizing-Git-Git-Attributes#Keyword-Expansion).
这个想法是让该脚本检测,开启git add
:
- “SomeHeader”属性文件的内容
- if the copy该文件的内容已按照您需要保留的方式发生更改(在这种情况下,您将使用该副本的内容覆盖版本化文件)
- if the copy该文件的属性没有显着更改,在这种情况下,您无需修改实际的属性文件。
请注意,“保留副本”部分也可以通过内容过滤器驱动程序自动化,其中包含smudge
脚本自动激活于git checkout
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)