버전 관리 시스템 추천(Git and Mercurial)


버전 관리, 형상 관리, 소스 코드 관리등 이름이 무엇이든 상관은 없다.
당신의 팀에서 사용하고 있다면 다른건 몰라도 코드를 관리하고 있는 개발팀이다.

지금이라도 버전 관리를 도입하기 위해 알아보고 있는 분들을 위해 간단한 정리를 해본다.

누구에게 필요한가

  • 소스 코드를 작성 혹은 관리하는 모든 개발자(이유 없음 무조건 사용)
  • 파일에 대한 변경 이력 관리가 필요한 사람(디자이너, 기획자 등등)

버전 관리 시스템이란

코드의 변경 사항을 저장하여 변경 이력 및 작업자 추적이 가능하고, 과거 코드로 쉽게 변경 할수 있게 도와준다.

사용해야되는 이유

  • 소스 백업이 편하다.
  • 빌드 후 버그 발생 시 빌드 이전 소스로 복구가 편하다.
  • 다수 작업자 혹은 다른 장소에서의 소스 동기화가 편하다.
  • 동일 소스에서 동시에 다른 프로젝트가 진행 될때 소스 병합이 편하다.
  • 어느 시점에 누가 무슨 이유로 소스를 변경했는지 확인이 편하다

버전 관리 시스템 추천

아래에 버전 관리 시스템에 대해 나열해 두었지만 선택하려는 당신에게 딱 2개의 시스템을 추천한다.
다른거 찾아봐야 글만 봐서는 이해하기 힘들고 장단점 찾아봐도 결국은 머리만 아프다.

  • Git
    • 분산 버전 관리를 배우고 싶은 자 (패키지가 컴팩트하여 확장 설정하면서 자연스럽게 배울수 있을지도)
    • Github에서 소스 코드 좀 검색해본 자
    • 버전 관리 시스템을 직접 선택하기 어려운 자 (대세를 따라서 일단 시작해보자.)
  • Mercurial
    • 버전 관리 시스템을 처음 도입하려는 자 (윈도우 GUI가 Git보다 잘되어 있다.)
    • SVN 사용하고 있는 소스 코드를 변경하고 싶은 자
    • Git 사용하기 싫은 자
Git, Mercurial 2개를 선택한 이유는 무료이고, 굳이 분산 저장소를 안쓸 이유도 없어서다.

Git vs. Mercurial

Git Mercurial
라이센스 GNU GPL GNU GPL
구현 언어 C, Bourne Shell, Perl Python (Binary diff만 C로 구현)
변경 이력 모델 스냅샷(Snapshot) 패치(Patch)
브랜치 병합 n-Way 2-Way
  • Git은 수많은 병령 브랜치를 전제로 설계되었고 구현 언어의 특성상 Linux 에서 성능이 더 좋다.
  • Mercurial은 쉽게 사용하는데 중점을 두고 있으며 Windows에서 성능이 더 좋고 패키지에 필요로한 대부분의 확장이 포함되어 추가 설정이 필요없다.

기타 버전 관리 시스템 종류

로컬 전용 무료 / 오픈 소스 SCCS (1972), RCS (1982)
유료 / 상용 PVCS (1985), QVCS (1991)
클라이언트/서버 무료 / 오픈 소스 CVS (1986, 1990 in C), CVSNT (1998), QVCS Enterprise (1998), Subversion (2000)
유료 / 상용 Software Change Manager (1970s), Panvalet (1970s), Endevor (1980s), DSEE (1984), Synergy (1990), ClearCase (1992), CMVC (1994), Visual SourceSafe (1994), Perforce (1995), StarTeam (1995), Integrity (2001), Surround SCM (2002), AccuRev SCM (2002), SourceAnywhere (2003), SourceGear Vault (2003), Team Foundation Server (2005), Rational Team Concert (2008)
분산 무료 / 오픈 소스 GNU arch (2001), Darcs (2002), DCVS (2002), ArX (2003), Monotone (2003), SVK (2003), Codeville (2005), Bazaar (2005), Git (2005), Mercurial (2005), Fossil (2007), Veracity (2010)
유료 / 상용 TeamWare (1990s?), Code Co-op (1997), BitKeeper (1998), Plastic SCM (2006)

마무리하면

모든 시스템이 그러하듯 각각의 철학에 따른 장단점이 있다. 고민하지 말고 어떤 시스템이든 사용해봐라.
위에서 개발 환경에 따른 성능을 잠깐 언급했지만 개인적으로 사용해 본 느낌은 체감하기 쉽지 않았다.
결국 일반적인 사용자 입장에서 두 시스템 모두 좋은 시스템이며 어떤 것을 선택해도 후회하지는 않을 것이다.

버전 관리 혹은 Git, Mercurial에 대한 자세한 정보는 아래 참고에 나열된 사이트를 방문하면 잘 정리되어있다.
더불어 과거에 포스팅한 "이슈 트래킹 시스템"도 읽어보면 좋지 않을까 싶다.

참고