분산 버전 관리

분산 버전 관리(Distributed revision control, 또는 Distributed Version Control (Systems) (DVCS), 또는 Decentralized Version Control (Systems))는 소프트웨어 버전 관리를 위한 시스템이다. 이 시스템은 각 개발자가 중앙 서버에 접속하지 않은 상태에서도 코드 작업을 할 수 있는 것이 특징이다.

작업 모델 
분산 모델은 일반적으로 부분적으로는 독립 개발자들과 더불어 리눅스 커널 프로젝트같은 대형 프로젝트에 더 적합한 편인데, 그 이유는 개발자들이 독립적으로 작업한 다음에 변경사항을 병합(또는 거절)할 수 있기 때문이다. 이 분산 모델은 사용자 지정 소스 코드 기여 워크플로의 유연한 채택을 가능케 한다.

중앙, 브랜치 저장소 
모든 프로젝트는 공식 저장소로 간주되는 중앙 저장소가 있으며 이는 프로젝트 유지보수자들에 의해 관리된다. 개발자들은 이 저장소를 복제(clone)하여 동일한 로컬 코드베이스 사본을 만들 수 있다. 중앙 저장소의 소스 코드 변경사항은 주기적으로 로컬 저장소와 동기화된다.

풀 리퀘스트 
분산 버전 관리 시스템을 사용하는 소스 코드 저장소의 기여는 풀 리퀘스트(pull request), 즉 머지 리퀘스트(merge request)라는 방식을 통해 이루어지는 것이 보통이다. 프로젝트 관리자가 소스코드 변경사항을 풀(pull)하는 기여자 요청이므로 "풀 리퀘스트"라는 이름이 붙게 되었다. 유지보수자는 기여가 소스 베이스의 일부가 되게 하기 위해 풀 리퀘스트를 병합해야 한다.

개발자는 새 변경사항을 유지보수자에게 알리기 위해 풀 리퀘스트를 생성한다. 댓글 스레드가 개별 풀 리퀘스트에 연결된다. 이를 통해 코드 변경에 대한 집중화된 토론이 가능해진다. 제출된 풀 리퀘스트들은 저장소 접근이 가능한 누구나 볼 수 있다. 풀 리퀘스트는 유지보수자들에 의해 수락되거나 거절될 수 있다.

풀 리퀘스트가 검토되고 승인되면 저장소에 병합된다. 확립된 워크플로에 따라 코드는 공식 릴리스에 포함되기 전에 테스트할 필요가 있을 수 있다. 그러므로 일부 프로젝트들은 테스트되지 않은 풀 리퀘스트를 병합하기 위한 특수한 브랜치가 포함되어 있다. 그 밖의 프로젝트들은 모든 풀 리퀘스트에 대한 자동화된 테스트 스위트를 수행하며 이는 Travis CI 등의 CI 도구를 사용함으로써 이루어지며, 새로운 코드에 적절한 테스트 커버리지가 있는지를 리뷰어가 검사한다.

같이 보기 
 버전 관리
 Git
 머큐리얼
 Bazaar
 버전 관리 소프트웨어 목록
 버전 관리 소프트웨어 비교 (en)

각주

외부 링크 
 버전 제어 시스템 소개, IBM 한국 developerWorks 기술자료

자유 버전 관리 소프트웨어
자유 소프트웨어 프로젝트
버전 관리
분산 버전 관리 시스템