리포지토리에서 파일을 삭제했고 이제 다시 되돌리고 싶습니다. 내가 알아낼 수있는 최선의 방법은 다음과 같습니다.
- 삭제하기 전에 개정판으로 업데이트
- 파일을 다른 곳에 복사
- 머리에 업데이트
- 파일을 다시 복사
- 그들을 추가
- 범하다
그것은 단지 나쁜 냄새가 나고 모든 역사를 잃어 버립니다. 더 나은 방법이 있어야합니다. 나는 이미 The SVN Book을 보았지만 아무것도 찾지 못했고 지금 SVN 태그 목록을 찾고 있습니다.
리포지토리에서 파일을 삭제했고 이제 다시 되돌리고 싶습니다. 내가 알아낼 수있는 최선의 방법은 다음과 같습니다.
그것은 단지 나쁜 냄새가 나고 모든 역사를 잃어 버립니다. 더 나은 방법이 있어야합니다. 나는 이미 The SVN Book을 보았지만 아무것도 찾지 못했고 지금 SVN 태그 목록을 찾고 있습니다.
답변:
svn merge 사용 :
svn merge -c -[rev num that deleted the file] http://<path to repository>
예 :
svn merge -c -12345 https://svn.mysite.com/svn/repo/project/trunk
^ The negative is important
TortoiseSVN (내 생각에 ...)
그러나 그것은 완전히 테스트되지 않았습니다.
OP 편집 : 이것은 TortoiseSVN의 내 버전에서 작동합니다 (다음 버튼이없는 이전 종류).
트릭은 거꾸로 병합하는 것 입니다. 했네 sean.bright 올바른 방향으로 날을 가리키는합니다!
편집 : 우리는 다른 버전을 사용하고 있습니다. 내가 설명한 방법은 TortoiseSVN 버전에서 완벽하게 작동했습니다.
또한 커밋에 여러 변경 사항이있는 경우 역 병합하는 경우 커밋하기 전에 병합이 완료되면 다른 변경 사항을 되돌리고 싶을 것입니다. 그렇지 않으면 이러한 추가 변경 사항도 취소됩니다.
Sean Bright가 제안한 svn 병합을 수행하는 문제는 삭제와 동일한 개정판에서 다른 변경 사항을 다시 도입한다는 것입니다. svn 복사본은 삭제 된 파일에만 영향을 미치는보다 구체적인 작업입니다.
Tortoise SVN을 사용하면 다음과 같이 svn 복사본을 통해 작업 복사본 디렉터리와 이후 SVN 개정판에서 삭제 된 파일을 부활시킬 수 있습니다.
삭제 된 파일은 이제 작업 복사본 폴더에 있습니다. 다시 SVN에 다시 추가하려면 복원 된 파일을 마우스 오른쪽 버튼으로 클릭하고 SVN Commit을 선택합니다.
주의 :이 방법은 복원 된 파일의 이전 기록을 보존하지만 TortoiseSVN 로그에서 이전 기록을 보려면 로그 메시지 대화 상자에서 "복사 / 이름 변경시 중지"가 선택 해제되어 있는지 확인해야합니다.
svn cp -r 1993 http://example.com/svn/trunk/path@1993 http://example.com/svn/trunk/path
merge
있지만 알아 내지 못했습니다.
나는 항상 svn copy를 서버 작업으로 사용하는 것처럼 보이므로 두 개의 작업 경로에서 작동하는지 확실하지 않습니다.
다음은 삭제 된 파일을 프로젝트의 로컬 작업 복사본으로 복원하는 예입니다.
svn copy https://repos/project/modules/module.js@3502 modules/module.js
프로젝트 디렉토리 안에있는 동안. 이것은 전체 디렉토리를 복원 할 때도 작동합니다.
Tortoise SVN을 사용하는 경우 해당 개정판에서 작업 복사본으로 변경 사항을 되 돌린 다음 (효과적으로 역 병합 수행) 파일을 다시 추가하기 위해 다른 커밋을 수행 할 수 있어야합니다. 따라야 할 단계는 다음과 같습니다.
파일을 복원하고 수정 내역을 잃지 않는 가장 쉬운 방법은 SVN copy를 사용 하는 것입니다. 위의 병합 예제는 동일한 작업을 수행하는 더 복잡한 방법 인 것 같습니다. 단순히 개정을 복원 하려는데 병합이 필요한 이유는 무엇입니까?
이 경우 다음을 사용하고 꽤 잘 작동합니다.
svn copy -m 'restoring file' -r <rev_number_file_to_restore> http://from/file.cs http://pathTo/file.cs
나는 항상 svn copy
서버 작업 으로 사용 하는 것처럼 보이 므로 두 작업 경로에서 작동하는지 확실하지 않습니다.
복원하려는 파일 하나만 체크 아웃 할 수 있어야합니다. 파일이 존재했던 마지막 개정이 svn co svn://your_repos/path/to/file/you/want/to/restore@rev
어디에 있는지 같은 것을 시도하십시오 rev
.
나는 얼마 전에 정확하게 이것을해야했고, 내가 올바르게 기억한다면, 작동하지 않는 -r
옵션을 사용했다 svn
. :rev
구문 을 사용해야했습니다 . (거꾸로 기억했을지 모르지만 ...)