2014-10-21 1 views
0

내 작업 복사본이 트렁크를 가리키고 있습니다. 트렁크에 커밋 할 준비가되지 않은 커다란 코드 변경이 있었지만 버전 제어하에 있기를 원했기 때문에 지점으로 (헤드가 아닌 작업 복사본에서 저장소 복사본을 만들고 Switch to Branch을 선택) 결정했습니다. 작업이 끝나면 오류가 발생했습니다. One or more files are in a conflicted state. 이상하게 보입니다. 내 작업 복사본이 새로운 브랜치와 어떻게 충돌 할 수 있습니까?SVN 브랜치 + 스위치 뒤 충돌이있는 이유

단서 : 나는 특정 트리 충돌을 검사 할 때 나는 다음과 같은 메시지를 참조하십시오 The last switch operation tried to delete/move/rename the file "xxx.cs", but the file was deleted, moved or renamed locally 및 기타 유사한 메시지를. (지점 이전에는 여러 파일을 새 폴더로 옮기고 일부 파일의 이름을 변경했습니다).

기록을 잃을 염려없이 "로컬 파일 유지"문제 ("파일이 로컬로 추가됨"충돌)가 해결 된 것으로 안전하게 표시 할 수 있습니까?

답변

0

실용 카피가 작업 사본에서 작성된 새로운 지점과 어떻게 충돌 할 수 있습니까? 정보를 사용할 수 있습니다. 정확히 무슨 일이 일어 났는지 확신 할 수는 없지만 두 가지 논리적 변경 세트 (새로운 분기, 아마도 HEAD가 아닌 커밋되지 않은 작업)를 하나의 커밋으로 커밋하려고 시도 했으므로 좋은 시작이 아닙니다. Subversion Best Practices을 참조하십시오.

커밋되지 않은 변경 사항이있는 트렁크 분기를 저장소 브라우저를 사용하지 않고 깨끗하게 만들려면 트렁크로 최신 상태가 아닌 경우 작업 복사본을 먼저 업데이트해야합니다. 그런 다음 svn 트렁크 깨끗하고 업데이트 된 복사본을 내 지점 폴더 (내가 체크 아웃)에 복사하고 지점을 저지하십시오. 거기에 외관이 있으면 svn을 업데이트 할 것입니다. 또는 repository browser의 트렁크에서 분기하고 분기를 확인합니다.

그런 다음 지점에서 .svn을 제외한 모든 것을 삭제하고 (branch) 현재 작업 세트를 복사하여 붙여넣고 이름 바꾸기를 수정하고 기록을 유지하도록 이동합니다 ("repair move"는 이것에 도움이되는 tsvn 커밋 대화 상자), 변경 사항을 별도의 작업으로 커밋합니다.

'답변을 얻으려면'기록을 잃을 까봐 두려워하지 않고 '로컬 파일을 유지하라'라는 문제가 해결 된 것으로 표시 할 수 있습니까? 모든 작업이 커밋 되었다면 (svn log 참조) 작업중인 복사본을 정리하는 것이 모두 자격있는 예입니다. 그러나, 나는이 작업 카피의 이름을 바꾸고 한쪽으로 치우려고합니다. 그러면 지점의 새 복사본을 깨끗하게 체크 아웃하고 거기에서 내 작업을 재개합니다. 우리가 여기서 무슨 일이 일어 났는지에 대해 100 % 명확하지 않기 때문에 나는 안전하게 안전 옵션을 택할 것입니다.

새 분기를 다시 트렁크에 병합 테스트하는 것이 좋습니다. 병합을 다시 시도 할 때 고통의 세계를 가질 수는 없기 때문입니다. 테스트 병합에 실패하면 다시 분기하여 트 리뷰의 최신 수정되지 않은 깨끗한 복사본을 사용하여 분기를 시작할 수 있습니다.