![如何将 Git 合并驱动程序与 Jenkins 结合使用](https://linux22.com/image/103914/%E5%A6%82%E4%BD%95%E5%B0%86%20Git%20%E5%90%88%E5%B9%B6%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E4%B8%8E%20Jenkins%20%E7%BB%93%E5%90%88%E4%BD%BF%E7%94%A8.png)
我最近寻找一种使用 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。