我有一种具有特定布局的文本文件的自定义合并驱动程序。 (它解决了与git-merge-changelog
基本相同的问题:当在同一个地方添加内容时,我有规则来决定放入它们的顺序。)
此合并驱动程序基于启发式方法,有时在更改过于复杂时失败。当它失败时,我想回到git的文本文件默认处理。
我已设置.gitattributes
:
myfile merge=my-driver
和.gitconfig
:
[merge "my-driver"]
name = My merge driver for myfile
driver = my-merge-driver %O %A %B
当我的自定义合并驱动程序能够解决冲突时,这很好。当驱动程序无法解决冲突时,它会返回非零代码并且不会修改%A
。这会导致git报告冲突(好),但保留文件的当前版本。相反,我希望git运行内置的文本合并驱动程序。
如何使用自定义合并驱动程序,但如果失败,请使用内置驱动程序作为后备?
答案 0 :(得分:1)
部分解决方案(至少对于“正常”,双向合并):
driver = my-merge-driver %O %A %B || git-merge-file -q --marker-size=%L %A %O %B
这适用于执行文本合并并生成冲突标记。不幸的是,冲突标记具有临时文件名(<<<<<<< .merge_file_xxxxxx
)而不是分支名称。我更喜欢拥有分支机构名称。
这可以通过与How to retrieve branch names in a custom Git merge driver?相同的方式解决(目前尚未回复)。