SVN to GIT migration with history

2019. 11. 4. 17:53생활

 

Migration 은 크게 두가지 절차로 진행이 됩니다.
1. git 계정 정보 생성
2. Migration



git 계정 정보 생성


svn 은 id 로 관리되지만, git 은 이름과 email 로 관리되므로 변환이 필요합니다.


  1. 다운로드(https://bitbucket.org/atlassian/svn-migration-scripts/downloads)

    • atlassian 에서 제공하는 Script 툴을 다운로드 합니다.

  2. migration 이 가능하게 시스템이 구성(git, svn, perl 설치 여부)되었는지 검증

    java -jar svn-migration-scripts.jar verify
  3. svn author 정보 추출

    java -jar ~/svn-migration-scripts.jar authors <svn-repo> > authors.txt

    <svn-repo. 는 저장소의 URI 로 외부에 있다면 전체 URL 명시

    java -jar ~/svn-migration-scripts.jar authors https://svn.example.com > authors.txt
  4. 저자 정보 파일 편집. 다음과 같은 형식으로 생성이 된다.  좌측은 id 이고 우측은 full name 과 email 주소이다.

    j.doe = j.doe <j.doe@mycompany.com>
    m.smith = m.smith <m.smith@mycompany.com>

    좌측의 id는 그대로 두고 우측의 full name 과 email 을 사용자에 맞게 수정한다.

    j.doe = John Doe <john.doe@atlassian.com>
    m.smith = Mary Smith <mary.smith@atlassian.com>

 



migration

  1. svn repos 체크아웃. 저장소가 trunk, tags, branches 가 붙는 표준 구조라면 --stdlayout 옵션을 사용한다. <svn-repo> 는 URI 로 명시해야 한다. 

    git svn clone --stdlayout --authors-file=authors.txt <svn-repo>/<project> <git-repo-name>

    svn 저장소의 URI 가 https://svn.example.com 이고 프로젝트가 test-proj 일 경우 다음과 같이 실행한다.

    git svn clone --stdlayout --authors-file=authors.txt https://svn.example.com/test-proj test-proj-git

    저장소가 표준 구조가 아니면 옵션으로 지정해야 한다.

    git svn clone --trunk=/trunk --branches=/branches --branches=/bugfixes --tags=/tags --authors-file=authors.txt https://svn.example.com/test-proj test-proj-git
  2. clean

    java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar clean-git