우당탕탕 개발일지
[💻TIL 0.1] SVN Branch를 GIT으로 Migration 본문
회사에서 형상관리툴을 SVN->GIT으로 옮기면서 이전에 SVN 에 있던 히스토리 내역을 확인하기 힘들어졌다.
그래서 SVN에 있는 히스토리 내역을 그대로 GIT을 옮기는 작업을 진행했다.
원래 SVN에 있는 모든 소스를 가져오려고 했는데 용량이 너무 커서 필요한 branch 만 골라서 가져오는 방법으로 진행했다.
그때 진행했던 과정들을 기록해보려고 한다. 회사에서 사용하는 주소 등을 가리기 위해 캡쳐 이미지가 부족할 수도 있다.
1. GitLab 프로젝트 생성
GitLab에 SVN Branch들을 올릴 빈 프로젝트를 생성한다.
2. 작업 폴더 생성
윈도우 탐색기에서 작업할 폴더를 생성한다.
D:\dev\git
3. Git 저장소 생성
작업폴더에서 Git 저장소를 생성한다. (Git이 설치되어 있어야 한다.)
4. SVN-GitLab 사용자 정보 매핑
SVN에 있는 History를 GibLab에서 보려면 사용자정보 매핑이 필요하다. 아래 규칙대로 파일 생성하여 .git 있는 위치로 이동한다.
D:\dev\git\user.txt
SVN사용자명 = Git사용자명 <Git메일주소>
tester = tester <tester@gmail.com>
5. PUSH할 원격 저장소 연결
1번에서 생성한 프로젝트를 연결한다.
$ git remote add origin <GitLab Project URL>
$ git config --global user.name "홍길동(tester)"
$ git config --global user.email "tester@gmail.com"
$ git remote -v
origin <GitLab Project URL> (fetch)
origin <GitLab Project URL> (push)
6. SVN Clone을 위한 git config 파일 수정
D:\dev\git\.git\config 파일에 아래 내용 추가 / svn-remote는 여러개 추가할 수 있다.
<> 로 되어 있는 부분은 프로젝트에 맞게 수정한다.
[svn-remote "svn"]
noMetadata = 1
url = <SVN 주소> ex) svn://1.1.1.1/project/trunk
fetch = :refs/remotes/git-svn
[svn-remote "svn2"]
noMetadata = 1
url = <SVN Branch주소> ex)svn://1.1.1.1/project/branches/develop200101
fetch = :refs/remotes/git-svn-<Branch명> ex)fetch = :refs/remotes/git-svn-develop
[svn]
authorsfile = D:/dev/<파일위치>/users.txt
7. SVN → GIT Fetch
//생성한 svn-remote 정보를 가지고 fetch 진행, 데이터 많을수록 시간이 좀 걸림
$ git svn fetch svn2
W: Ignoring error from SVN, path probably does not exist: (160013): Filesystem has no item: 파일 발견되지 않음: 리비전 100, 경로 '/branches/develop_200101'
=> 해당 문구는 경고창으로 무시해도 된다.
git svn fetch를 하면 접근할 수 있는 가장 오래된 버전의 Revision부터 찾는다. 경고 메세지는 가장 오래된 리비전에서 해당 코드를 찾을 수 없어서 발생한다.
8. Remote branch → local branch로 변경
//현재 생성되어 있는 branch 확인
$ git branch -a
* master
remotes/git-svn-develop
//원격브랜치로 로컬브랜치 생성
$ git checkout -b {생성할 로컬 branch명} remotes/{원격 branch명}
ex) git checkout -b dev_230101 remotes/git-svn-develop
//생성한 로컬브랜치 확인
$ git branch -a
* dev_230101
master
9. 생성한 Local Branch PUSH
$ git push origin {생성한 로컬 branch명}
ex) git push origin dev_230101
10. Branch 생성 확인
GitLab 사이트에 들어가서 생성한 로컬 branch 명으로 확인한다.
처음에 해당 작업을 전달 받았을 때 SVN History 내역을 어떻게 가지고 오나 생각했는데 찾아보니 Git에서 SVN Mig를 지원해주고 있었다. 방식을 몰라서 헤매긴 했지만 성공하니 뿌듯했다.
'TIL(Today I Learned)' 카테고리의 다른 글
[💻TIL 1] Kubernetes Version 관련 (0) | 2023.02.02 |
---|---|
TIL 0 - 기록 시작 (0) | 2023.01.15 |