분산 버전 관리

위키백과, 우리 모두의 백과사전.
둘러보기로 가기 검색하러 가기

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

작업 모델[편집]

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

중앙, 브랜치 저장소[편집]

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

풀 리퀘스트[편집]

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

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

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

같이 보기[편집]

각주[편집]

  1. Sijbrandij, Sytse (2014년 9월 29일). “GitLab Flow”. 《GitLab》. 2019년 9월 26일에 원본 문서에서 보존된 문서. 2018년 8월 4일에 확인함. 
  2. Johnson, Mark (2013년 11월 8일). “What is a pull request?”. 《Oaawatch》. 2016년 3월 27일에 확인함. 
  3. “Using pull requests”. GitHub. 2019년 1월 28일에 원본 문서에서 보존된 문서. 2016년 3월 27일에 확인함. 
  4. “Making a Pull Request”. Atlassian. 2020년 2월 6일에 원본 문서에서 보존된 문서. 2016년 3월 27일에 확인함. 

외부 링크[편집]