DS's『 행복합시다 』

Carpe Programming/server

SVN을 덤프해서 git에 올리기

nolite 2013. 10. 22. 10:14

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://chingu94.wordpress.com/2012/06/12/svn%EC%97%90%EC%84%9C-git%EC%9C%BC%EB%A1%9C-%EA%B0%88%EC%95%84%ED%83%80%EA%B8%B0/

http://john.albin.net/git/convert-subversion-to-git

http://john.albin.net/git/git-svn-migrate

 

[출처] - http://blog.fastcatsearch.org/?p=203

 

728x90

'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