Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

우당탕탕 개발일지

[💻TIL 0.1] SVN Branch를 GIT으로 Migration 본문

TIL(Today I Learned)

[💻TIL 0.1] SVN Branch를 GIT으로 Migration

v젼v 2023. 1. 15. 18:22

회사에서 형상관리툴을 SVN->GIT으로 옮기면서 이전에 SVN 에 있던 히스토리 내역을 확인하기 힘들어졌다.

그래서 SVN에 있는 히스토리 내역을 그대로 GIT을 옮기는 작업을 진행했다.

원래 SVN에 있는 모든 소스를 가져오려고 했는데 용량이 너무 커서 필요한 branch 만 골라서 가져오는 방법으로 진행했다.

그때 진행했던 과정들을 기록해보려고 한다. 회사에서 사용하는 주소 등을 가리기 위해 캡쳐 이미지가 부족할 수도 있다.

 


1. GitLab 프로젝트 생성

GitLab에 SVN Branch들을 올릴 빈 프로젝트를 생성한다.

 

2. 작업 폴더 생성

윈도우 탐색기에서 작업할 폴더를 생성한다.

D:\dev\git

3. Git 저장소 생성

작업폴더에서 Git 저장소를 생성한다. (Git이 설치되어 있어야 한다.)

Git Bash Here 클릭
git init 하여 저장소 생성

 

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