2015-01-26 4 views
1

나는 다음과 같은SVN replace + revert가 파일 기록을 잃어 버렸습니까?

> svnadmin create testrepo 
> svn co file://$(pwd)/testrepo checkout 
> cd checkout 
> mkdir trunk 
> echo something > trunk/myfile.txt 
> svn add trunk 
> svn commit -m "first commit" 
> echo updated >> trunk/myfile.txt 
> svn commit -m "second commit" 

후 자연적으로 나는 지금

> svn up 
> svn log trunk/myfile.txt 
>> ------------------------------------------------------------------------ 
>> r2 | user | 2015-01-27 00:45:59 +0100 (Di, 27 Jan 2015) | 1 line 
>> 
>> second commit 
>> ------------------------------------------------------------------------ 
>> r1 | user | 2015-01-27 00:45:59 +0100 (Di, 27 Jan 2015) | 1 line 
>> 
>> first commit 
>> ------------------------------------------------------------------------ 

의 내가

> svn rm trunk 
> svn cp [email protected] trunk 
> svn commit -m "replacing trunk" 
> svn up 
> svn log trunk/myfile.txt 
>> ------------------------------------------------------------------------ 
>> r3 | user | 2015-01-27 00:45:59 +0100 (Di, 27 Jan 2015) | 1 line 
>> 
>> replacing trunk 
>> ------------------------------------------------------------------------ 
>> r1 | user | 2015-01-27 00:45:59 +0100 (Di, 27 Jan 2015) | 1 line 
>> 
>> first commit 
>> ------------------------------------------------------------------------ 

그리고 내가 결정할 이전 버전과 트렁크를 교체 사고로 가정 해 봅시다받을 수 있나요 경우 되돌리기

> svn merge -c -3 . 
> svn commit -m "reverted" 
> svn up 
> svn log trunk/myfile.txt 
>> ------------------------------------------------------------------------ 
>> r4 | user | 2015-01-27 00:49:25 +0100 (Di, 27 Jan 2015) | 1 line 
>> 
>> reverted 
>> ------------------------------------------------------------------------ 
>> r3 | user | 2015-01-27 00:45:59 +0100 (Di, 27 Jan 2015) | 1 line 
>> 
>> replacing trunk 
>> ------------------------------------------------------------------------ 
>> r1 | user | 2015-01-27 00:45:59 +0100 (Di, 27 Jan 2015) | 1 line 
>> 
>> first commit 
>> ------------------------------------------------------------------------ 

악의적 인 커밋을 되 돌렸을지라도 필자의 파일 기록은 이제 사라 졌으므로 r2에서 더 이상 변경된 내용을 볼 수 없습니다.

우선,이 이유는 무엇입니까? 저의 커밋을 잘못된 방향으로 되 돌렸습니까?

둘째, 파일 기록을 복원 할 수있는 방법이 있습니까?

이 문제에 대해 밝힐 수있는 사람 덕분에 !!

답변

1

Subversion에 로그를 요청할 때 다른 페그 개정을 사용해야합니다. 따라서 우발적 인 삭제 이전의 기록을 보려면 페그 리비전을 으로 설정하고을 먼저 실행하면 누락 된 히스토리가 다시 표시됩니다. 당신의 예에서

,

svn log [email protected] 

이 누락 된 커밋을 참조하려고합니다. 어떤 수정 버전이 정확한 버전인지 확실하지 않으면 log 명령에 -v 플래그를 사용하고 A 행을 확인하십시오 (예 : like so

svn log -v trunk 
+1

내 목표는 어떻게 든 역사를 다시 복원하는 것이지만 다른 개발자가 나쁜 커밋에 대해 알 필요가 없도록합니다. 정확하게 개정판에서 수정본을 만들 수 있었고, 나쁜 커밋 레코드 만 병합하고, 다음 커밋을 정상적으로 수행 한 다음, 분기를 트렁크 또는 이와 유사한 것으로 다시 통합 한 것처럼 보입니다. 그래서 내가 관심을 가질만한 것이 가능한 한 보이지 않는 커밋을 만드는 솔루션이 될 것입니다. (제 의견으로는 악의 커밋을 따르지 않은 다른 커밋이 없다면 악의 커밋을 완전히 되돌릴 수 있어야하지만, t는 방법을 안다. ..) – pete83

관련 문제