무료 svn + trac 호스팅 서비스였던 assembla.com에서 소스코드 공개 정책을 바꿔버렸다. 유료 서비스로 업그레이드 하지 않으면 구글코드와 마찬가지로 소스코드를 공개해야만 하는 것 같다. 덕분에 부랴부랴 코드를 백업받는 방법을 알아보기 시작했다. 모두 백업하면 그냥 계정 삭제하고, svn 서버를 로컬에 설치해야 할 듯 하다.
svnadmin툴의 dump 명령어를 쓰면 쉽게 백업할 수 있지만, 문제는 repository가 로컬일 경우에만 가능하다는 점이다. 해결책으로 svnsync를 이용하는 방법이 있다. 원격에 있는 repository를 로컬로 동기화한 후, 여기서 백업하면 된다. 이 과정은 아래 절차대로 수행하면 된다.
$ svnadmin create my_repo
> 로컬에 동기화 당할(?) repository를 생성
$ cd my_repo/hooks
$ head -1 pre-revprop-change.tmpl > pre-revprop-change
$ chmod +x pre-revprop-change
$ cd ../..
> 중요! pre-revprop-change 파일을 빈 파일로 만들라는 메뉴얼도 있지만 그렇게 하니 에러가 났다. 쉘 지정을 해주어야 정상작동 한다. (head -1은 #!/bin/sh를 출력하게 한다.)
$ svnsync init file://`pwd`/my_repo http://svn.assembla.com/svn/xxx
> 동기화할 repository를 지정 (file://형식의 절대 경로로 지정해야만 한다.)
$ svnsync sync file://`pwd`/my_repo
> 동기화 시작
$ svnadmin dump my_repo > backup.dump
> 백업
$ svnadmin load new_repo < backup.dump
> 복원
참조:
http://sio4.tistory.com/155
http://journal.paul.querna.org/articles/2006/09/14/using-svnsync/
http://pogopixels.com/blog/dumping-a-svn-repository-from-a-remote-url/ (windows용)
