1

我有一个问题,我们向客户提供源代码,该客户必须在源文件中安装客户特定的法律评论标头信息,其中标头的几个不同版本取决于它们是哪些源文件(即:开发人员指定的类别)

所以我想要的是能够指定一个字符串$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)。这些过滤器可以设置为做各种有趣的事情。

这里的相关事情是在存储库服务器上而不是在客户端上执行此操作是合适的 - 是否可以在存储库服务器上处理“文件”数据预提交和预签出?

4

1 回答 1

0

执行此操作的传统方式是由版本控制系统执行此扩展。但这实际上对您来说不是必需的,因为您只需要它出现在客户端计算机上。

您只需要在源代码分发构建过程中使用某种模板工具。在大多数情况下,如果发送了补丁,则不需要忽略标头,因为无论如何补丁都应该应用,只是带有一些模糊,这不会阻止它自动应用。

于 2013-11-01T21:36:41.950 回答