强制使用自定义的git合并驱动程序以合并pom.xml(maven)文件

6

我已经配置了一个自定义的git合并驱动程序,用于pom.xml(Maven)文件。

配置如下:

.gitattributes文件:

pom.xml merge=pommerge

还有.gitconfig文件:

[merge "pommerge"]
    name = A custom merge driver for Maven's pom.xml
    driver = mergepom.py %O %A %B

这种方法很适合解决这种类型的文件中的冲突。不幸的是,这不能解决所有关于pom.xml文件的问题。只有当主分支中的pom.xml和我们想要合并的分支(“otherbranch”)中的pom.xml都发生了变化时,才会在合并过程中调用此驱动程序。
我们希望在所有情况下都使用我们的合并驱动程序进行pom文件的合并,即使pom文件仅在一个分支中更改并且可以无冲突地合并。
是否有一种方法可以在这种情况下强制使用我们的自定义"pommerge"驱动程序呢?
更新: 我已经尝试了几乎所有可能的方法,但都没有成功。我甚至检查了git源代码并为代码添加了更多日志信息,并安装/编译它以查看是否能够找到我可以使用的特定扩展点。但是,代码很难理解哪些路径会被执行,因此这个努力产生了更多的挫败感而不是解决方案。
我目前唯一可行的方式是在合并之前在两端(分支)修改文件。但这对用户来说不是非常友好。
我仍然希望有人能提供一个聪明的解决方案或提示,帮助我在这个挑战中走得更远一点。
感谢大家的时间!

你可以在git hook中做一些事情,也许是在文件被修改时运行mergepom.py的pre-commit hook? - William Hilton
@WilliamHilton 在合并时是否调用预提交挂钩?因为文件可能已更改并提交:仅在合并文件时应部分还原文件(特定分支设置)。 - NickGreen
好的,我被难住了。我尝试使用.gitattributes来将pom.xml标记为二进制文件,但仍然无法强制git在合并分支时创建“冲突”,即使该文件只在一个分支上更改。 - William Hilton
@WilliamHilton 谢谢尝试!不幸的是,那也是我遇到的问题。 - NickGreen
1个回答

0
你需要的是自定义合并策略,而你已经定义了一个合并驱动程序。
驱动程序仅在冲突时调用,而策略在任何两个提交合并时都会使用。
请参见此答案以设置您的解决方案:

https://dev59.com/XGAg5IYBdhLWcg3w0Nze#23140455


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