JUST WRITE

SVN to Git Migration 본문

ETC

SVN to Git Migration

천재보단범재 2021. 9. 21. 19:31
SVN 프로젝트를 GitLab으로 Migration 했던 사항을 정리한 글입니다.
SVN, GitLab 관련 주소는 회사 Repository 주소가 아닌 임의 주소로 변경하였습니다.

 

SVN to Git Migration

authors.txt 파일 생성

  • SVN Repository History 정보까지 가져오기 위해서 SVN 프로젝트 유저 정보를 파일로 정의
  • svn-migration-scripts.jar Library를 활용하여 간단하게 command로 정리
    • svn-migration-scripts.jar 관련 링크
  • authors.txt 파일 생성
    • 내용 규칙 : ${SVN유저} = ${GitLab유저명} <${GitLab유저 Email주소}>
# 작업 서버에 SVN, GIT 등이 설치 되어 있는지 확인
java -jar svn-migration-scripts.jar verify
 
# 작업 서버에 SVN Repository 프로젝트 유저 정보 가져오기
java -jar svn-migration-scripts.jar authors ${SVN_프로젝트_URL} > ${유저 정보 저장하려는 파일명}
 
# 예시
# dataware-bizmeta-module 프로젝트 참여한 유저정보를 authors.txt 파일에 저장
java -jar svn-migration-scripts.jar authors https://localhost/svn/roadmap_project > authors.txt
 
# authors.txt 내용 -> 이메일주소 변경 알맞게 변경필요
# 변경 전
swjeong = swjeong <swjeong@mycompany.com>
 
# 변경 후
swjeong = swjoeng <swjeong@gmail.com>

git svn clone

  • SVN 프로젝트를 checkout 하면서 Git Repository로 구성
  • git svn command -> git에서 제공, git과 SVN 관련 command 제공. 관련 링크
  • GitLab에 올리기 전 Local에 SVN 프로젝트를 Git 프로젝트로 Migration 하기 위한 작업
# 주요 옵션 정리
# --stdlayout => SVN 프로젝트 구조가 표준구조(/trunk, /branches, /tags로만 구성)일 경우 사용
# --no-metadata => SVN 메타데이터(bug report, archive 정보) 안 들고 오는 옵션, git migration만 할 경우 추천
# --authors => 유저 정보 파일 PATH 설정
 
# 기본 포맷
git svn clone ${SVN_프로젝트_URL} --authors-file=${유저정보_파일_PATH} ${받는_프로젝트_폴더}
 
# 예시
git svn clone https://localhost/svn/roadmap_project --stdlayout --no-metadata --authors-file=authors.txt ./roadmap_project
 
roadmap_project 폴더 생성 -> 해당 폴더에 해당 SVN 프로젝트 받아지면서 GIT 프로젝트로 생성

# SVN -> Git으로 변경된 프로젝트 branch 확인
cd ./roadmap_project
git branch -a
 
master
remotes/origin/trunk
-> branch 가 remote/origin/${branch명}으로 들어오는 거 확인

git remote push

  • GitLab 미리 git 프로젝트 생성
  • Migration 한 프로젝트 remote 연결(GitLab) 및 push
# Git 프로젝트 remote(GitLab) 연결
git remote add origin ${GitLab_프로젝트_CLONE_PATH}
 
# 예시
git remote add origin git@gitlab.encore.rnd:projects/roadmap-backend.git
 
# git branch에 따른 push 명령어 만들어주는 command -> 나온 결과 생성
printf "git push origin "; git show-ref | grep refs/remotes | grep -v '@' | grep -v remotes/tags | perl -ne 'print "refs/remotes/$1:refs/heads/$1 " if m!refs/remotes/(.*)!'; echo
 
# 예시 결과
git push origin refs/remotes/origin/origin/trunk:refs/heads/origin/origin/trunk refs/remotes/origin/trunk:refs/heads/origin/trunk

GitLab 프로젝트 설정

  • origin/trunk branch -> master branch로 생성
  • master branch
    • Default branch로 설정
    • protected branch로 설정
    • Allowed to merge, Allowed to push -> Maintainers로 설정

master branch -> default branch
master branch -> proteced branch

 

[참고사이트]

728x90
반응형

'ETC' 카테고리의 다른 글

What is Parquet?  (0) 2022.02.24
Git flow  (0) 2021.10.27
git config  (0) 2021.09.13
git Term(1)  (0) 2021.09.12
What is git?  (0) 2021.09.07
Comments