GIT과 SVN의 차이점
http://rojhw.tistory.com/27?category=618906
아직까지 회사에서 SVN으로 프로젝트를 하고 있는데, 더 이상 Git으로 넘어가는 것을 미루지 말자 생각하여 Git에 대한 정보를 천천히 얻고 있습니다.
그 첫단계로 왜 Git으로 넘어가야 하는가에 대해서 알아봐야 할 것 같아서 이에 대해 간단히 정리해 보고자 합니다.
(사실상 https://git-scm.com에 있는 내용을 정리한 것이니 자세히 보고 싶으신 분들은 페이지 방문해서 보시길 바랍니다 )
일단 제가 기존에 주로 사용했던 SVN의 특징에 대해 알아보고자 합니다.
SVN은 중앙
집중식 버전 관리 시스템(Centeralized Version Control System; CVCS) 입니다.
CVCS에서는 버전 관리되는 모든 파일을 저장하는 하나의 서버와, 이 중앙 서버에서 파일들을 가져오는(checkout) 다수의 클라이언트가 존재 합니다. (SVN에서 프로젝트를 Checkout받아 프로젝트를 로컬에 가져오고... 이를 수정하고 커밋하면 다시 서버에 저장되는...)
이러한 CVCS는 단점이 하나 있는데 중앙 서버가 잘못되면 모든 것이 잘못된다는 점 입니다. 만약에 서버가 다운될 경우, 서버가 다시 복구 될 때까지 다른사람과의 협업이나, 진행 중이던 버전관리도 어려워지게 됩니다. 프로젝트에 대한 모든 이력을 중앙 서버 한 곳에서만 관리하기 때문에 이러한 단점은 피할 수 없는 것으로 보입니다.
이러한 문제를 해결하기 위해 개발 된 버전관리 시스템이
분산 버전 관리 시스템(Distributed Version Control System; DVCS) 입니다.
대표적으로 Git, Mecurial, Bazaar, Darcs등이 있다고 합니다. (저는 Git말고 들어본적도 없네요;;)
DVCS에서는 클라이언트가 파일들의 마지막 스냅샷을 가져오는 대신 저장소(Repository)를 통째로 복제합니다. 이는 서버에 문제가 생기면 모든 버전관리 작업이 All Stop되는 CVCS와 달리, 클라이언트의 내용을 서버에 복사하면 서버를 복구 할 수 있다고 합니다. 체크아웃 할 때마다 전체 백업이 일어나는 셈이지요.
게다가 대부분의 DVCS에서는 다수의 원격 저장소(remote repository)를 갖는 것이 가능하기 때문에 동시에 여러 그룹과 여러 방법으로 함께 작업할 수 있다고 합니다. 이로 인해 CVCS에서는 할 수 없는 다양한 작업 방식 들을 사용해 볼 수 있다고 합니다.
GIT에 대한 장점은 명확하게 파악이 됐으나 실제로 SVN으로 프로젝트를 진행 하면서 서버 문제로 생겨 작업이 중단되어 본적이 없어서 , 왜 궂이 새로운 형상관리 툴을 이용해야하나 의문이 들기도 하네요.;;
일단 이상으로 GIT관련 첫번째 포스팅을 마치겠습니다.