우선, Lucy는 원생 시절 gitHub를 협업도구로 사용했다.
그래서 git의 기초 명령어만 다룰줄 알았는데, 취업을 해서 회사에 와보니 협업툴이 SVN인것
git처럼 터미널을 쓰지 않고, 단순한 연결에 마우스 클릭으로 commit/update만 하다보니 별 충돌만 없다면 쉽게 사용할 수 있었다.
하지만, 어느날 업무 중 SVN에서 Git으로 소스를 이관하는 일을 맡게 된 것.
"SVN 써봤어요? Git 사용해 봤어요?" 라는 질문에 "네, 써봤습니다." 라고 대답했지만 막상 하려니 답답하기만 했다.
Git은 git 홈페이지에서도 다운받을 수 있지만,
Cmder이라는 터미널 툴로도 깃을 설치할 수 있다.
전자정부프레임워크에서 그냥 끌어다 쓴 SVN이었기에 터미널에서 사용법을 몰랐던 루시는 그냥 TortoiseSVN을 설치했는데
터미널에서 왜 svn --version이 안먹히는지 이해를 못했다.
터미널 툴에서도 커맨드로 사용할 수 있는 설정값을 꼭 변경해주어야 한다. 설치시 빨간 체크로 표시했다면 파일 수정 install을 실행하자.
확인할 수 있다.
이제 프로젝트를 실행할 폴더 경로를 찾아가 버전 체크를 하자.
https://bitbucket.org/atlassian/svn-migration-scripts/downloads 에서 jar파일을 다운로드 한다.
java -jar svn-migration-scripts.jar verify
버전을 체크 할 수있다.
Git: ERROR: Unable to determine version.
Subversion: ERROR: Unable to determine version.
이와 같이 나온다면, 뭐든 협업툴이 설치가 안된것이니 확인해서 설치하자.
java -jar svn-migration-scripts.jar authors http://svn.example.com/project {username} {passwd} > authors.txt
{username} 부분과 {passwd} 부분에는 svn 저장소의 사용자이름과 비밀번호가 각각 들어간다.
SVN 당시 사용했던 id/pw를 입력하자 {}안에 넣으면 된다.
authors.txt 파일에는 svn 저장소에 커밋한 사용자 정보가 들어 있는데 이를 git 형식에 맞게 수정해야 한다.
(현재 탈퇴한 사용자라 하더라도 과거 커밋한 사용자라면 목록에 포함되어 있어야 한다.)
aaa = aaa aaa@mycompany.com
bbb = bbb bbb@mycompany.com
이렇게 기존에 svn에 등록한 정보가 나올것이다. 메모장에서 이를
aaa = Lucy obliviat2@naver.com
형식으로 바꿔준다.
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 등으로 직접 지정해줘야 한다.
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)|작성자 루시