将git merge驱动程序添加到存储库?

Kur*_*ton 16 git merge git-merge git-config

我正在创建一个合并驱动程序.我已经定义了一个.gitattributes文件,如下所示:

filename merge=mergeStrategy

我在$ PROJECT/.git/config中创建了合并驱动程序,如下所示:

[merge "mergeStrategy"]
    name = My merge strategy
    driver = scripts/mergeScript.sh
Run Code Online (Sandbox Code Playgroud)

这在本地工作正常,但我想将此合并驱动程序提交到git存储库,以便合并策略对每个人都有效.

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

Von*_*onC 11

你可以简单地添加和提交(和推送)script/mergeScript(.gitattributes当然还有文件)

只要:

  • mergeScript在某种程度上$PATH是在用户执行合并驱动程序.
  • mergeScript 是可执行的, chmod +x
  • mergeScript是没有扩展名,允许您以后更改其内容(从bash shell到Perl脚本到C可执行文件到...),如果需要的话.

(谢谢你,MestreLion,最后两点,正如他在评论中提到的那样)

你本地就是这种情况,因为我怀疑.'在你$PATH身上,但你不能为每个人都假设.

但是,.git/config不会推送/克隆本地配置文件()(正如Alexandr Priymak在注释中指出的那样),因此用户仍然需要复制自定义合并驱动程序的声明.
这是一个基本的安全措施,以便您不要推送潜在的"有害"脚本,然后在下次合并时自动执行该脚本.

  • 这实际上并不能解决问题。人们如何在实际项目中共享这些合并驱动程序? (5认同)
  • 这不会在 git 存储库中保存配置设置。 (2认同)
  • 不要忘记使用`chmod + x`将`mergeScript.sh`设置为可执行文件,否则它可能(不会?)工作.我也强烈**建议你**不要**使用可执行文件的扩展名.将其命名为"mergeScript",因为将来它可能会从shell脚本更改为perl,python,甚至是已编译的C可执行文件. (2认同)
  • 在一家拥有数千名工程师的公司,这是一个很大的问题:( (2认同)