반응형

버전 관리 시스템(Version Control System)

1. 버전 관리 시스템(Version Control System)이란?

- 버전 관리 시스템이란 문서나 소스코드 등의 변경사항들을 버전별로 저장해 관리하는 시스템이다.

- VCS는 주로 소스코드 관리에 많이 사용되는데 하나의 프로젝트를 다수의 개발자들이 협업을 할 때 사용된다.

- VCS를 사용하게 되면 특정 파일이나 소스코드를 이전 상태로 되돌릴 수 있고, 변경된 사항들을 비교하고 변경한 사람과 변경시기를 알 수 있다.

 

2. VCS의 종류

- 로컬 버전 관리 시스템(Local VCS) : 간단한 데이터베이스를 사용해 파일의 변경정보를 관리하는 시스템이다. 대표적으로 RCS(Revision Control System)라고 부르는 것이 있는데 RCS는 기본적으로 Patch Set(파일에서 변경되는 부분)을 관리한다. 이 Patch Set은 특별한 형식의 파일로 저장하고 일련의 Patch Set을 적용해서 모든 파일을 특정 시점으로 되돌릴 수 있다.

로컬 버전 관리 시스템

- 중앙집중식 버전 관리 시스템(CVCS) : 소프트웨어의 개발 프로젝트를 진행하다 보면 다수의 개발자들이 함께 작업을 해야 하는 경우가 많다. 이때 생기는 문제를 해결하기 위해 중앙집중식 버전 관리 시스템이 개발됐다. CVS, Subversion, Perforce 같은 시스템은 파일을 관리하는 서버가 별도로 있고 클라이언트가 중앙 서버에서 파일을 받아서 사용(Checkout)한다. CVCS 환경은 Local VCS에 비해 장점이 많다. 모두 누가 무엇을 하고 있는지 알 수 있고 관리자는 누가 무엇을 할지 꼼꼼하게 관리할 수 있다. 모든 클라이언트의 로컬 데이터베이스를 관리하는 것보다 VCS 하나를 관리하기가 훨씬 쉽다. 그러나 이 CVCS 환경은 몇 가지 치명적인 결점이 있는데 가장 대표적인 것이 중앙 서버에 발생한 문제다. 만약 서버가 한 시간 동안 다운되면 그동안 아무도 다른 사람과 협업할 수 없고 사람들이 하는 일을 백업할 방법도 없다. 그리고 중앙 데이터베이스가 있는 하드디스크에 문제가 생기면 프로젝트의 모든 히스토리를 잃는다. 물론 사람마다 하나씩 가진 스냅샷은 괜찮다. 로컬 VCS 시스템도 이와 비슷한 결점이 있고 이런 문제가 발생하면 모든 것을 잃는다.

중앙집중식 버전 관리 시스템

- 분산 버전 관리 시스템(DVCS) : 분산 버전 관리 시스템은 앞의 두가지의 특징을 합쳐놓은 모습니다. 이말은 모든 클라이언트가 저장소가 될 수 있다는 것이다. 분산 버전 관리 시스템으로는 Git, Mecurial, Bazaar, Darcs 과 같은 것들이 있는데 DVCS에서의 클라이언트는 단순히 파일의 마지막 스냅샷을 Checkout 하지 않는다. 그냥 저장소를 히스토리와 더불어 전부 복제한다. 서버에 문제가 생기면 이 복제물로 다시 작업을 시작할 수 있다. 클라이언트 중에서 아무거나 골라도 서버를 복원할 수 있다. Clone은 모든 데이터를 가진 진정한 백업이다. 게다가 대부분의 DVCS 환경에서는 리모트 저장소가 존재한다. 리모트 저장소가 많을 수도 있다. 그래서 사람들은 동시에 다양한 그룹과 다양한 방법으로 협업할 수 있다. 계층 모델 같은 중앙집중식 시스템으로는 할 수 없는 워크플로를 다양하게 사용할 수 있다.

분산 버전 관리 시스템

 

 

 

참고자료 - https://git-scm.com/

반응형

+ Recent posts