Jenkins와 함께 Git 병합 드라이버를 사용하는 방법

Jenkins와 함께 Git 병합 드라이버를 사용하는 방법

저는 최근 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가 있습니다.

관련 정보