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

3 min read

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

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

누구에게 필요한가

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

버전 관리 시스템이란

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

사용해야되는 이유

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

버전 관리 시스템 추천

아래에 버전 관리 시스템에 대해 나열해 두었지만 선택하려는 당신에게 딱 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에 대한 자세한 정보는 아래 참고에 나열된 사이트를 방문하면 잘 정리되어있다.
더불어 과거에 포스팅한 "이슈 트래킹 시스템"도 읽어보면 좋지 않을까 싶다.

참고



관심 있을 만한 글

  • 소프트웨어 개발자에게 글꼴은 가독성을 위해서 필수 설정 항목이다. 툴의 초기 설정된 글꼴이 나쁜건 아니지만 본인에게 맞는 글꼴 선택하나로 모니터로 들어 갈듯한 당신의 자라 목 자세를 조금은 해소해 줄 것이다. "왜 글꼴이 중요하냐?"라고 생각되면 옆 개발자에게 물어봐라. (간략하게 이런 단어가 나올 것이다. "가독성"…
  • Windows 10에서 hosts 파일을 수정하려고 하면 권한이 없다는 오류 메시지를 보실 수 있습니다. Windows 10에서 보안 설정이 강화되어 발생하는 이슈로 설정을 바꾸는 것보다 텍스트 에디터를 "관리자 권한으로 실행"하여 수정하시면 됩니다. hosts 파일 수정하기 메모장을 "관리자 권한으로 실…
  • "프로그래밍 언어를 웹에서 실행하고 공유도 가능한 서비스 소개"를 포스팅했었는데 실행 결과는 필요 없고 코드만 공유하고 싶은 분들을 위한 사이트를 소개한다. 간단하거나 1개 파일의 코드라면 아래 사이트를 이용해보는 것도 좋은 선택일거 같다. Github Gists홈페이지: https://gist.github.com 공…
  • 개발자, 학생, 프로그램 언어를 배우는 분 모두에게 유용한 사이트를 소개하고자 한다. 가끔 간단한 코드를 실행해보고 싶은데, 실행 환경이 안되는 곳에 있거나 환경을 구성하는게 귀찮을때가 있는데, 그런 경험이 있다면 주목해보자. 현존하는 거의 모든 언어를 온라인에서 코드를 작성하고 실행까지 가능하다. Ideone 홈페…
  • 새로운 웹 서비스를 만들때 다른 곳은 어떤 아키텍처, 어떤 프로그래밍 언어를 사용했는지 궁금하고 왜 그런 선택을 했는지 알고 싶을때가 있죠. 혹은 프로그래밍 언어를 공부하고 싶은데 어떤 언어를 선택해야 될지 고민되실때 생각하는 서비스 혹은 업체가 사용하는 언어를 보고 시작해보는 것도 나쁘지 않을거 같습니다. 아래에 …
  • 프로그래밍 언어의 연관성을 시각화한 페이지를 소개한다. Github Pages에서 서비스되고 있으므로 사용된 데이터도 Github에서 확인 가능하다. 이렇게 수집해서 아름답게 보여주기까지한 개발자에게 감사하다. 소개할 사이트는 2개다. 1. Programming Language Network 사이트: http…
대화 참여하기

댓글 쓰기