Subversion / TortoiseSVN에서 삭제 된 폴더를 "삭제 취소"하는 방법은 무엇입니까?


96

하나의 특정 태그 만 삭제하려는 Subversion 저장소에서 실수로 'tags'폴더를 삭제했습니다. '태그'폴더를 되 찾는 가장 쉬운 방법은 무엇입니까?

우리는 TortoiseSVN을 클라이언트로 사용하고, 저장소 브라우저로 이동하여 로그를 표시하면 작업 복사본의 유사한 대화 상자에서 볼 수있는 것과 유사한 "이 개정판의 변경 사항 되돌리기"와 같은 것이있을 것이라고 생각했습니다. 하지만 거기에는 그런 명령이 없습니다 ...

답변:


115

이전 버전에서 삭제 된 폴더를 다시 복사하십시오.

리포지토리 브라우저에서 HEAD (오른쪽 상단 모서리에 있음)라는 버튼을 클릭하여 폴더가 아직 존재하는 개정판을 표시 한 다음 해당 폴더를 마우스 오른쪽 버튼으로 클릭하고 "복사 대상 ..."을 선택하고 경로를 입력합니다. 폴더를 다시 만들려는 경우 (아마도 텍스트 상자에 이미있는 동일한 경로).


4
좋은 팁, 감사합니다. TortoiseSVN 문제 하나- "copy to ..."대화 상자에서 경로를 'example.com/svn/tags'에서 'tags1'로 변경 한 다음 다시 확인 버튼을 활성화해야했습니다.
Borek Bernard

2
이 태그 잘 될 수도 있지만, 당신은 역사를 잃게하기 때문에 다른 폴더를 삭제를 취소해서는 안
slckin

3
그것은 역사를 유지합니다.
acdcjunior 2013-08-05

로그를 볼 때 "복사 / 이름 변경시 중지"를 선택 취소하십시오. 그렇지 않으면 TortoiseSVN이 복원 작업 이전의 기록을 표시하지 않습니다 (분명히) ...
Oli

완전히 작동했습니다. 내 시간을 많이 절약했습니다. 감사합니다 :)
dgupta3091

78

명령 줄 애호가를 위해 :

  • 먼저 삭제가 발생한 개정 번호를 찾으십시오.

    svn log -v http://svnserver/path/to/folderContainingDeletedFolder
    

디렉토리가 개정 999에서 삭제되었음을 발견했다고 말하십시오 (btw : svn repo 브라우저로 개정 번호를 찾는 것이 더 쉬울 수 있음)

  • 개정 에서 1을 뺀 폴더를 복사합니다.

    svn copy http://svnserver/path/to/folderContainingDeletedFolder/deletedFolder@998 http://svnserver/path/to/folderContainingDeletedFolder/deletedFolder -m "undeleted folder"
    

완료되었습니다!

귀하의 경우 이것은 다음과 같습니다.

    svn copy http://svnserver/project/tags@998 http://svnserver/project/tags -m "undeleted folder"

1
많은 시간 Thanks..saved
다라니 쿠마

이것은 내 베이컨을 구했습니다!
axiopisty

"svn copy"접근 방식이 실제로 모든 기록을 보존하고 폴더에 대해 재귀 적으로 작동하여 폴더와 모든 하위 항목을 복원하는지 확인하고 싶었습니다.
WallStProg

11

이 대답의 대부분은 어느 정도 작동하지만 정답은 Daniel의 것입니다. 역 병합을 수행하십시오. 이렇게하면 버전 기록을 유지할 수 있습니다.

svn merge -r R1:R2

여기서 R1은 현재있는 개정판이고 R2는 삭제 된 파일 / 폴더가 포함 된 개정판입니다.


1
역 병합에서 R1은 되돌리려는 개정이고 R2는 그 이전의 개정입니다.
arleslie

2
를 사용하면 기록을 잃지 않습니다 svn copy.
maxschlepzig

사람들을 위해 없는 명령 줄 매니아, 참조 : tortoisesvn.net/docs/nightly/TortoiseSVN_en/...
파스칼

2
삭제 된 모든 파일 / 폴더를 복원하지 않습니까? 특정 삭제 된 폴더 만 복원하고 다른 삭제 된 폴더는 복원하지 않으려는 경우이 방법이 작동합니까?
OJ7

8

역 병합 을 수행해야합니다 .

이를 수행하는 방법에 대한 자세한 내용 (및 SVN으로 원하거나 수행해야하는 기타 거의 모든 작업)은 온라인에서 사용할 수 있습니다 .


3

이 개정 후 나를 위해 일한 raudi의 답변에 이어.

일부 svn 클라이언트는 다음과 같이 폴더 뒤에 @를 사용하는 대신 -r 개정 매개 변수를 사용하여 지정된 개정 번호가 필요할 수 있습니다.

svn copy svn://svnserver/project/tags svn://svnserver/project/tags **-r 998** -m "undeleted folder"

여전히 존재하는 폴더에서 복원하는 경우 -r <revision>작동합니다. 그러나 폴더를 직접 복원하려는 경우을 사용해야 @<revision>합니다. 그렇지 않으면 파일을 찾을 수 없다는 메시지가 표시됩니다.
arleslie

2

고토 Repository Browser당신의이 repository, 당신의 부모 폴더를 마우스 오른쪽 버튼으로 클릭 삭제 폴더가 존재했다. 이제 Show Log상위 폴더에서 삭제 작업을 커밋 한 이전 개정을 선택합니다. 목록이 표시되고 개정 정보에서 폴더를 마우스 오른쪽 버튼으로 클릭하고Update to this Revision 합니다.

완료되었습니다


아, 알겠습니다. 로그 표시 대화 상자가 아니라 기본 저장소 브라우저 창에 있습니다. 그래도이 명령은 서버에서이 문제를 직접 수정하는 동안 로컬 작업 복사본을 업데이트하려고 시도합니다 (각각 수천 개의 파일을 포함하는 수백 개의 태그를 체크 아웃하는 것이 정확히 제가 원하는 것이 아니라는 것을 상상할 수 있습니다. 할 것).
Borek Bernard

그것은 나를 위해 일했습니다. 컨텍스트 메뉴 옵션 (오른쪽 클릭)은 "이 개정에서 변경 사항 되돌리기"이며 변경 사항을 역으로 병합합니다.
hsg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.