한 줄 요약
버전 관리 시스템이 왜 필요한지에서 출발해 로컬 → 중앙집중식 → 분산 세 세대의 구조와 각 세대가 안고 있던 약점을 정리한, Pro Git 2판의 첫 절이다.
핵심 내용
- 정의 — 버전 관리는 파일 하나 또는 여러 개의 변경을 시간에 따라 기록해 뒀다가 나중에 특정 시점의 버전을 다시 꺼내는 시스템이다. 대상이 소스 코드일 필요는 없고, 컴퓨터의 거의 모든 파일에 쓸 수 있다고 적는다.
- 얻는 것 — 파일 단위 되돌리기, 프로젝트 통째 되돌리기, 시간에 따른 변경 비교, 마지막으로 고친 사람과 시점 추적, 잃어버린 파일 복구. 문서는 이 전부를 "아주 적은 오버헤드로" 얻는다고 말한다.
- 로컬 VCS — 디렉터리를 복사해 두는 방식은 단순해서 흔하지만 실수가 잦다. 그래서 변경분을 담는 간단한 데이터베이스를 둔 로컬 VCS가 나왔다. 대표가 RCS이고, 파일 사이의 차이(패치 셋)를 디스크에 특수 형식으로 보관했다가 패치를 더해 과거 상태를 재현한다.
- 중앙집중식 VCS(CVCS) — "다른 시스템의 개발자와 협업해야 한다"는 다음 문제에서 나왔다. CVS·Subversion·Perforce처럼 서버 한 대가 모든 버전 파일을 갖고 클라이언트들이 거기서 체크아웃한다. 오랫동안 이 방식이 표준이었다.
- CVCS의 약점 — 중앙 서버가 곧 단일 장애점이다. 한 시간 멈추면 그동안 아무도 협업하거나 버전을 저장할 수 없다. 중앙 DB 디스크가 깨지고 백업이 없으면 프로젝트 역사 전체를 잃는다.
- 분산 VCS(DVCS) — Git·Mercurial·Darcs가 여기 속한다. 최신 스냅샷만 받는 게 아니라 저장소를 역사까지 통째로 복제한다. 서버가 죽어도 아무 클라이언트의 복제본을 서버로 되올려 복구할 수 있다.
- 리모트를 여럿 둘 수 있다 — 여러 원격 저장소를 동시에 다루며 서로 다른 그룹과 다른 방식으로 협업할 수 있다. 중앙집중식에서는 불가능한 계층형 워크플로 같은 것이 여기서 열린다.
주요 주장 / 데이터
- "모든 복제본이 곧 전체 데이터의 완전한 백업이다" — DVCS 절의 핵심 문장이다. 백업을 따로 설계하지 않아도 clone 자체가 백업이 된다는 뜻이다.
- 로컬 VCS도 CVCS와 같은 위험을 진다 — 문서는 "역사 전체가 한 곳에만 있으면 전부 잃을 위험을 진다"고 두 세대를 묶어 지적한다. 분산이 해결한 것은 협업이 아니라 이 단일 지점 문제다.
- RCS는 지금도 배포된다 — 오래된 도구지만 여전히 많은 컴퓨터에 함께 깔려 나온다고 적는다.
- CVCS의 장점도 같이 적는다 — 누가 무엇을 하는지 서로 어느 정도 알 수 있고, 관리자가 권한을 세밀하게 통제하기 쉬우며, 클라이언트마다 로컬 DB를 관리하는 것보다 운영이 쉽다. 일방적인 낡은 기술로 그리지 않는다.
출처 정보
- 저자/발행처: Scott Chacon, Ben Straub — Pro Git 2nd ed. (Apress, CC BY-NC-SA 3.0)
- 수집일: 2026-09-22
- URL: https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control
- 범위: 1.1절 본문 전체(버전 관리 정의·로컬 VCS·CVCS·DVCS). 원문의 그림 3개는 캡션만 남고 이미지 자체는 수집되지 않았다.