我有一个问题,我们向客户提供源代码,该客户必须在源文件中安装客户特定的法律评论标头信息,其中标头的几个不同版本取决于它们是哪些源文件(即:开发人员指定的类别)
所以我想要的是能够指定一个字符串$Id$
或$SpecialName$
定义要插入的标题,该标题将由代码分发构建(生成 zip 或 jar 文件)扩展为
$SpecialName: lots of customer specific stuff like a big header of copyright, legal, and
other info
blah blah blah $
然后,如果他们修改或修补文件中的某些内容并将其发回,我想将更改检查到 git 并让它忽略构建扩展"$SpecialName:"
和下一个“$”之间的所有内容,$Id$
在签入时可以采用这种方式。
"$Format:"
我在这个问题中看到了对 a 的引用,但没有找到关于它是什么以及它是否是我正在寻找的东西的引用。
理想情况下,我可以将参考存储库服务器上的字符串指定为“只读”,并在所有用户拉取更改时将其传播给所有用户,但这与实现首先出现的功能是一个单独的问题。
看起来一种方法是使用“过滤器”——来自 git book:
然而,这个结果的用处有限。如果您在 CVS 或 Subversion 中使用过关键字替换,则可以包含一个日期戳 — SHA 并不是很有帮助,因为它是相当随机的,您无法判断一个 SHA 是否比另一个旧或新。
事实证明,您可以编写自己的过滤器,以便在提交/签出时在文件中进行替换。这些是“清洁”和“涂抹”过滤器。在 .gitattributes 文件中,您可以为特定路径设置过滤器,然后设置将在文件提交之前(“干净”,参见图 7.2)和签出之前(“smudge”)处理文件的脚本,见图 7.3)。这些过滤器可以设置为做各种有趣的事情。
这里的相关事情是在存储库服务器上而不是在客户端上执行此操作是合适的 - 是否可以在存储库服务器上处理“文件”数据预提交和预签出?