如何将 Git 合并驱动程序与 Jenkins 结合使用

如何将 Git 合并驱动程序与 Jenkins 结合使用

我最近寻找一种使用 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。

相关内容