强制 git 自定义合并驱动程序以合并 pom.xml (maven) 文件
Posted
技术标签:
【中文标题】强制 git 自定义合并驱动程序以合并 pom.xml (maven) 文件【英文标题】:Force git custom merge driver for the purpose of merging pom.xml (maven) files 【发布时间】:2016-01-29 11:07:03 【问题描述】:我为 pom.xml (Maven) 文件配置了自定义 git 合并驱动程序。
配置:
.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 在主分支(因此,我们称之为 'git merge otherbranch' 的分支)和我们要合并的分支('otherbranch')。
我们希望始终将我们的合并驱动程序用于 pom 文件,即使 pom 文件仅在 1 个分支中更改并且可以合并而不会发生冲突。
有没有办法在这种情况下强制我们的自定义“pommerge”驱动程序?
更新 我几乎尝试过任何东西,但没有运气。我什至检查了 git 源代码并在代码中添加了更多日志记录并安装/制作它以检查我是否可以找出我可以以某种方式使用的特定扩展点。 但是代码很难理解在哪些情况下会遵循代码中的哪个路径,因此这种努力比解决方案产生了更多的挫败感;)..
我可以让它工作的唯一方法,这不是一个解决方案,是在合并之前更改两端(分支)的文件。但这不是非常用户友好
我仍然希望有人提出一个天才的解决方案或线索,帮助我在这个挑战中走得更远。
感谢大家的宝贵时间!
【问题讨论】:
你能用一个 git 钩子做点什么吗?也许是一个预提交钩子,如果文件被修改,它会在文件上运行 mergepom.py? @WilliamHilton 合并时是否调用了预提交挂钩?因为文件可能会被更改和提交:只有在合并文件时才应该部分还原(特定的分支设置)。 好吧,我很难过。我尝试使用 .gitattributes 将 pom.xml 标记为二进制文件,但是当文件仅在一个分支上更改时,合并分支时仍然无法强制 git 创建“冲突”。 @WilliamHilton 感谢您的尝试!这也是我不幸遇到的.. 【参考方案1】:您想要的是自定义合并策略,并且您已经定义了合并驱动程序。
仅在发生冲突时调用驱动程序,而在合并两个提交时使用策略。
请参阅此答案以了解如何设置您的解决方案:
https://***.com/a/23140455/6084013
【讨论】:
以上是关于强制 git 自定义合并驱动程序以合并 pom.xml (maven) 文件的主要内容,如果未能解决你的问题,请参考以下文章