sungwony

[Pro Git2] 키워드 정리 본문

development/etc

[Pro Git2] 키워드 정리

일상이상삼상 2018. 6. 5. 15:06

버전 관리, GIT HISTORY


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


버전 관리 시스템 : 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템이다.


로컬 버전 관리

- 파일 기반의 버전 관리

- 로컬 VCS : 아주 간단한 데이터베이스를 사용해서 파일의 변경 정보를 관리

- RCS(Revision Control System) : 로컬 VCS의 일종으로 Patch Set(변경부분)을 관리


중앙집중식 버전 관리(CVCS)

- CVS, Subversion, Perforce 같은 시스템을 통해 파일을 관리하는 별도의 서버를 두고 클라이언트가 중앙 서버에서 파일을 받아서 사용(Checkout)한다.

- CVCS 환경은 로컬 VCS에 비해 장점이 많다. 모두 누가 무엇을 하고 있는지 알 수 있고, 관리자는 누가 무엇을 할지 관리할 수 있다.

- 치명적인 결점. 중앙 서버에서 문제가 발생하여 서버가 특정시간동안 다운된다면 그동안 다른 사람과 협업을 할 수 없고 하던 일을 백업할 수도 없다. 만약 중앙 데이터베이스가 있는 하드디스크에 문제가 생기면 프로젝트의 모든 히스토리를 잃는 것이다.


분산 버전 관리 시스템(DVCS)

- Git, Mecurial, Bazzar, Darcs 같은 DVCS에서의 클라이언트는 단순히 파일의 마지막 스냅샷을 Checkout하지 않는다. 그냥 저장소를 전부 복제한다. 클라이언트 중에서 아무거나 골라도 서버를 복원할 수 있다. 모든 Checkout은 모든 데이터를 가진 진정한 백업이다.

- 대부분의 DVCS 환경에서는 리모트 저장소가 존재한다. 동시에 다양한 그룹과 다양한 방법으로 협업할 수 있다.


GIT은 Linux 창시자 Linus Torvalds에 의해 시작되었다.

1991년부터 2002년 이전까지 Linux 커널은 Patch와 단순 압축 파일로만 관리되었다.

2002년에 드디어 Linux 커널을 BitKeeper라고 불리는 상용 DVCS를 사용하기 시작했는데 영리적 목적의 BitKeeper와 오픈소스인 Linux 커널의 이해관계로 2005년 무료 사용이 제고되었고 이에 따라 Linus Torvalds는 자체적인 버전관리 도구를 만들게 되었다. BitKeeper를 사용하면서 배운 교훈을 기초로 아래와 같은 목표를 세웠다.


- 빠른 속도

- 단순한 구조

- 비선형적인 개발(수천 개의 동시 다발적인 브랜치)

- 완벽한 분산

- Linux 커널 같은 대형 프로젝트에도 유용할 것(속도, 데이터 크기 면에서)

'development > etc' 카테고리의 다른 글

[Network] 터널링과 캡슐화  (0) 2019.10.17
[JAVA] AES 파일암호화  (1) 2017.06.09
프로그래밍 강좌  (0) 2017.04.06