형상관리 시스템, SVN & GIT
최근에 소스 형상관리를 위해 써오던 SVN 을 과감히 버리고 GIT 으로 재설치한 적이 있다.
당시 GIT 으로 이전한 가장 큰 목적은 Github, Gitlab 과 같은 오픈소스 기반 Git Repository 서비스를 사용하고 싶었기 때문이다. 사용도가 높은 오픈소스 프로젝트이기 때문에, 이제 막 여러가지 시도를 하고있는 우리 팀에게는 GIT이 더 적합해 보였다.
아래 내용은 이 외에 많이 퍼져있는 SVN 대비 Git이 갖고 있는 차별점에 대한 내용이다.
[SVN은 중앙집중식 버전관리 시스템(Centeralized Version Control System; CVCS) 이다.]
SVN 으로 작업한다면 소스를 중앙 저장소에 Commit하기 전에 대부분의 기능을 완성해 놓고 Commit하는 경우가 대부분이다. SVN 에서의 Commit은 중앙 저장소에 내가 만든 기능을 바로 올려서 다른 팀원들에게 해당 소스를 공개한다는 뜻이기 때문이다. 혹시나 Commit한 내용에 오류가 있다면 다른 개발자에게도 그 오류가 바로 나타나게 된다.
또다른 점은, 중앙 저장소에 문제가 생긴다면(서버가 다운된다면) 다시 복구가 될때까지 다른사람과의 협업이나 버전관리도 어려워지게 된다.
[Git은 분산 버전 관리 시스템(Distributed Version Control System; DVCS) 이다.]
개발자는 로컬 저장소에서 원할때마다 Commit을 진행할 수 있다. 이를 중앙저장소에 바로 올리는 것이 아니기 때문이다. 마음대로 로컬에서 Commit하다가 자신이 원하는 순간에 서버에 변경내역(Commit history) 을 보낼 수 있기 때문에 잘만 활용한다면 버전관리에 아주 유연하게 대처할 수 있다는 것이 장점이다.
Git 은 개발자와 서버의 저장소가 독립적으로 관리 가능하기때문에, 중앙저장소에 문제가 생겨도 클라이언트는 버전관리를 계속해서 진행할 수 있다.
[참고]