2010-12-28 2 views
10

SVN에 트렁크의 변경 사항을 최신 상태로 유지할 브랜치가 있습니다. 내가하고 싶은 스크립트는 야간에 실행되는 스크립트 나 무언가를 병합하여 병합을 수행 한 다음 병합 충돌이없는 경우 분기의 ​​새 버전을 커밋하지만 병합 충돌이 있으면 어떻게 든 나타냅니다. 나는 이것이 모든 것을하지는 않지만 다소 도움이되는 post을 발견했습니다.SVN - 트렁크를 분기로 병합하는 것을 자동화합니다.

병합 충돌이 있는지를 판단 할 방법을 찾을 수 없었습니다. 이것은 대부분 내가 찾고있는 것입니다. 코드 빌드를 추가 한 다음 성공시 커밋하는 것은 스크립트에서 충분히 쉽지만 병합 충돌을 확인할 방법이 없어도 성공하지 못합니다.

도움을 주셔서 감사합니다.

답변

10

많은 정확한 분기가 없었기 때문에 병합 자동화를 시도하지는 않았지만 수동으로 처리 했으므로 똑같은 문제가있었습니다.

어쨌든 스크립트를 사용하는 것이 가장 좋습니다. 게시물에 링크 된 스크립트는 마지막 필요한 동작을하지 않습니다 커밋

내가 당신이라면 나는 종종 리눅스를 사용

그래서, 나는 다음과 같은 쉘 스크립트를 사용했을 :

cd /path/to/branch 
svn update #just to be sure... 
svn merge --non-interactive svn://path/to/trunk 
svn commit -m "Automated commit" 

비슷한 명령을 배치 스크립트의 창에 대해 SVN과 함께 사용할 수 있습니다.

+0

충돌이있을 경우 커밋이 실패해야하므로 가능한 해결책 일 수 있습니다. 이것에 대해 생각한 후에 ... 커밋 전에 컴파일하려고하면 병합 충돌이 발생하면 실패합니다. 그런 다음 Cruise Control에서 오류 메시지를 생성 할 수 있습니다. 도와 주셔서 감사합니다! – BryceH

+0

실제로, 병합 충돌이 해결되지 않았다면 커밋 할 수 없으므로 커밋은 확실히 실패합니다. 여전히 svn merge의 반환 값을 사용하거나 모르는 다른 명령을 통해 충돌을 확인하려고 할 수 있습니다. 어쨌든 병합 할 --non-interactive 플래그를 추가하는 것을 잊었습니다. 갈등이있는 경우에 대비해야한다. –

+0

Jenkins/Hudson과 함께 작동하는 방법을 모릅니다. – gnuyoga

0

MergeFairy을 살펴보십시오. 계속해서 병합하여 이메일을 보내면 재개 방법에 대한 지침이 제공됩니다.