본문 바로가기

Linux

subversion to gitab migration

320x100

참 다양한 방법이 있다.

svn2git / git svn clone / svn checkout 하고 git clone 으로 넘기고

모든 방법을 다 해본것 같다. svn chekout 하려니 에러도 발생 하고 너무 시간 오래 걸린다.

svn2git 도 에러 발생 ㅠ.ㅠ 포기 그래서 기본 방법으로 작업!! git svn clone 으로 하기로..

git svn clone  옵션이 참 많다..

--no-metadata / --trunk=/ --tags=/ --branches=/  -s / --stdlayout 등등....

모르겠다... 어떨때는 .git 폴더만 생기고 전환이 안된다.

내가 성공한 방법이다. 

 

제일 먼저 user 정보가 필요 하다.

svn log -q  https://svn/svn/rep | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u >> /tmp/user.txt

이렇게 하면 /tmp/user.txt 에 정보가 들어간다. 나중에 git 으로 넘길때 user 정보가 그대로 들어간다.

다음은 svn 운영서버에 rep 를 지정해서 clone 해준다.

git svn clone --authors-file=/tmp/user.txt https://svn/svn/rep 

앞서 이야기 한것 처럼 여러가지 옵션이 있는데 난 넣지 않았다. 넣을경우 에러가 발생을 했다.

git svn clone --authors-file=/tmp/user.txt https://svn/svn/rep  명령을 친곳에 rep 폴더가 생기면서 내용이 저장 된다.

저장된 곳에 trunk / tags / branches 등 파일이 생겨 있고 .git 폴더 안에 환경 설정이 저장 된다.

.git/config 이 설정 저장 파일이다.

그런다음 gitlab 으로 넘겨보자.

svn 에서 넘길 프로젝트 이름을 하나 생성 하자.

test 로 만들면 가이드 페이지가 뜨고 거기에 URL 주소가 나와 있는걸 복사 하자.

그리고 아까 git svn clone 해놓은 경로에 가서 

git remote add origin git@svn.svn.com:test/test.git

위 커맨드 입력 아무것도 안뜬다. 경로 지정만 한것 이다.

git push -u origin master 을 입력하자.

# git push -u origin master
Counting objects: 337, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (332/332), done.
Writing objects: 100% (337/337), 428.12 MiB | 11.00 MiB/s, done.
Total 337 (delta 117), reused 0 (delta 0)
remote: Resolving deltas: 100% (117/117), done.
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

정상적으로 작동이 된경우 위와 같이 파일들이 올라간다.

gitlab 가이드 페이지가 해당 파일들로 보이면 끝!!!

 

추가로 svn 서버 운영중인데 새로 업데이트한 파일을 추가 업데이트 하려면??

git svn clone 다운 받은 경로에 다시 가서

git svn fetch
git reset --mixed git-svn
git stash
git push -u origin master

해주면 최신 버전으로 파일들이 추가 된다.

320x100