1. 버전 관리
버전 관리 시스템(VCS)은 파일 변화를 시간에 따라 기록하고 후에 특정 시점 버전을 다시 꺼내올 수 있다.
VCS를 사용하면 각 파일을 이전 상태로 되돌리거나 프로젝트를 통째로 이전으로 돌리거나
시간에 따라 수정 내용을 비교해 볼 수 있다. 또는 누가 문제를 일으켰는지 언제 만들었는지의 이슈도 알 수 있다.
1) 로컬 버전 관리
프로그래머는 오래전에 로컬 VCS를 만들었다. 이것은 아주 간단한 데이터베이스를 사용해 파일의 변경 정보를 관리할 수 있다.
많이 쓰는 VCS 도구 중 RCS(Revision Control System)라고 부르는 것은 오늘까지도 많이 사용한다.
RCS는 기본적으로 Patch Set(파일에서 변경되는 부분)을 관리한다. 이 Patch Set은 특별한 형식의 파일로 저장한다.
그리고 일련의 Patch Set을 적용해 모든 파일을 특정 시점으로 되돌릴 수 있다.
2) 중앙집중식 버전 관리(CVCS)
프로젝트를 진행하다보면 다른 개발자와 함께 작업해야하는 경우가 많다. 이럴때를 대비해 CVCS(중앙집중식 VCS)가 개발됐다.
CVS, Subversion, Perforce 같은 시스템은 파일을 관리하는 서버가 별도로 있고 클라이언트가 중앙 서버에서 파일을 받아 사용(checkout)한다.
이것은 로컬 VCS보다 장점이 많다. 모두 누가 무엇을 하는지 알 수 있다. 모든 클라이언트의 로컬 데이터베이스를 관리하기보다 하나의 VCS를 관리하기가 훨씬 쉽다.
하지만 단점이 있는데 중앙 서버에 발생하는 문제이다. 만약 서버가 한시간 동안 다운되면 그동안 아무와도 협업할 수 없고 백업할 수도 없다. 또 중앙데이터 베이스가 있는 하드디스크에 문제가 생기면 프로젝트의 모든 히스토리를 잃는다.
3) 분산 버전 관리 시스템
Git, Mecurial, Darcs 같은 DVCS에서의 클라이언트는 단순히 파일의 마지막 스냅샷을 Checkout 하지 않는다.
그냥 저장소를 히스토리와 더불어 전부 복제한다. 서버 문제가 생기면 이 복제물로 다시 작업하면 된다.
클라이언트 중 아무거나 골라도 서버를 복원할 수 있다. Clone은 모든 데이터를 가진 진정한 백업이다.
게다가 대부분의 DVCS 환경에서는 리모트 저장소들이 존재한다. 사람들은 동시에 다양한 그룹과 다양한 방법으로 협업가능하다.
계층 모델 같은 중앙집중식 시스템으로는 할 수 없는 워크플로를 다양하게 사용가능하다.
'개발 > Git' 카테고리의 다른 글
[Git] 원격 저장소 Clone 복제 및 저장소 만들기까지 (0) | 2022.11.30 |
---|---|
[Git] Git의 기초 (0) | 2022.11.29 |