我刚注意到git archive
也在.gitattributes
中运行了我的过滤器。这是记录在案的行为? (我在man page中没有看到。)
详情
作为一项练习,我编写了一个过滤器,它通过在*.tex
文件中插入来自git describe --tags HEAD
的信息(此代码根本没有用),以
\setGitVersion{<tag>}
并将其更改为
进行清理\setGitVersion{}
(基本上是编码我自己的关键字替换的练习)。我只是注意到,如果我在存储库上运行git archive
,则归档文件包含*.tex
文件的污迹版本,而不是干净版本。
备注:因为无论我为归档指定了哪个提交,显示的标记始终是来自git describe --tags HEAD
的信息,我可以断定git正在从repo中获取文件,在归档之前通过我的(损坏的)过滤器发送它。
问题
预期的行为是什么?如果是这样,它是否记录在某处,我可以指望它在将来表现得像这样(在这种情况下,我需要对过滤器更加小心)。如果没有,这是一个错误吗?
答案 0 :(得分:0)
是的,这是预期的行为。归档执行存储在gitattributes中的过滤器。
没有特别详细记录,但gitattributes下有一个关于创建档案的部分。
如果为文件设置了属性
export-subst
,那么在将此文件添加到存档时,Git将展开多个占位符。扩展取决于提交ID的可用性,即,如果git-archive[1]已被赋予树而不是提交或标记,则不会进行替换。占位符与选项--pretty=format
:git-log[1]的占位符相同,只是它们需要像这样包装:文件中的$Format:PLACEHOLDERS$
。例如。字符串$Format:%H$
将被提交哈希替换。
我不希望将来这种行为作为相关且通常必要的功能而消失。