我最近寻找一种使用 Git 合并驱动程序自动合并 pom.xml-s 的方法。让它在本地工作,但现在我想将此解决方案添加到 Jenkins - 到目前为止还没有运气。
我做了什么:
1)我将这些行添加到 /root/.gitconfig :
[merge "pommerge"]
name = A custom merge driver for Maven's pom.xml
driver = /usr/bin/mergepom.py %O %A %B
2)在同一目录中创建 .gitattributes 文件并添加行:
pom.xml merge=pommerge
3)将mergepom.py移至/usr/bin
答案1
首先,您应该按照中的说明使用驱动程序部分的绝对路径https://github.com/ralfth/pom-merge-driver(我猜要么是你使用的那个,要么是它的一个叉子) - 因此/usr/bin/mergepom.py %O %A %B
在你的情况下用于驱动程序。
其次,系统范围的 git 属性文件可能应该位于 $HOME/.config/git/attributes 中https://stackoverflow.com/a/28027656
第三是一个更哲学的观点——使用 Jenkins 自动合并文件通常是一个坏主意;您可能会考虑更改工作流程,让用户进行合并,然后 Jenkins 评估他们的合并。为什么你的 Jenkins 作业要执行合并(自动将发布分支合并到主分支)?用户可以或者应该这样做吗?
答案2
啊,是的,位置已经是 /usr/bin/mergepom.py %O %A %B,从本地环境复制了原始路径。
查看了一下,$HOME/.config 下没有任何内容。不过在 /usr/share/git-core/contrib/hooks 下发现了一些钩子。有一天会测试这个。
好吧,合并冲突仍然需要手动解决,但是当存在直接合并时,Jenkins 将显着减少自动合并的时间,否则这些时间将花费在手动检查 pom.xml-s 上。我所在的项目大约有 75 个 pom.xml-s。