[펌글] Subversion 사용자를 위한 Git 소개

By | 9월 17, 2011

- 출처 : http://toby.epril.com/?p=703 -

Git을 본격적으로 사용한지 이제 일년이 되간다. 사실 본격적이라고 말하기가 조금 모자라긴하다. 고객을 상대하는 정규 프로젝트에는 아직 적용을 해본적이 없기 때문이다. 주로 개인프로젝트와 책에 사용하는 예제 등을 관리하는 용도로 주로 사용하고 있다. 그래도 작업량이 많고 빈번하게 변경이 되는 프로젝트 들이라 Git의 재미를 느끼기에는 충분하다.

기존에 SVN으로 관리해오던 프로젝트들을 로컬에서는 Git으로 사용하고 중앙 리포지토리에는 SVN을 이용해서 사용하는 짬뽕식의 방법을 쓰는 것도 유용해 보인다. 일부 JBoss나 Apache의 프로젝트를 받아보면, 리포지토리는 SVN으로 되어있지만 개발자들의 로컬머신에서는 Git을 쓰고 있는 흔적들이 보인다. .gitignore 파일이 보이면 뻔하지.

Git을 비슷한 DSCM인 Mercurial보다 더 낫다고 생각하는 개발자들이 자주 제시하는 근거는 바로 기존 또는 강제된 SVN환경에 별 문제없이 바로 적용시킬 수 있는 git-svn기능이다. 어짜피 Git은 중앙 리포지토리의 존재 조차도 필요없으니, 백업이나 CI용으로 사용할 때 Git server를 사용하건, SVN을 사용하건 별 차이는 없을지도 모르겠다.

그럼에도 Git의 본격적인 사용을 불편하게 하는 것은 자바 개발자로서 아직 편리한 사용할만한 IDE환경에 결합된 툴이 없기 때문이다. 초기에 Git을 지원하는 이클립스 플러그인을 써봤을 때는 크게 실망이었다. 설치하자마자 쏟아져 나오는 각종 오류들에 놀랐고, 제대로 개발이 진행되고 있는지 아닌지도 모를 프로젝트의 상태도 마찬가지였다. Subclipse가 거의 유일한 SVN 플러그인이던 시절 SVN을 접고 다시 CVS로 갈까하는 충동이 자주 있었던 것 못지 않게, Git을 당장 쓰기는 좀 무리라고 생각하게 만든 것이 바로 편리한 툴의 부재이다.

물론 Git의 Linux의 커널개발에 적합한 툴로 만들어졌고, 주로 커맨드라인에서 사용하고, C로 된 라이브러리만 공식지원하기 때문에 자바IDE에 빠르게 완성도 높은 플러그인이 만들어질 것을 기대하기는 무리이다. 게다가 사용방법이 유사한 CVS,SVN과는 달리 로컬 리포지토리와 브랜치, Pull, Push의 개념이 기본적인 이클립스 Team기능의 기본적인 틀과도 다르다는 점도 쉽게 툴을 기대하지 못하게 하는 한가지 이유이다.

그동안은 어쩔 수 없이 이클립스에서 작업은 하고, 커맨드 라인에서 git 명령을 직접 입력해서 작업을 해야 했다. 마치 초창기에 Maven을 쓰때 같은데, 문제는 Maven 초기 eclipse플러그인과 같이 어설프게 나마 eclipse로 설정을 만들어주는 기능도 없으니, IDE에서 파일의 변경상태를 파악하고 빠르게 commit 등을 할 수 없다는 것은 파일의 규모가 커지고, 작업량이 늘어나면 답답한 일이 아닐 수 없었다.

그러던 중에 최근에 Aptana를 사용하면서 Git이 기본 SCM에 포함된 것을 보고, 이클립스에 다시 Git플러그인을 설치해봤다. JGit이라는 자바로 만든 Git의 구현체와 플러그인이 결합한 것이다. 며칠 사용한 결과 매우 안정적이고(적어도 알 수 없는 예외가 마구 떨어지지는 않았으니…), 그럭저럭 편리하게 쓸만하다는 결론을 내렸다. Git의 모든 기능(command만 수백가지니)을 다 사용할 수는 없지만, pull/push등을 자유롭게 할 수 있고, branch의 생성이나 전환도 자유롭다. 아직 merge를 직접 하는 방법은 찾지를 못했지만, 그 정도는 커맨드 라인에서 작업하는 것도 문제는 아닐 것이다.

 

어쨌든 JGit에 대한 만족도가 높아서 이제 본격적인 실무 프로젝트에 적용을 해보려고 결심을 했다. 나처럼 이런 저런 기술적인 시도를 좋아하는 사람에게는 편리한 로컬 branch 기능과 강력한 merge기능이 필수다.

 

참, 얘기가 샜는데, 그래서 Git에 대한 자료를 좀 더 모으다가 Subversion에 익숙한 개발자를 위해서 Subversion과 비교해서 Git의 기능를 설명한 좋은 글을 하나 발견했다. 1:1로 다 대응될 수는 없겠지만 그래도 기본적인 개념을 빠르게 이해하는데는 도움이 되리라 생각된다.

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments