2. 목 차
1. Git란?
2. 버전 관리 시스템(VCS)이란?
3. 버전 관리 시스템을 이용해야하는 이유
4. 버전 관리 시스템의 종류
1) 중앙집중식 버전 관리(CVCS)
2) 분산 버전 관리(DVCS)
5. 분산 버전 관리 시스템의 장점
6. 주요 버전 관리 시스템 비교
3. 1. Git란?
-프로그램 등의 소스 코드 관리를
위한 분산 버전 관리 시스템
-빠른 수행 속도에 중점
-네트워크에 접근하거나 중앙 서버
에 의존하지 않음
-작업 폴더는 모두, 전체 기록과 각
기록을 추적할 수 있는 정보를 포
함한 완전한 형태의 저장소
4. - 동일한 정보에 대한 여러 버전을 관리
-공학과 소프트웨어 개발에서 팀 단위
로 개발 중인 소스 코드나, 설계도 등
의 디지털 문서를 관리하는데 사용
-그러한 문서의 변경 사항들에 숫자나
문자로 버전을 부여해서 구분
-버전을 통해서 시간적으로 변경 사항
과 그 변경 사항을 작성한 작업자를 추
적
2. 버전 관리 시스템(VCS)이란?
로컬 VCS (1세대)
5. - 조직의 핵심 자산인 소스 코드의 개정과 백업 절차를 자동화하여 오
류 수정 과정을 도와줄 수 있는 시스템
-> 이미 다수의 국제 협력 개방 소프트웨어 개발 실무에서 널리 사용
- 대부분의 주요 소프트웨어 개발 프로젝트는 아직도 소프트웨어의
설계도라 할 수 있는 소스 코드 작성이 주요한 부분
-> 소스 코드는 기업체 또는 연구소의 핵심 역량이 응축된 핵심 자산
- 어떤 형태로든 소스 코드를 백업하여 분실의 위험에서 보호
- 개정 전후 내용을 파악하여 추후 발생할지도 모를 오류 수정에 대비
3. 버전 관리 시스템을 이용해야하는 이유
6. - 저장소가 로컬에 있지 않고 원격에 존재
하기 때문에 여러 사람이 원격 서버에 소
스를 저장하거나 사용
- 모든 소스들이 하나의 서버에 통합이 되
기 때문에 버전관리 업무도 쉽게 처리 가
능하며 개발자간 소스파일 공유도 편리
- CVS, Subversion(SVN), Perforce 등
4. 버전 관리 시스템의 종류
중앙집중식 VCS (2세대)
1) 중앙집중식 버전 관리(CVCS)
7. - 개발자가 중앙 서버에 접속하지 않은
상태에서도 코드 작업을 할 수 있음
- CVCS의 문제점을 해결한 버전 관리
- 서버에서 소스코드를 복제할 때에 최
신버전의 코드만 가져오지 않고 원격
서버의 저장소에 기록되어 있는 모든
정보를 가지고 오는 방식
- Git, Mecurial, Bazaar, Darcs 등
4. 버전 관리 시스템의 종류
분산 VCS (3세대)
2) 분산 버전 관리(DVCS)
8. 5. 분산 버전 관리 시스템의 장점
- 서버의 데이터가 로컬에도 존재하기 때문에 불필요한 서버 접근
을 최소화 -> 속도가 대단히 빠름
- 소스코드를 서버에 넣거나 혹은 가져올 때를 제외하고는 온라인
이 상태가 아니어도 대부분의 작업을 로컬에서 수행할 수 있음
- > 나중에 최종 작업결과만 서버에 넣기만 하면 됨
- 서버에 데이터가 손실되는 사고가 발생하여도 각 클라이언트들
이 저장소의 정보를 모두 가지고 있음 -> 서버 데이터 복구 가능
즉, DVCS의 장점을 잘 활용하면 인터넷 사용이
원활하지 않은 장소에서도 버전 관리를 할 수 있음
9. 6. 주요 버전 관리 시스템 비교
CVS Subversion(SVN) Git
개발자 The CVS Team 콜랩넷 리누스 토르발스
종류 중앙집중식 중앙집중식 분산 버전 처리
최근 버전 1.11.23 1.8.8 1.9.0
운영체제
유닉스 계열, 윈
도
크로스 플랫폼 크로스 플랫폼
라이선스 GNU GPL 아파치 라이선스
GNU 일반 공중
사용허가서 v2
간단한 데이터베이스를 활용하여 버전의 저장, 검색, 기록, 식별 및 병합 등을 자동화합니다.
서버 개념이 없이 로컬에서만 동작하기 때문에 많은 사람들과 프로젝트를 협동해서 진행하기가 어렵다는 단점이 있습니다.
대표적으로 RCS(Reversion Control System)가 많이 사용되어 왔다고 합니다.
중앙집중식 버전 관리(CVCS)는 다른 개발자와 함께 작업해야 할때 생기는 문제들을 해결하기 위해 만들어 졌습니다.
그러나 CVCS에는 두가지의 치명적인 단점이 있습니다.
1. 서버에 문제가 발생했을 경우 서버가 복구되기 까지 버전관리 시스템을 사용할 수 없다.
2. 서버에 모든 소스가 저장되어 있기 때문에 서버의 데이터가 손실될 경우 100% 복구하기 어려울 수 있다.
분산 VCS(DVCS)는 CVCS의 문제점을 해결한 버전 관리 시스템 입니다.
CVCS가 가진 단점의 원인은 각 클라이언트들이 원격 서버의 모든 정보를 가지고 있지 않고 가장 최신버전의 스냅샷만을 가지고 있었기 때문입니다.
그래서 서버의 장애가 발생할 시 이전 버전의 코드를 열람할 수 없게 되고, 데이터까지 손실이 됬을 경우 복구하기도 어려웠던 것입니다.
DVCS는 서버에서 소스코드를 clone할 때에 최신버전의 코드만 가져오지 않고 원격 서버의 저장소에 기록되어 있는 모든 정보를 가지고 오는 방식으로 CVCS의 문제점을 해결했습니다. (물론 clone 이후에 push or pull 등을 할때에는 변화된 정보만 주고 받습니다.)
서버의 데이터가 로컬에도 존재하기 때문에 불필요한 서버 접근을 최소화
-> 속도도 대단히 빠름
소스코드를 서버에 pull 하거나 혹은 push 할 때를 제외하고는 온라인이 상태가 아니어도
대부분의 작업을 로컬에서 수행할 수 있음
-> 나중에 최종 작업결과만 서버에 push 하면 됨
서버에 장애가 발생하여도 로컬에서 대부분의 작업을 수행할 수 있기때문에
몇 일 정도는 큰 방해를 받지 않고 작업이 가능합니다.
서버에 데이터가 손실되는 사고가 발생하여도
각 클라이언트들이 저장소의 정보를 모두 가지고 있음
-> 서버의 데이터를 복구 할 수 있음
DVCS의 장점을 잘 활용하면 인터넷 사용이 원활하지 않은 장소에서도 VCS를 사용할 수 있음