Git属性(smudge,clean)在多个仓库中分布

3

有没有办法将污点清理钩子分发到远程存储库? 它存储在.git\config中,因此不会被Git跟踪。

我们的客户使用略有不同的环境和SVN(!),因此我们必须创建分支以便我们可以合并更改。 如果我能够共享这些污点和清理钩子就好了。

2个回答

1

是的,答案是.gitattributes。如何设置过滤器的更客观的描述可以在man-files中找到。

将您的属性放入.gitattributes文件中,并将其保存到项目文件夹中。然后您就能像跟踪和提交其他文件一样来跟踪和提交它。

不幸的是,改变过滤器本身需要您至少访问一次客户端的.git/config。在我看来,您有两个选择:交付第二个项目特定的配置或更改过滤器调用以调用交付的脚本。

交付git-config

这是版本控制git-config的简单方法。我们将在repo-config中添加一个附加的包含路径和一个存储在仓库中的附加配置文件。

这是我如何将另一个包含添加到.git/config中:

[include]
  ../.gitconfig

然后您需要创建.gitconfig文件 - 我已经使用user.name设置进行了测试:
[user]
  name = Mickey Mouse

然后,您将把.gitconfig添加到您的代码库中。使用以下命令尝试更改:

$ git config user.name
Mickey Mouse

但我必须承认,这个星座是一个安全风险,因为您可以使用提交覆盖所有配置设置。
另一个可能的 - 更安全但更复杂的 - 解决方案是在配置中创建过滤器,并让它们指向存储库中的脚本。

1
是的,我知道.gitattributes文件。问题是是否有一种方法可以将钩子(smudge和clean函数的主体)存储在存储库中,而不仅仅是在.git\config中。 - Saczew
抱歉 - 我误解了你的意思。如果你可以访问客户端的.git/config文件,我建议尝试包含一个被跟踪的配置文件。我现在无法测试,但明天我会检查一下。 - Florian Neumann

0
一种可能的选择是将它们直接添加到存储库中,并附上关于如何复制到.git目录的说明。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接