2012-01-27 8 views
7

svn up 나는 정기적으로이 메시지가 발생 실행 :SVN에서 각각의 프롬프트를 표시하지 않고 모든 바이너리 충돌에 대해 특정 해결책을 취하도록하려면 어떻게해야합니까?

Conflict discovered in 'lib/somelibrary.so'. 
Select: (p) postpone, 
     (mf) mine-full, (tf) theirs-full, 
     (s) show all options: 

s을 명중는 옵션 가정 내 모든 내 버전 또는 버전 중 하나를 취할 수 있도록 mctc, 광산 갈등과 그들의 분쟁을 보여준다 충돌뿐만 아니라 somelibrary.so.

그러나 이러한 옵션은 작동하지 않습니다. 나는이 메시지가 :

Invalid option; cannot choose based on conflicts in a binary file. 

에드윈의 대답은 분명히 내가 mctc 작동하지만 난 아직도 그 충돌의 모든 파일에 대해 동일한 해상도를 가지고 할 수있는 방법을 잘못 이해했다고한다. 처음에 다시 묻지 않고 svn이 모든 충돌에 대해 mf 또는 tf을 사용하게하는 방법이 있습니까?

답변

10

svn update, svn switch, svn merge의 충돌을 자동으로 해결하려면 --accept 플래그를 사용하십시오. SVN Book - svn options에서

:

--accept ACTION
자동 충돌 해결을위한 작업을 지정합니다. 연기 할 수있는 행동은 기본 연기, 기본, 광산 전체, 전체보기, 수정 및 실행입니다. 각 작업의

의미에서 볼 수 svn resolvespecification :

당신이 원하는 해상도에 따라 --accept 명령에 다음 인수를 전달할 수 있습니다

기반을 작업 사본을 으로 업데이트하기 전에 기본 개정판이었던 파일을 선택하십시오.즉, 전에 체크 아웃 한 파일이 최근에 수정되었습니다. 그것은 현재 작업 사본 약자로

은 수동으로 분쟁 해결을 처리했다고 가정 작업, 파일의 버전을 선택합니다.

광산 전체 모든 복사본이있는 충돌 파일을 으로 해결하십시오. svn update를 실행하기 직전에 나타났습니다.

그들의-전체 해결하려면 SVN 업데이 트를 실행할 때 서버에서 가져온했다 한 파일의 복사본을 가진 모든 충돌 파일을.

내 분쟁 해결 각 파일의 내용의 충돌 지역에서 서버에서 가져온 변경을 통해 지역 수정을 선호 모든 충돌 파일입니다.

그들의 분쟁 해결 변경 각 파일의 내용 지역 충돌에서 로컬 수정을 통해 서버에서 가져온을 선호 모든 충돌 파일입니다.

또한 Resolve Any Conflict 섹션을 확인하십시오.

마지막으로 예입니다.

$ svn up --resolve mine-full 
1

mc와 tc는 병합중인 행을 고려한 다음 소스 (mc) 또는 "다른"소스 (tc)에서 해당 행을 병합하는 병합 옵션입니다.

이진 파일은 일반적으로 줄을 포함하는 방식으로 구조화되지 않으므로 다른 줄의 텍스트로 바꾸는 충돌 해결 알고리즘이 이진 파일에서 제대로 작동하지 않습니다. SVN을 작성한 개발자는 이것을 알고 있으므로 바이너리 파일을 다루는 경우 텍스트 파일에만 의미가있는 옵션이 허용되지 않습니다.

약간 다른 mf와 tf를 사용할 수 있습니다. 파일의 충돌 영역을 바꾸는 대신 전체 파일을 전체 파일의 "내"사본으로 또는 전체 파일의 "해당"사본으로 대체합니다.

SVN을 "종료하고 mc/tc 파일 옵션을 허용"하려면 svn을 사용하여 MIME 유형을 편집하고 텍스트로 설정하십시오. 텍스트 파일이 아니라면 바이너리 파일 시작 (두 개의 jpeg 파일의 연속 섹션을 병합하는 예를 들어, 유효한 jpeg 파일을 생성하지 않음) 중 하나의 사양을 벗어나는 파일을 얻을 수 있습니다.

+0

말이, 감사 : 가 자동으로 실행, 업데이트시 mine-full 모든 충돌을 해결합니다. 그런 지식으로, svn이 각 파일에 대해 나에게 묻지 않고 모든 파일에 대해'mf' 또는'tf'를 할 수있는 방법이 있습니까? –

+0

충돌하는 각 파일에는 다른 방법으로 해결해야 할 수도 있습니다. 어떤 파일이 충돌하는지 (또는 왜인지)조차 알지 못하기 전에 일종의 해결책을 결정하는 것이 현명하다는 것이 확실하지 않습니다. –

+0

질문은 항상 가능해야하는지 아닌지 여부입니다. 나는 그렇게 할 때와 그렇지 않을 때를 이해합니다. –