2009-08-19 2 views
0

많은 git-svn 저장소 (동시에)를 사용하여 모든 항목을 업데이트해야하는 번거 로움이되고 있습니다. 나는 이것을 자동화하는 스크립트를 작성하여 매일 아침 커피를 가져 오는 동안 실행할 수 있습니다.git-svn rebase 이후에 충돌을 감지합니다.

은 기본적으로 내 흐름이

cd ~/module1 
git svn fetch 
git checkout master 
git svn rebase 

git checkout topicbranch 
git svn rebase 

cd ~/module2 
git svn fetch 
git checkout master 
git svn rebase 

처럼 이미 안전하게 언제든지 할 수있는 git svn fetch 부분을 자동화 한 것입니다. 그러나 충돌이있을 수 있으므로 git svn rebase를 자동으로 수행하는 것은 그리 안전하지 않습니다.

리베이스 후에 충돌이 발생했을 때 스크립트가 어떻게 알 수 있습니까? 그럼 난 --abort 리베이스 자식을 실행하고 나는 다시 내 커피 :) 내가 git-svn, git-rebase에서 무엇을 수집 할 수 있습니다에서

답변

1

에 도착할 때 나는 실패를 검토 할 수 있도록 로그 파일에 라인을 작성하고 git-sh-setup 자식 수 충돌로 인해 rebase를 수행 할 수없는 경우 종료 코드 1과 함께 종료됩니다.

+0

리바이스가 수행 될 수없는 경우 1을 반환하지만 올바른 것처럼 보입니다. 작업 사본에 커밋되지 않은 변경 사항이 있습니다. 그냥 git rebase를 실행해야합니까? 어쨌든합니까? – amarillion

+0

음, 상호 작용없이 리베이스를 수행 할 수없는 경우 자동 실행될 때 실제로 선택 사항이 없는지 확인하십시오. – Bombe

3

"자식 svn의 페치"수행 한 후, 당신은 당신의 현지 지점에 최신 svn의 물건을 얻을 수을 리베이스 대신 병합를 사용할 수 있습니다. 병합에 성공하면 git ls-files와 같은 도구로 찾을 수있는 충돌이 없기 때문에 알 수 있습니다. 병합 이 아닌 경우 아무 것도 변경하지 않고 작업 트리의 최상위 변경 사항을 무시할 수 있습니다.

그런 다음 커밋하기 전에 마지막 단계로 rebase를 수행하십시오 (원하는 경우 엄격하게 필요하지는 않음) 오류가 발생하기 쉬운 리베이스를 대화식으로 한 번만 처리 할 수 ​​있습니다.