SVN -> git 이관하기

archymi·2023년 2월 2일
0

우선, Lucy는 원생 시절 gitHub를 협업도구로 사용했다.

그래서 git의 기초 명령어만 다룰줄 알았는데, 취업을 해서 회사에 와보니 협업툴이 SVN인것

git처럼 터미널을 쓰지 않고, 단순한 연결에 마우스 클릭으로 commit/update만 하다보니 별 충돌만 없다면 쉽게 사용할 수 있었다.

하지만, 어느날 업무 중 SVN에서 Git으로 소스를 이관하는 일을 맡게 된 것.

"SVN 써봤어요? Git 사용해 봤어요?" 라는 질문에 "네, 써봤습니다." 라고 대답했지만 막상 하려니 답답하기만 했다.

Git은 git 홈페이지에서도 다운받을 수 있지만,

Cmder이라는 터미널 툴로도 깃을 설치할 수 있다.

전자정부프레임워크에서 그냥 끌어다 쓴 SVN이었기에 터미널에서 사용법을 몰랐던 루시는 그냥 TortoiseSVN을 설치했는데

터미널에서 왜 svn --version이 안먹히는지 이해를 못했다.

터미널 툴에서도 커맨드로 사용할 수 있는 설정값을 꼭 변경해주어야 한다. 설치시 빨간 체크로 표시했다면 파일 수정 install을 실행하자.

확인할 수 있다.

이제 프로젝트를 실행할 폴더 경로를 찾아가 버전 체크를 하자.

  1. 변환 도구 svn-migration-scripts.jar 다운로드

https://bitbucket.org/atlassian/svn-migration-scripts/downloads 에서 jar파일을 다운로드 한다.

  1. 서버의 시스템이 변환이 가능한지 점한다.(이때 JDK나 JRE가 설치되어 있어야 한다고 한다.)

java -jar svn-migration-scripts.jar verify

버전을 체크 할 수있다.

Git: ERROR: Unable to determine version.
Subversion: ERROR: Unable to determine version.
이와 같이 나온다면, 뭐든 협업툴이 설치가 안된것이니 확인해서 설치하자.

  1. svn author 정보 추출(저장소 위치가 http://svn.example.com/project 라고 가정했을 경우)

java -jar svn-migration-scripts.jar authors http://svn.example.com/project {username} {passwd} > authors.txt
{username} 부분과 {passwd} 부분에는 svn 저장소의 사용자이름과 비밀번호가 각각 들어간다.

SVN 당시 사용했던 id/pw를 입력하자 {}안에 넣으면 된다.

  1. authors.txt 파일 편집

authors.txt 파일에는 svn 저장소에 커밋한 사용자 정보가 들어 있는데 이를 git 형식에 맞게 수정해야 한다.

(현재 탈퇴한 사용자라 하더라도 과거 커밋한 사용자라면 목록에 포함되어 있어야 한다.)

aaa = aaa aaa@mycompany.com
bbb = bbb bbb@mycompany.com
이렇게 기존에 svn에 등록한 정보가 나올것이다. 메모장에서 이를

aaa = Lucy obliviat2@naver.com
형식으로 바꿔준다.

  1. svn 저장소 내려받기

git svn clone --stdlayout --authors-file=authors.txt http://svn.example.com/project --username {username} {directory}
{username}은 svn 저장소에 권한이 있는 사용자 이름이고 (SVN 개설자 ?) {directory}는 새로 만들어질 git 저장소의 이름이다.

(생성될 폴더 이름 지정하면 된다.)

이 명령이 제대로 실행되면 {directory}에 해당하는 디렉토리가 생성되고 그 안에 svn저장소의 코드들이 체크아웃 된다.

만일 svn 저장소가 표준 구조(branches, tags, trunk)가 아니라면 --stdlayout 옵션 대신 --trunk=/dir1 --branches=/dir2 -- tags=/dir3 등으로 직접 지정해줘야 한다.

  1. 체크아웃된 디렉토리로 이동하기

cd {directory}
7. clean (svn 저장소와의 관계 끊기)

java -Dfile.encoding=utf-8 -jar ../svn-migration-scripts.jar clean-git --force
8. 이전할 git repository에 push하기

git remote add repositoryName repositoryUrl

완료됨을 확인할 수 있다.

처음 형상관리도구를 사용하여 소스이관을 해보기에, 구글링을 하다가 찾게되어 참조하게 된 사이트

출처: https://lux.cuenet.kr/21 [(주)큐넷] 덕분이었다.
[출처] SVN에서 Git으로 소스 이관하기 (Migrate to Git from SVN)|작성자 루시

0개의 댓글