여기서는 SVN 프로젝트의 디렉토리가 /data/svn/project라고 가정하고, trunk/test.exe 파일과 트렁크/notallowed/ 디렉토리를 제외하고자 합니다. 단계는 다음과 같으며, svn 명령이 실행됩니다. svn 설치 디렉터리의 bin 디렉터리에 있음)은 다음과 같습니다.
# 먼저 전체 svn 라이브러리를 내보냅니다.
svnadmin 덤프 /data/svn/project > project_original.dump
# 그런 다음 project_original.dump 파일에서 불필요한 파일을 제외하고 새로운 덤프 파일을 생성합니다.
project_original.dump 입력 | svndumpfilter 제외 트렁크/test.exe 트렁크/notallowed > project_new.dump
# 다음으로 새 svn 프로젝트를 만들고 위의 덤프 파일을 새 프로젝트로 가져옵니다.
svnadmin은 /data/svn/project_new를 생성합니다.
svnadmin 로드 /data/svn/project_new < project_new.dump
마지막으로 원래 프로젝트 디렉터리를 삭제하고 project_new를 project로 변경합니다. dump 명령은 svn 프로젝트의 모든 수정 사항과 기록 기록을 내보내므로 내보낸 덤프 파일의 크기가 커지고 가져오기 시간이 상대적으로 길어집니다.
서버 측에서 SVN 저장소의 일부 폴더 또는 파일을 완전히 삭제합니다.
SVN 저장소에서 폴더나 파일을 완전히 삭제하려면 다음 방법을 사용할 수 있습니다(예:).
예: SVN 라이브러리 경로가 E:/svn/project이고 라이브러리의 디렉터리 구조가 다음과 같다고 가정합니다.
QA/트렁크
소프트웨어/태그/test.exe
Software/Tags/ 디렉터리에서 test.exe 파일을 삭제합니다.
단계는 다음과 같습니다.
SVN 라이브러리를 덤프하고 svndumpfilter를 사용하여 삭제할 파일을 필터링하고 새 SVN 라이브러리에 처리된 파일을 로드합니다.
>svnadmin 덤프 E:/svn/project > aaa.dump
>aaa.dump 입력 | svndumpfilter 제외 /Software/Tags/test.exe > bbb.dump
>svnadmin은 E:/svn/project_new를 만듭니다.
>svnadmin load E:/svn/project_new < bbb.dump
그런 다음 새 project_new의 이름을 project로 변경합니다. 이전 프로젝트를 이동하거나 다른 이름을 지정할 수 있습니다. (TRAC에서 사용하는 SVN 디렉터리는 project이기 때문에 사용자가 사용하는 SVN 디렉터리도 project입니다.)
이 방법을 사용하면 SVN 저장소에 버전이 많지 않은 경우 SVN 저장소에 있는 특정 폴더나 파일을 완전히 삭제하는 효과를 얻을 수 있습니다. 그러나 SVN 저장소에 버전이 너무 많으면 덤프할 때 저장 공간이 부족해집니다. 버전을 덤프할 수 없습니다. 작동이 불가능해집니다. 이때 저장 공간을 만족할 수 있는 다른 하드 디스크를 설치해야 합니다.
SVN으로 삭제된 파일이나 폴더를 복구하는 방법
TortoiseSVN 사용:
1. 로컬 작업 복사본에서 TortoiseSVN->Show log를 사용하여 저장소의 기록을 봅니다. 검색을 이용하시면 됩니다.
2. 파일이나 폴더가 삭제된 버전을 찾아 로그 메시지에서 이 버전의 변경 사항 되돌리기를 마우스 오른쪽 버튼으로 클릭합니다.
3. 파일 또는 폴더가 로컬 작업 복사본으로 복원됩니다. 실수로 삭제한 경우 저장소에 커밋하면 됩니다.
Eclipse용 Subclipse 플러그인 사용:
1. 팀->SVN 리포지토리 기록 표시를 사용하여 리포지토리 기록을 봅니다.
2. 파일 또는 폴더가 삭제된 버전을 찾아 XX 버전으로 되돌리기를 마우스 오른쪽 버튼으로 클릭합니다.
3. 파일 또는 폴더가 로컬 작업 복사본으로 복원됩니다. 실수로 삭제한 경우 저장소에 커밋하면 됩니다.