프로젝트를 성황리(?)에 마치고 임시 개발서버에서 사용하던 SVN을 백업하여 SVN전용 서버에 복원하라고 일을시켰다.
잘했겠지라는 생각을 가지고 새로운 SVN서버에 relocate한다음 버그수정을 하고 commit을 실컷 하던중..
백업하여 복원해놓으라는 SVN서버에 내용을 보니 최종 소스만 다시 임포트 시켜서 리비전이 1번부터 시작되었고 이전 작업로그들은 없어져버린것이 아닌가. ㅠ.ㅡ
(이전 작업 리비전이 1600번대까지 있었다.)
분명 두 프로젝트를 합칠수 있다는 생각에 어떻게 SVN소스가 합쳐져야하는지 설명하고
"다시 합쳐봐" 하고 지시를 내렸지만
"작업과정이 복잡하네요" 라는 대답뿐이었다.
폭풍 구글링과 몇번의 시행착오끝에 간단하게 끝낼수 있었다.
(정확히 3시간 걸렸다 -_-)
일단 원래 개발하던 SVN 저장소를 RepoA 라고 하고, 추가작업한 저장소를 RepoB 라고 하자
(RepoA:1년간 작업내역 저장됨, RepoB : 새로운SVN서버에 옮기면서 약 40개정도의 리비전 존재)
-신규 SVN 저장소 생성-
SVNADMIN CREATE RepoNEW
-SVN 백업-
SVNADMIN DUMP D:\repositoies\RepoA > D:\RepoA.dump SVNADMIN DUMP D:\repositoies\RepoB -r 1:40 --incremental > D:\RepoB.dump |
여기서 중요한것이 바로 -r 옵션과 --incremental 옵션이다.
-r 1:40 옵션은 1번~40번 리비전을 백업하라는 것이고
--incremental 옵션은 증가분만 저장한다는 것이다.
증가분이라는것의 정확한 해석을 할 수 없지만 SVN저장시 변경된 내용만 저장하라는 내용인것 같다.
(--incremental 옵션을 안준다면 RepoA 다음에 RepoB를 이어서 복원할 수 없다.)
-SVN 복원-
RepoA를 새로운 저장소(RepoNEW)에 넣고 그 다음 이어서 RepoB를 복원해야 하기때문에 순서가 중요하다.
SVNADMIN LOAD D:\repositories\RepoNEW < D:\RepoA.dump SVNADMIN LOAD D:\repositories\RepoNEW < D:\RepoB.dump |
댓글