2016-11-07 2 views
0
Gerrit version: 2.12.4 
Git version: 1.7.9.5 

Project Options 
Submit Type: Merge if Necessary 
Allow content merges: false 
Create a new change for every commit not in the target branch: false 

체리 - Gerrit에서 '병합 충돌'로 인해 대상 분기에 대한 커밋이 실패합니다. 그래서 우리는 지역에서 충돌이 무엇인지 알기 위해 그것을합니다.Gerrit UI를 통해 Cherry-pick이 실패하지만 로컬 git-cherry-pick을 통해 성공합니다.

저장소를 복제하십시오. 대상 분기를 체크 아웃하십시오. 새로운 커밋이 제출되지 않았습니다. 추가 옵션없이 cherry-pick 명령 git fetch ssh://foo refs/changes/xx/yyyxx/1 && git cherry-pick FETCH_HEAD을 복사하여 붙여 넣으십시오. 체리 피크는 실패하지 않으며 충돌이 없습니다. 푸시, 검토 및 제출 끝난. 그래서 그것은 로컬 자식 명령을 통해 잘 작동합니다.

나는 테스트를한다. Allow content merges을 true로 설정하면 충돌이 발생하지 않습니다. 그러나 '콘텐츠 합치기 허용'이 잘못된 경우 가끔씩 사소한 충돌을 해결하기 때문에 실제로는 불가능합니다.

나는 누군가가 비슷한 사건을 겪은 적이 있는지, 그리고 체리 피크는 왜 Gerrit와 로컬 repo에서 다르게 행동하는지 알고 싶습니다.

의견을 보내 주셔서 감사합니다.

답변

0

로컬에서는 Git를 사용하고 있지만 Gerrit는 JGit을 사용합니다 ... 병합 전략에서이 차이가있을 수 있습니다.

+0

JGit은 괜찮지 만 Git이 실패하면 병합 전략이 잘못되었을 수 있습니다. git-cherry-pick을 사용하면 예상대로 성공할 수있는 옵션이없는 것 같습니다. 그래서 그것이 버그인지 궁금하네요. – ElpieKay