개발/기타

[Git] git-svn을 이용하여 subversion git로 옮기기

하구루 2017. 2. 25. 16:43

기존 subversion 사용자들 중에 git로 옮기려는 수요가 꽤 많은 것으로 알고 있다.


git를 svn과 비교했을때 가장 큰 장점은 로컬에서도 마음껏 버젼 관리를 할 수 있고,
branch 관리가 subversion에 비해서 월등히 이용이 쉽다.

그리고 Mac사용자들은 subversion GUI툴이 딱히 쏙 맘에 드는 것이 없을 것이다.
git는 source Tree라는 강력한 툴을 무려! 무료로 사용 할수 있다.

하지만 옮기기에는 몇가지 걸림돌이 있다.

일단, git와 subversion은 비슷한듯 다른 면이 많이 있기 때문에,
새로 익히고 공부 해야 한다.
버젼관리 툴의 특성상 사용의 실수로 엄청난 재앙을 몰고 올수도 있기 때문에 익숙하게 사용하지 못하면 큰 위험이 따른다.
이점은 어떤 친절한 능력자 님께서 올려 주신 슬라이드를 보면 조금 쉽게 이해할 수 있을 것이다.
아래 링크를 참조 하기 바란다.



두번째로 subversion에서  지금까지 유지해오던 history의 유지이다.
버젼관리에서 기존 history는 굉장히 많은 의미를 가지기 때문에, 이를 유지 해서 옮겨야 할 것이다.
이 부분은 감사한 git가 모두 처리해 준다.

git-svn이라는 기능을 이용하는 것인데 git에 내장 되어 있다.

사용법은 매우~ 간단하다.

git svn clone {Repository address}

터미널 에서 간단하게 해당 명령을 이용하면 svn에 있는 history와 함께 git를 tree를 구성해 준다. (git가 설치 되고 셋팅되어 있어야한다)
clone이 무엇인지 모른다면 git에 대해 좀더 파악후 진행해보기 바란다.

추가로, 기존 branches나 tags를 포함해서 history를 유지하게 할수 있다.

git svn clone -T {trunk directory name} -b {branches directory name} -t {tags directory name} {Repository address}

위와 같이 trunk, branches, tags의 디렉토리 경로를 Repository 주소로 부터 상대 경로로 위와 같이 해주면 모든 history를 유지한 git tree를 clone할 수 있다.

실행해보면 알겠지만 정말 깔끔하게 정리되어 있는 것을 볼수 있다.

 위 방법으로 clone을 하게 되면 git와 subversion 동시에 적용이 가능하도록 할 수도 있다. 하지만 테스트 결과 그렇게 깔끔하게 subversion에 commit이 되지 안아서 추천하고 싶지는 않은 기능이다.  


반응형