포시코딩

SVN에서 Git으로 Migration하고 Git Server 등록까지 본문

Git

SVN에서 Git으로 Migration하고 Git Server 등록까지

포시 2023. 2. 5. 11:39
728x90

개요

예전 회사에서 SVN -> Git 으로 migration 하면서 만든 메뉴얼인데

문서 정리하다 발견해서 공유를 위해 포스팅

 

초기설정

  • server

SVN Server에 이미 사용중이던 repository가 있다고 가정한다.

repository -> 'Target_repo'

 

Users 목록

 

SVN Server의 포트번호 확인 방법

 

  • Local Computer

Java와 Git이 깔려있어야 한다. 

(위 사진은 예제 컴퓨터의 Java와 Git 버전 상태)

 

Git 2.20.1 버전으로 진행중 버그 발견 -> 2.19.2 버전으로 진행할 것!
https://github.com/git-for-windows/git/releases
다른 버전일 경우 '앱 및 기능'에서 git 제거 후 위 링크에서 다운받고 진행한다.

 

경로와 폴더 이름은 상관 없지만

예제에선 c 드라이브에 svn-git 폴더를 만들어 진행

 

SVN Committer를 Git에 맞게 변환

https://bitbucket.org/atlassian/svn-migration-scripts

해당 링크에서 'svn-migration-scripts.jar' 파일 다운

 

예전엔 들어가면 jar 파일이 있어서 그것만 다운 받아 진행했는데
업데이트된건지 보이지 않음.. 
대신 git clone 해서 사용하는 형식으로 바뀐거 같다. 
들어가서 밑에 예제를 읽어보면 사용법이 나와있는듯?

 

SVN에서 쓰는 Users의 목록을 Git에서는 '유저이름 <이메일>'처럼 바꿔줘야 한다.

우선, SVN Server를 통해 migration 할 repository의 user 목록을 받아오자.

 

Java -jar svn-migration-scripts.jar authors {SVN Server Repository 주소} {user_id} {user_pw} > authors.txt

user_id, user_pw는 해당 repository의 사용권한자 id, pw를 입력하면 된다.

 

SVN Server Repository 주소는 아래와 같다.

SVN Server Repository 주소는 위와 같다.

 

ex) https://192.168.0.142:443/svn/Target_repo

이하 {SVN주소}라 칭한다.

 

엔터 치면 아래 메시지와 함께 authors.txt가 생성된다.

 

Authors.txt 파일 연 모습

위에서 봤던 Users에 대해 모두 적혀있는걸 확인할 수 있다.

아래와 같이 변경해주자

 

Committer 중 삭제된 user name이 있으면 오류가 발생하니 주의

 

SVN Server의 repository를 clone하여 Git local repository로 만들기

git svn clone –authors-file=authors.txt –no-metadata {SVN주소}

입력 후 엔터

* ( --no-metadata 옵션을 주면 svn의 메타데이터를 저장하지 않는다.)

 

Certificate problem.

(R)eject, accept (t)emporarily or accept (p)ermanently?

-> 인증서 문제. 

거절, 일시적 수락, 영구적 수락

 

t를 입력을 통해 일시적으로 수락하여 진행한다.

 

***

이 과정에서 버그가 발생할 수 있는데

git svn clone을 한 후에 

여기서 진행이 안되는 경우다. 

해당 프로젝트 이름으로 폴더가 만들어지고 그 안에 .git 폴더까지는 만들어지지만

그 이후 다른 부분은 복사가 안되는데

위에서 설명했듯이 Git 2.19.2 버전으로 하면 해결된다.

***

 

t를 입력 엔터 후 버그가 발생하지 않았다면

위와 같이 나온다.

(만약 일정시간 미입력으로 세선이 종료되면 만들어진 repo 이름의 폴더를 지운 후

4번 SVN Server의 repository를 clone하여 Git local repository로 만들기

처음부터 다시 진행)

 

중간에 사용자에 대한 name, pw를 물어볼 수 있는데

repository에 등록된 user 정보를 입력하고 진행하면 된다. (위 사진 참고)

 

Repository의 이름인 Target_repo로 폴더가 만들어졌고

그 안에 .git 폴더와 소스가 migration 되어 저장된 것을 볼 수 있다.

 

Migration 된 git local repository에서 svn 관련 내용 제거하기

이제 svn 관련 정보는 필요 없으니 정리 해야한다.

.git 폴더로 이동

 

svn에 대한 정보는 svn 폴더와 config 파일에 담겨있다.

svn 폴더는 삭제, config 파일은 열어서 안에 내용중 svn 관련 정보를 직접 제거해주어야 한다.

 

git local repository를 git server repository로 remote 후 push 하기

Git Server로는 Bonobo Git Server를 이용했다.

 

Migrated_repo란 이름으로 repository를 생성한 후

상단 Git URL에서 localhost 부분에 Server의 ip를 입력한

http://192.168.0.142/Bonobo.Git.Server/Migrated_repo.git 을 이하 {Git주소}라 한다.

 

만들어진 Git Local repository로 이동 후

 

git remote add origin http://192.168.0.142/Bonobo.Git.Server/Migrated_repo.git

remote를 지정해준다. (SVN 주소와 달리 https가 아니라 http인 점을 주의)

 

git remote -v 로 확인

 

이후 git push를 입력하면 아래와 같이 나오는데

빈 repository라 branch가 하나도 없다는 뜻이니 하라는대로 다시 입력하면 된다.

git push –set-upstream origin master

 

성공적으로 push를 진행한 모습

 

결과 확인

Git Server에서도 잘 올라간 것을 볼 수 있다.

 

 

* 19년도 기준으로 작성된걸 정리한 내용이라 현재 버전과 보이는게 다를 수 있습니다.

728x90