我目前正在尝试将我们的主分支合并到新版本分支中,以查看该版本是否正常工作(用于测试我合并分支'master'和'infra')。我在Jenkins用管道脚本来做这件事。 但是,我在合并的每个文件中遇到合并冲突。因此,例如,如果文件foo /跳回到bar.txt在分行变更红外线结果在我的本地回购是这样的:通过Jenkins管道合并分支
$ git merge master
Auto-merging foo/bar.txt
Merge made by the 'recursive' strategy.
...
使用下面的脚本这是应该做的,我得到了同样的事情以下结果:
ERROR: Branch not suitable for integration as it does not merge cleanly: Command "git merge --ff c98425e0c22d1ad35749c5eca03ca44652e22c95" returned status code 1:
stdout: Auto-merging foo/bar.txt
CONFLICT (add/add): Merge conflict in foo/bar.txt
Automatic merge failed; fix conflicts and then commit the result.
我已经尝试了很多不同的设置,但无法让詹金斯自动合并分支。下面是检查出来的回购,应该把它合并,我使用片断发生器产生的部分:
checkout changelog: true, poll: true, scm: [$class: 'GitSCM', branches: [[name: '*/infra']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'LocalBranch', localBranch: 'infra'], [$class: 'PreBuildMerge', options: [fastForwardMode: 'FF', mergeRemote: 'origin', mergeStrategy: 'MergeCommand.Strategy', mergeTarget: 'master']]], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '<id>', name: 'origin', refspec: '+refs/heads/master:refs/remotes/origin/master', url: '<url to repo>']]]
编辑:我使用的是解决办法,现在通过检查出的回购,然后运行通过shell命令合并:
checkout poll: false, scm: [$class: 'GitSCM', branches: [[name: "${buildGitRevision}"]], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'WipeWorkspace']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '<id>', url: '<url to repo>']]]
[...]
sh "git merge origin/master"
完成测试合并的想法。你得到什么类型的冲突?它是一个自动CRLF的东西,还是有'释放'上没有backported到'master'的实质性热点?项目范围内的缩进更改?我会根据问题的当前状态写一个答案。 – msanford