SW 개발 프로젝트에서 가장 중요한 인프라 서버중의 하나는 버전 관리(Version Control 또는 Revision Control, Source Control이라고도 한다 ) 시스템이다.

버전 관리 시스템은 문서나 소스 파일등의 변경 내역을 관리하는 시스템으로 변경일, 변경자, 변경 내용등을 확인하고 특정 시점으로 돌아갈 수 있는 기능을 제공하고 있다.

다수의 동료와 같이 진행하는 SW 개발 프로젝트는 버전 관리 시스템을 통해 프로젝트내 작업을 나눠서 수행하고 자신의 작업을 공유하고 타인의 작업을 참고하여 결과물을 병합할 수 있으며 소소하거나 중대한 실수를 하더라도 특정 시점으로 돌아가서 복구할 수 있다.

또 버전 관리 시스템에 등록한 컨텐츠의 모든 변경 이력이 기록되므로 어떤 소스를 누가 언제 무엇을 고쳤는지를 쉽게 알아낼 수 있으므로 프로젝트 초기부터 참여하지 않았더라도 프로젝트의 진행 내역을 확인할 수 있으며 다른 개발자가 작성한 코드를 인수받아 유지보수나 개선을 하기 위해서도 꼭 필요한 시스템이다.

그리고 한 프로젝트내에서 각기 다른 목적을 가진 여러 개의 작업본을 만들고 각각을 격리하여 진행하여 변경에 따른 위험도를 최소화하고 변경된 결과물을 다른 작업본에 손쉽게 병합할 수 있다.

 

이번 장에서는 이렇게 필수적인 개발 인프라인 버전 관리 시스템에 대해 설명하고 중앙집중적 버전 관리 시스템으로 가장 많이 쓰이는  서브버전(subversion) 과 최근에 급격히 부상하고 있는 git, 그리고 GUI 기반의 git 관리 솔루션인 gitlab을 리눅스에 설치하고 활용하는 방법에 대해 살펴보자.