svn 저장소를 git 저장소로 변경하기 위한 방법을 기술합니다.
1. svn 커미터 리스트 가져오기.
svn에서 다음과 같은 명령어를 통해 커미터 리스트를 가져옵니다.
1) svn log -q | awk -F ‘|’ ‘/^r/ {sub(“^ “, “”, $2); sub(” $”, “”, $2); print $2″ = “$2″ <”$2″>”}’ | sort -u > authors-transform.txt
2) 현재 콘솔에 로그인한 계정과 다른 SVN 계정을 사용하신다면 아래 처럼
- svn log -q svn+ssh://<다른 계정>@<SVN 서버>/<SVN repository> | awk -F ‘|’ ‘/^r/ {sub(“^ “, “”, $2); sub(” $”, “”, $2); print $2″ = “$2″ <”$2″>”}’ | sort -u > authors-transform.txt
3) 형식 바꾸기.
위와 같은 방식으로 만들어진 authors-transform.txt 형식을(커밋계정=커밋계정<커밋계정>) git에 형식으로 바꿉니다.
git계정 = 이름<이메일주소>
2. git-svn을 이용하여 svn 저장소 복제.
git svn clone [svn 저장소 url] –no-metadata -A authors.transform.txt -stdlayout ~/temp
-> svn 저장소안에 있는 내용을 /temp 디렉토리 하부에 복제합니다. -A authors.transform.txt 파일을 참조 하여 로그 작성자와 커밋터를 변환 시킵니다.
svn commit 로그는 다 깨진다.
3. svn:ignore 설정을 .gitignore로 변환 하기
1) cd /temp
2) git svn show-ignore > .gitignore
3) git add .gitignore
만약 2) 에서 오류가 발생하면 $git svn show-ignore -i trunk > .gitignore 명령어를 이용한다.
4. github에 빈 저장소를 만들고 git툴을 통해 연계된 빈 로컬 저장소를 생성한다.
mkdir gitrepos
cd gitrepos
git clone git://블라블라블라~/블라.git
5. github에 연동된 빈 저장소에 3단계에서 만든 디렉토리를 덮어 씌운다.
덮어 씌운후에 github로 add, push를 하면 빈 저장소에 추가된 파일과 로그가 같이 추가 됨.
단, git svn에서 clone 명령어를 통해 받을떄 부터 한글이 깨짐.
참고 url
http://john.albin.net/git/convert-subversion-to-git
http://john.albin.net/git/git-svn-migrate
[출처] - http://blog.fastcatsearch.org/?p=203
'Carpe Programming > server' 카테고리의 다른 글
[sha256] 암호화 (0) | 2013.08.28 |
---|---|
[svn] window에서 설치 및 운영 (0) | 2013.07.04 |
[IIS] asp upload 용량 설정 (0) | 2013.06.21 |
[IIS] 사용자 error page 설정 (0) | 2013.06.20 |
[jeus] webtob 설치 및 jeus 연동 (0) | 2012.09.06 |