J'essaie actuellement de fusionner notre branche principale dans de nouvelles branches de publication pour voir si la version fonctionne bien (pour tester, je fusionne les branches 'master' et 'infra'). Je fais cela avec un script pipeline dans Jenkins. Cependant, je reçois des conflits de fusion dans tous les fichiers fusionnés. Ainsi, par exemple si le fichier foo/bar.txt a été changé dans la branche infra le résultat dans mon repo locale ressemble à ceci:Fusionner des branches via le pipeline Jenkins
$ git merge master
Auto-merging foo/bar.txt
Merge made by the 'recursive' strategy.
...
En utilisant le script ci-dessous qui est censé faire la même chose que je reçois la résultat suivant:
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.
J'ai essayé pas mal de réglages différents, mais n'a pas été en mesure de faire fusionner Jenkins branches automatiquement. Voici la partie qui vérifie la mise en pension et devrait fusionner que je créé à l'aide du générateur d'extrait:
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>']]]
Edit: J'utilise une solution de contournement en ce moment en consultant le repo, puis en exécutant la fusion via la commande 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"
Neat idée de faire des fusions de test. Quels sont les types de conflits que vous avez? S'agit-il d'une chose Auto CRLF, ou y a-t-il eu des correctifs importants sur la «release» qui n'ont pas été rétroportés dans «master»? Changement d'indentation à l'échelle du projet? Je vais écrire une réponse basée sur l'état actuel de la question. – msanford