git svn 이용(SVN Repository를 Git으로 Migration)
1. SVN Repository Clone
# git svn clone <Svn Repository Base URI> --trunk=<Trunk Path> --branches=<Branches Path> --tags=<Tags Path>
실제 동작은 SVN respotiroy에 대하여 "git svn init"과 "git svn fetch"를 순서대로 실행함.
User Information에 대한 적용을 같이 할 경우 1.3 참고
주의 : git-svn은 external은 supporting하지 않음.
1.1 <SVN Repository URI>
Base SVN Respository 경로
1.2 -T<Trunk Path> -b<Branches Path> -t<Tags Path>(or --trunk=<trunk path> --branches=<branch path> --tags=<tags path>)
Base Respository에서 각 Clone할 경로 지정, 필요한 경로를 선택 및 지정하면 되며 "
-s(--stdlaylout)"를 옵션을 이용할 경우 표준 형식을 이용할 경우 사용할 수 있음.
ex) git svn clone <SVN Repository Base URI> -svn
주의) Trunk, Branch, Tag 지정 없이 Standard Layout이 아닌 Repository를 Clone할 경우 오랜 시간동안 Log들만 가져오고 실제 Repository는 Empty가 되는 경우가 있음.
1.3 User 파일 적용
SVN의 user ID와 git에서 사용되는 user information을 matching하기 위해 user파일을 생성하고 이를 clone시 history에 적용할 수 있다.
# svn log ^/ --xml | grep -P "^<author" | sort -u | \ perl -pe 's/<author>(.*?)<\/author>/$1 = $1<$1\@compant\.com>/' > users.txt
아래와 같이 하여 history의 "user"라는 user ID를 "user = user <user@company.com>" 형식으로 일괄 변경 시켜 clone시 적용 할 수 있다.
# git svn clone <Svn Repository Base URI> -T <Trunk Path>-b <Branches Path> -t <Tags Path> --authors-file=user.txt
2. git에서 Repository 확인
# git branch -a
3. Git에서 SVN Repository로 Commit 수행하기
3.1 Git Local Commit
# git commit -am <Description>
3.2 SVN Server로 Push(여러개의 Local Commit을 서버로 Push)
# git svn dcommit
4. Git에서 SVN Repository의 변경사항 받아오기
# git svn rebase
출처 : https://git-scm.com/book/ko/v1/Git%EC%9C%BC%EB%A1%9C-%EC%9D%B4%EC%A0%84%ED%95%98%EA%B8%B0-Git%EA%B3%BC-Subversion