글

라벨이 subgit인 게시물 표시

SubGit 으로 만든 git 저장소에 svn 저장소의 변경 사항이 적용되지 않을 때 해결 방법

SubGit 은 git 를 이용해서 svn 저장소에 접근할 수 있는 기능을 제공하는 아주 강력한 도구이다. 하지만 가끔 svn 저장소에는 분명히 변경 사항이 있는데, git 에서는 보이지 않는 경우가 있다. 처음에는 svn 을 git 로 바꾸는 작업을 처음부터 다시 했었는데, svn 저장소가 매우 크다면 git 저장소로 바꾸는데 시간이 꽤 많이 걸린다. 그래서 좀 더 나은 방법이 없을까 생각해보다 찾아낸 것이 SubGit 의 install 명령을 다시 수행하는 것이다. 이미 있는 git 저장소에 subgit install 을 다시 수행하면 git 저장소에 아직 적용되지 않은 변경 사항만을 svn 저장소로부터 가져온다. 따라서 훨씬 시간이 줄어든다. 예를 들어, git 저장소가 ~/git/repo.git 이라면, subgit install ~/git/repo.git  을 하면, 다시 올바르게 작동한다. // ---- 2014/12/20 subgit 과 git 저장소를 원격 서버에 설치해서 쓰고 있는데, subgit 데몬이 시간이 좀 지나면 저절로 죽었다. 이게 꽤 빈번한터라, 매번 서버에 접속해서 subgit install 을 수행야 했는데, 정말 귀찮은 작업이었다. 그래서 더 좋은 방법이 있지 않을까해서 개발사에 물어보았다. 개발사의 설명은 이랬다. 일단 subgit 데몬이 죽는 이유는 로그 분석에 따르면 커널이 죽이는 것이라고 했다. 해결 방법으로는 메모리를 늘리거나 스왑을 설정하라라는 것이었는데, 관리자가 아닌 서버에 더부살이 하는 입장에서 그렇게 하기에는 힘들었다. 그리고 svn 저장소로부터 git 저장소로 변경사항들을 가져오려면 이를 위한 데몬이 실행되어야 하는데, 문제는 이 데몬이 자동으로 실행되지 않는다는 것이다. 데몬이 실행되는 경우는 두 경우라고 한다. 하나는 subgit install 이고, 다른 하나는 git push 이다. git pull 은 해당되지 않는다. 따라서 아무리 git pull 을 하더라도...

내 맘대로 비교하기: 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 서버 저장소. ...

svn 을 git 로 바꾸기

기존의 svn 저장소를 git 에서 이용하는 방법 중의 가장 대표적인 것은 git-svn 일 것이다. 그런데 사정상 git-svn 을 사용할 수 없어서, svn 저장소를 git 저장소로 바꾸는 방법을 찾아 보았다. 일단, 검색된 것은  svn2git 였다. 그런데 svn2git 는 ruby 가 있어야 했다. ruby 깔기도 귀찮고 해서 다른 방법을 찾아 보았는데,  SubGit 라는 것이 있었다. SubGit 은 Java 1.5 이상이 있어야 했지만, 다행히 Java7 이 깔려 있었다. 그래서 다운로드 페이지의 QuickStart 에 설명되어 있는 대로 바로 시도. 오~~~ 잘 된다. 이렇게 하면 자동으로 svn 저장소와 싱크가 된다고 한다. 하지만 나는 굳이 svn 저장소와 싱크를 원하지 않았다. 그래서 싱크하지 않는 방법은 없나 찾아보니, 역시나 있다. One-time import . 저장소를 바꾼 후에 git log 를 통해서 commit log 를 살펴봤더니, 작성자는 svn commiter 로 이메일은 commiter_id@local 로 바뀌었다. 이것을 바꾸는 기능은 없나 살펴봤더니, 역시나 있다. 필요로 하는 것은 다들 필요로 하는구나 싶은 순간. import 명령 도움말에 보면 --authors-file 옵션이 있다. 이를 이용하자. FILE 의 형식은 http://www.subgit.com/book-remote/index.html#authors-mapping 여기에서 확인. tag 도 깔끔하게 바뀌는 것을 확인했다. 다만 branch 가 없던 저장소라 branch 는 확인하지 못했지만, 잘 될 거라 믿어 의심치 않는다. 참, SubGit 은 평가용으로 원할 때까지 쓸 수 있지만 등록하라는 메세지가 나온다. 이게 싫다면 등록하면 된다. Free 용은 committer 10명까지, Open Source 용은 제한이 없는 것 같고, 상업용은 용도에 따라 가격이 달라진다. 내게는 어차피 한...