본 문서는 Git Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.
Section 36.5: svn2git 을 이용하여 SVN 에서 Git 으로 이주(migrate) 하기
svn2git 은 git 의 native SVN 지원 기능인 git-svn 에 대한 ruby wrapper 로써, Subversion 에서 Git 으로의 project 이주 (migrate) 및 history 유지 (trunk, tags, 그리고 branches 의 history 를 포함) 를 도와주는 도구이다.
예제
표준 구조 (예: 저장소의 root 레벨에 branches, tags, 그리고 trunk 가 존재하는) 를 사용하는 svn 저장소를 이주 (migrate) 시키는 예제:
$ svn2git http://svn.example.com/path/to/repo
표준 구조를 따르지 않는 svn 저장소를 이주 (migrate) 시키는 예제:
$ svn2git http://svn.example.com/path/to/repo --trunk trunk-dir --tags tags-dir --branches branches-dir
만약 branches, tags 나 trunk 를 이주시키지 않기를 원한다면 (혹은 해당 내용이 존재하지 않는다면) --notrunk
, -- nobranches
, 그리고 --notags
와 같은 옵션을 사용할 수 있다.
예를 들어, $ svn2git http://svn.example.com/path/to/repo --trunk trunk-dir --notags --nobranches
와 같이 실행한다면 trunk 에 대한 history 만 옮겨질 것이다.
새로운 저장소에서 필요로하는 저장공간을 최소화하기 위하여, 추가될 필요가 없지만 어쩌다 추가되었던 파일이나 디렉토리를 (예:빌드 디렉토리나 archive 등) 아래와 같이 제외시킬 수도 있다:
$ svn2git http://svn.example.com/path/to/repo --exclude build --exclude '.*\.zip$'
이주(migration) 작업 이후의 최직화
새로이 생성된 git 저장소에 이미 수천개의 커밋들 (혹은 그 이상) 이 존재하는 상황이라면, 원격 저장소에 push 하기 전에 사용되는 저장 공간을 최소화하길 원할 수 있을 것이다. 그러한 경우에는 아래와 같은 명령어를 사용할 수 있다:
$ git gc --aggressive
주의: 위 명령어는 대규모 저장소 (수만개의 커밋 혹은 수백 메가바이트 이상의 history를 가지는) 에서 실행시 몇시간 까지도 걸릴 수 있다.
[출처] https://books.goalkicker.com/GitBook/ (CC BY-SA)
'번역 > Git Notes for Professionals' 카테고리의 다른 글
38.1: Merge conflict 수동 해결하기 (0) | 2020.02.10 |
---|---|
37.1: git show 개요 (0) | 2020.02.10 |
36.4: Team Foundation Version Control (TFVC) 에서 Git 으로 이주(migrate) 하기 (0) | 2020.02.07 |
36.3: Mercurial 에서 Git 으로 이주(migrate) 하기 (0) | 2020.02.07 |
36.2: Atlassian 의 변환 툴을 이용하여 SVN 에서 Git 으로 이주(migrate) 하기 (0) | 2020.02.06 |