添加git合并驱动程序到存储库?

问题描述:

我正在创建一个合并驱动程序。我已经定义了一个.gitattributes文件,如下所示:添加git合并驱动程序到存储库?

filename merge=mergeStrategy

我创建了合并司机在$ PROJECT/git的/配置如下:

[merge "mergeStrategy"] 
    name = My merge strategy 
    driver = scripts/mergeScript.sh 

也能正常工作本地,但我想要将此合并驱动程序提交到git存储库,以便合并策略适用于所有人。

有没有一种方法可以将此(或其他Git配置选项)添加到存储库本身?

你可以简单地添加并提交(推)script/mergeScript(连同.gitattributes文件,当然)

这将工作只要:

  • mergeScript在某种程度上是的的$PATH用户执行合并驱动程序。
  • mergeScript是可执行的,chmod +x
  • mergeScript是不带扩展,允许你(Perl脚本从bash shell的一个C可执行...)改变其内容如果需要的话。

(谢谢你,MestreLion,在过去的两个点,因为他在评论中提及他们)

这在当地是这种情况你,因为我怀疑“.”是你的$PATH,但你不能为每个人假设。

然而,本地配置文件(.git/config)将不会推/复制(如Alexandr Priymak指出在评论),所以用户仍然需要复制自定义的申报合并的驱动程序。
这是一个基本的安全措施,以便您不推动可能在下一次合并时自动执行的潜在“有害”脚本。

+1

这不会保存git存储库中的配置设置。 – 2012-01-12 17:38:11

+0

@AlexandrPriymak:好点。我已经添加了重要的警告答案。 – VonC 2012-01-12 18:02:36

+1

不要忘记使用'chmod + x'将'mergeScript.sh'设置为可执行文件,否则它可能会(不会)工作。我也**强烈**建议你**不要**使用可执行文件的扩展名。将它命名为'mergeScript',因为将来它可能会从shell脚本更改为perl,python,甚至编译的C可执行文件。 – MestreLion 2012-03-09 23:53:51