내 맘대로 비교하기: SubGit vs git-svn

svn 은 그 자체로 훌륭한 VCS 이지만, 로컬에서 패치를 관리해야 하는 순간, 지옥의 나락으로 떨어진다. 이를 해소하기 위한 방법에  git 가 있다.

git 는 자체적으로 svn 저장소에 접근할 수 있는 기능이 있다. 바로 git-svn 이다. 이를 이용하면 svn 클라이언트가 없더라도 git 를 이용해서 svn 저장소를 관리할 수 있다. 그런데 불행히도 내가 주로 사용하는  OS/2 에서는 git-svn 이 제공되지 않고 있다. 이렇다 보니, git-svn 을 대신할 프로그램이 필요했는데, SubGit 이라는 프로그램이 있었다.

예전에는 SubGit 을 이용해서 svn 저장소를 git 저장소로 바꾸는데 이용했었는데, 이번에는 svn 저장소에 지속적으로 접근할 필요가 있었다. git-svn 처럼 SubGit 도 이런 기능을 제공하고 있었다.

그렇다면, git-svn 과 SubGit 중에 어느 것이 더 괜찮을까 ? 각각의 장단점을 간단하게나마 살펴보자.

git-svn


git-svn 은 git 가 대부분의 OS 에서 기본적으로 지원하고 있다. 따라서 별도의 프로그램이 필요없고 svn 저장소를 직접 접근하므로 별도의 저장소가 필요없다는 장점이 있다. 하지만 git-svn 은 기존의 git 명령 체계와는 다른 별도의 git-svn 명령 체계를 써야 한다는 점이 불편한다. 자칫 잘못해서 git-svn 대신 git 명령을 사용하면 로컬 저장소가 엉망이 될 수도 있다.

SubGit


SubGit 을 쓰기 위해서는 Java 1.6 이상이 필요하다. git-svn 과는 달리 별도의 프로그램이 필요하다는 것이 단점일 수 있겠지만, Java 는 이미 기본 프로그램으로 자리잡고 있으므로, 큰 문제는 아니라고 본다. 하지만 더 큰 문제는 git-svn 과는 다르게 SubGit 은 별도의 git 저장소를 만든다는 점이다. 따라서 SubGit 은 두 개의 저장소가 필요하다. 하나는 svn 저장소를 git 형태로 바꾼 git 서버 저장소. 다른 하나는 사용자가 클론한 git 저장소이다. 대신에 이렇게 함으로써 git-svn 과는 달리 단일한 git 명령 체계로 svn 저장소를 접근할 수 있다. git 서버 저장소가 일종의 프록시 역할을 한다고 할 수 있다. 그림을 보면 보다 쉽게 이해할 수 있을 것이다.

출처: http://subgit.com/

결국, 이것이 svn 저장소인지 git 저장소인지 구분할 필요없이 그저 git 명령을 써서 접근하면 되는 것이다. 단점이 장점으로 바뀌는 순간이랄까 ? ^^

commit 갯수가 상당히 많은 svn 프로젝트들의 경우 git 저장소로 변환하는데 꽤 긴 시간이 필요하지만, 일단 변환되고 나면 그 편리함은 이루말할 수 없다. 참고로 MPlayer 같은 경우 거의 10시간 정도 소요되었다. 이는 git-svn 도 마찬가지일 거라 생각된다.

그럼 어느 것이 더 나은 것일까 ? 개인적인 생각으로는 SubGit 이 git-svn 보다 낫다고 본다. Java 라는 별도의 프로그램과 추가적인 git 저장소가 필요하기는 하지만, 별도의 git-svn 명령 체계를 사용하지 않아도 된다는 것은, 이러한 단점들을 일거에 넘어서는 장점이라고 생각한다.

SubGit 에 관심있는 사람들은 SubGit 홈페이지에서 더 자세한 정보를 얻기 바란다.

// ---- 2014/12/27

사용자가 여럿인 경우, SubGit 은 처음에 한 번만 svn 저장소를 git 저장소로 바꾸고, git 저장소를 모든 사용자들이 접근할 수 있기 때문에, 사용자 수에 상관없이 초기에 한 번의 변환 시간이 필요하다. 하지만 git-svn 은 모든 사용자들이 svn 저장소를 자신의 git 저장소로 바꾸어야 하기 때문에, 사용자 수만큼의 초기 변환 시간이 필요하다.

// ----

댓글

이 블로그의 인기 게시물

토렌트: < 왕좌의 게임 > 시즌 1 ~ 시즌 8 완결편 마그넷

토렌트: NGC < 코스모스 > 우리말 더빙 전편(1편~13편) 마그넷

토렌트: < 스타워즈 > Ep.1 ~ Ep.6 마그넷