버전 관리 시스템과 git

0
199

일상생활에서 우리는 수많은 작업을 컴퓨터로 처리한다. 작업의 결과로 많은 파일 생성하고 이를 관리하는게 일반적인 작업이 되었다. 예를 들어 학교에 제출해야 하는 리포트를 보자. 열심히 보고서를 작성해서 ‘최종 보고서’를 만들었다. 하지만 수정하고 추가할 내용이 생각나서 ‘최종 보고서2’ 를 만들었다. 누구나 이런 경험이 있을 것이다.

최종의 끝은 어디인가?

프로그래머의 경우도 비슷하다. 여러사람이 공동으로 프로그램을 개발한다고 생각해보자. 하나의 프로젝트에서 여러가지 파일이 만들어지고 이를 공유하고 수정해야 한다. 일일히 코드를 보내고 받는 것부터가 곤혹스럽다. 시간이 지나다보면 팀원 전체가 동일한 상태의 소스로 개발하기 힘들다. 수정된 코드가 어떤 것이 최신인지 확인하기도 어렵다. 그래서 우리는 이런 파일을 관리해 주는 무언가 필요해졌다. 그리고 이것을 해결 해주는 것이 ‘버젼 관리 시스템’ 이다.

 

 

1. 버전 관리 시스템이란?


버전 관리 시스템(Version Control System)은 말 그대로 파일의 버전을 관리를 해주는 시스템이다. 파일의 사본을 만들거나 이전으로 되돌리는 복원 등 기본적인 파일을 관리하는 기술을 의미한다. 뿐만 아니라 서로 다른 버전 간의 병합, 전체 과정에 대한 로그를 확인 할 수 있게 해준다.

 

 

 2. 버전 관리 시스템의 종류


 로컬 버젼 관리

로컬 버젼 관리
  • 처음 시작은 로컬에 파일을 관리하는 것 부터 시작했다.
  • 이를 관리하기 위해서 간단한 DB를 사용해서 파일의 변화를 기록하는 방식을 이용했다.
  • 대표적으로 RCS(Revision Control System)가 있으며 오늘날까지 많이 사용한다.
  • Mac OS X 운영체제에서도 개발 도구를 설치하면 RCS가 함께 설치된다.

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

중앙집중식 버전 관리
  • 중앙 서버어서 모든 파일을 관리한다.
  • 네트워크를 통해서 여러 사람과 함께 파일을 사용하는 방식이다.
  • 필요한 파일이 있는 경우에는 해당 파일만 로컬에 임시로 가지와서 작업하는 형태이다.
  • 문제는 중앙 서버에 문제가 생긴다면 이를 해결할 방법이 마땅치 않았다.

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

분산 버전 관리
  • 모든 사용자가 개별적으로 로컬 저장소에 가지고 모든 저장소를 복제한다.
  • 서버에  문제가 생기더라도 로컬에서 다시 작업을 시작할 수 있다.
  • 또한 하나의 사용자 중에서 아무거나 골라 서버를 복원할 수 있다.
  • 원격 저장소를 사용하는 경우에는 동시에 다양한 그룹과 다양한 방법으로 협업할 수 있다.
  • Git, Mecurial, Bazaar, Darcs 가 대표적이다.

 

 

git의 탄생

대표적인 분산버전관리 시스템 git

Linux 커널은 오픈소스 프로젝트로 버전 관리를 patch 와 압축을 통해 해결해왔다. 2002년에 드디어 Linux 커널은 BitKeeper라고 불리는 상용 DVCS를 사용했다. 하지만 2005년에 BitKeeper 를 개발한 회사가 이를 상용하면서 Linux 개발 커뮤니티와 결별하게 됐다. 이후 Linux 창시자  Linus Torvalds 가 자체적으로 DVCS 를 개발했다. 이것이 바로 git 이다.

  • 빠른 속도
  • 단순한 구조
  • 비선형적인 개발(수천 개의 동시 다발적인 브랜치)
  • 완벽한 분산
  • 대형 프로젝트에도 유용할 것

댓글 남기기

Please enter your comment!
Please enter your name here