2017-02-12 2 views
9

이 대답을 읽었습니다 : How do I return to an older version of our code in Subversion?을 사용하고 이전 수정 버전으로 되돌리려면 svn merge -r 150:140 . 명령을 사용했습니다 (이전 버전의 파일로 돌아갈 필요가 없습니다.). 그 전에 수정 버전 150의 깨끗한 버전의 리포 (파일을 수동으로 변경하지 않음)가있었습니다. 내가하고 싶었던 모든 파일의 일부 이전 버전으로 돌아 가야했다으로 나를보고 놀라게일부 건너 뛴 경로로 변경 되돌리기가 실패했습니다

... 
Skipped 'some/file.h' 
Skipped 'some/file2.h' 
... 
Skipped 'some/file3.h' 
Skipped 'some/file4.h' 
... 
Summary of conflicts: 
Skipped paths: 4 

을 (내가 사전에 아무런 변화가 없었다) : 불행하게도, 나는이 경고를 받았습니다.

이 문제의 원인은 무엇입니까? 이전 버전은 어떻게 구할 수 있습니까?

편집 : 나는 확인했습니다 분명히 이러한 파일은 currrent 버전 (150) (SVN 디스크 또는 중 하나)에 존재하지 않는 :

svn: warning: W155010: The node 'some/file.h' was not found. 

그러나 그들은 그래서 개정 (140)에 존재 않았다 그들이 삭제 된 길을 따라 어딘가에. 하지만 왜 SVN이 그들을 복원 할 수 없습니까?

+0

사용하여 새 로컬 폴더로 개정 (140)로부터 신선한 작업 복사본을 체크 아웃 항상 거기에 있었습니까? Subversion은 이름 변경에 잘 대처하지 않습니다. – andref

+0

아니요,이 파일은 방금 제거되었습니다. – NPS

+0

'svn stat'의 결과는 무엇입니까? – Constantin

답변

4

이러한 트리 충돌의 가장 근본적인 원인은 작업 복사본에 몇 가지 변경 사항이 있으며 병합을 시도한다는 것입니다. 나쁜 일이 발생할 수 있습니다. 출력 결과를 추측하면 'some'폴더와 관련 될 수 있습니다 (즉, 파일뿐 아니라 합치기 전에 건너 뛴 파일에 로컬 변경 사항이있는 경우 전체 폴더가 수정본 140과 150 사이에서 제거 된 경우).

돌아 가기 개정 (150)에
svn revert --recursive 

이 당신의 작업 복사본에서 모든 버전없는 파일을 & 폴더를 삭제하고

를 사용하여 병합을 다시 실행이 미래에 발생하는 경우

다시 실행하여 실패한 병합을 되돌리려 시도

svn merge -r 150:140 -v --force . 

을 ( -v은 지역 수정 된 경우에도 --force, 당신의 작업 복사본에서 파일을 삭제합니다, 더 자세한 정보가 표시됩니다) 파일 이름을 변경의 경우 다른 모든 실패에

이 마지막 리조트 단지

svn checkout -r 140 $your_url 
+0

"그 전에 수정 버전 150의 깨끗한 버전의 리포 (파일을 수동으로 변경하지 않음)가 있습니다." – NPS

+0

svn 변경 및 작업 복사본 상태에 대한 자세한 정보가 없으면 근본 원인이 실제로 무엇인지 추측 할 수 있습니다. – Constantin

+0

알겠습니다. 내 질문에 대한 설명에 그 내용을 적었습니다. – NPS

관련 문제