Scott Chacon & Ben Straub 님의 "Pro Git" 책을 정리한 포스팅 입니다.
1. 버전 관리란?
- 시간의 흐름에 따라 파일 변화를 기록하고, 필요할 때 특정 시점의 버전으로 복원할 수 있는 시스템입니다.”
로컬 버전 관리
- 간단한 데이터베이스를 사용해서 파일의 변경 정보를 관리했습니다.
RCS (Revision Control System)
- 버전 관리 시스템의 초기 형태 중 하나 입니다.
- 텍스트 파일의 변경 이력을 관리하기 위해 사용됩니다.
Patch Set
- 파일 변경 내용을 담은 파일입니다.
- 효율적인 디스크 공간 사용
- RCS는 Patch Set만 저장하여 디스크 공간을 효율적으로 사용합니다.
- 시점 되돌리기
- 일련의 Patch Set들을 적용해서 파일을 특정 시점으로 되돌릴 수 있습니다.
중앙집중식 버전 관리 (CVCS)
- 다른 개발자와 함께 작업할 때 사용합니다.
장점
- 인력 관리 : 누가 무엇을 하고 있는지 알 수 있습니다.
- 데이터 관리 : 모든 클라이언트의 로컬 데이터베이스를 관리하는 것보다 중앙화된 하나의 VCS로 관리하는 것이 쉽습니다.
단점 (중앙 서버 의존성에 기인합니다)
- 서버 가용성 문제
- 네트워크 연결이 불안정한 경우 서버에 접속할 수 없습니다.
- 팀원들은 공유 작업 공간에 접근할 수 없습니다. (서버 다운시 협업 프로세스가 완전히 중단됩니다)
- 데이터 손실 위험
- 프로젝트 전체 히스토리를 잃을 수 있는 위험이 있습니다.
- 성능 및 확장성 문제
- 서버의 낮은 처리능력으로 인해 성능의 병목이 발생할 수 있습니다.
- 규모 확장의 어려움 : 서버를 스케일업 하는데 드는 비용이 높습니다.
- 보안 취약점
- 해킹 당하면, 전체적으로 프로젝트의 보안이 위협받을 수 있습니다.
Server
- 파일을 관리하는 서버가 별도로 있습니다.
Client
- Check out : 클라이언트가 중앙 서버에서 파일을 받아 사용합니다.
제품
- Subversion, CVS 등
분산 버전 관리 시스템 (DVCS)
- 각 클라이언트가 리포지토리의 전체 복사본을 가지는 시스템입니다.
- 리모트 저장소가 존재합니다.
장점
- 전체 저장소 복제 (Clone)
- 각 클라이언트는 리포지토리의 전체 복사본을 가지고 있습니다.
- 저장소 복제본에는 모든 파일의 버전 히스토리가 포함됩니다.
- 단순히 파일의 마지막 스냅샷만을 체크아웃하지 않습니다.
- 서버에 문제가 발생하더라도 어느 클라이언트든 서버를 복원할 수 있는 데이터를 보유합니다.
- 리모트 저장소의 다양성
- 하나의 프로젝트에 대해 여러 리모트 저장소를 가질 수 있습니다.
- 이를 통해 프로젝트에 기여하거나 PR을 통한 협업이 가능합니다.
- 다양한 워크플로 지원
- 복잡한 프로젝트 구조와 다양한 팀 구성에 맞는 유연한 협업 방식을 지원합니다.
- 데이터 무결성 및 보안
- 각 커밋에 대해 SHA-1 해시를 사용하여 데이터의 무결성을 보장합니다.
- 다른 클라이언트의 복제본으로부터 서버를 복원할 수 있습니다.
- 오프라인 작업 가능
- 오프라인 작업 후, 나중에 리모트 저장소와 동기화 할 수 있습니다.
제품
- Git
출처
'VCS > Git' 카테고리의 다른 글
[Pro Git] 2-2. Git의 기초: 수정하고 저장소에 저장하기 (1) | 2024.01.14 |
---|---|
[Pro Git] 2-1. Git의 기초: Git 저장소 만들기 (1) | 2024.01.14 |
[Pro Git] 1-6. 시작하기: Git 최초 설정 (1) | 2024.01.13 |
[Pro Git] 1-3. 시작하기: Git 기초 (0) | 2024.01.13 |
[Pro Git] 1-2. 시작하기: 짧게 보는 Git의 역사 (1) | 2024.01.13 |