버전관리 시스템(Version Control System) 이란?
버전관리 시스템(VCS, Version Control System)이란 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 불러올 수 있는 시스템을 의미합니다.
VSC를 사용하면 선택한 파일을 이전 상태로 되돌릴 수 있고, 변경 사항을 비교하고, 변경한 사람 및 변경시기를 추적할 수 있습니다. 또한, 파일을 잃어버리거나 잘못 고쳤을 때도 쉽게 복구할 수 있습니다.
VCS의 종류
로컬 버전관리 (Local VCS)
Local VCS
는 간단히 데이터베이스를 사용해서 파일의 변경 정보를 관리하는 시스템입니다.
아주 간단하지만 실수하기 쉽다는 단점이 있습니다.
대표적으로 RCS(Revision control system)
가 있습니다.
중앙집중식 버전관리 (CVCS)
CVCS(Centralized VCS)
는 여러 사람과 함께 작업해서 생기는 문제를 해결하기 위해 개발되었습니다.
서버가 별도로 있고 클라이언트가 중앙 서버에서 파일을 받아서 사용(Checkout)하는 방식입니다.
로컬 VCS보다 관리가 쉽다는 장점이 있지만 중앙 서버에 문제가 발생한다면 치명적이라는 단점이 있습니다.
대표적으로 CVS
, Subversion
, Perforce
가 있습니다.
분산 버전관리 시스템 (DVCS)
DVCS(Distributed VCS)
는 단순히 파일의 마지막 스냅샷을 Checkout 하지 않고 저장소를 히스토리와 더불어 전부 복제합니다.
서버에 문제가 생기면 이 복제물로 다시 작업을 시작할 수 있고 클라이언트 중에서 아무거나 골라도 서버를 복원할 수도 있습니다.
또한 많은 수의 리모트 저장소를 가질 수 있기 때문에 다양한 방법으로 협업할 수 있습니다.
대표적으로 Git
, Mecurial
, Bazaar
, Darcs
가 있습니다.