버전 관리란?
파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템
로컬 버전 관리
아주 간단한 데이터베이스를 사용하여 파일의 변경 정보를 관리하는 방법으로,
대표적인 VCS 도구는 RCS(Revision Control System)이 있다.
RCS(Revision Control System)
기본적으로 Patch Set(파일에서 변경되는 부분)을 관리한다. Patch Set은 특별한 형식의 파일로 저장한다. 그리고 일련의 Patch Set을 적용해서 모든 파일을 특정 시점으로 되돌릴 수 있다.
중앙집중식 버전 관리(CVCS)
다른 개발자와 함께 작업해야 할 때, 생기는 문제를 해결하기 위해 개발된 버전 관리 시스템
CVS, Subversion, Perfocre 같은 시스템은 파일을 관리하는 서버가 별도로 있고 클라이언트는 중앙 서버에서 파일을 받아서 사용한다.
로컬 버전 관리 VS 중앙집중식 버전 관리
중앙집중식 버전 관리의 장점
- 누가 무엇을 하고 있는지 알 수 있다.
- 모든 클라이언트의 로컬 데이터베이스를 관리하는 것보다 VCS 하나를 관리하기가 훨씬 쉽다.
중앙집중식 버전 관리의 단점
- 중앙 서버에서 문제가 발생하면, 문제를 해결하기 전까지 다른 사람과 협업할 수 없고 사람들이 하는 일을 백업할 방법도 없다.
- 중앙 데이터베이스가 있는 하드디스크에 문제가 생기면 프로젝트의 모든 히스토리를 잃는다.
분산 버전 관리 시스템
- Git, Mecurial, Bazaar, Darcs 같은 DVCS에서의 클라이언트는 단순히 파일의 마지막 스냅샷을 체크아웃하지 않는다.
- 저장소를 히스토리와 더불어 전부 복제한다.
- 서버에 문제가 생기면 해당 복제물로 다시 작업을 할 수 있다.
- 대부분의 DVCS 환경에서는 리모트 저장소가 존재한다. 따라서, 동시에 다양한 그룹과 다양한 방법으로 협업할 수 있다.
- 계층 모델 같은 중앙집중식 시스템으로는 할 수 없는 워크플로를 다양하게 사용할 수 있다.
참고페이지
Git - 시작하기