분산 버전 관리
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
분산 버전 관리 시스템(DVCS)은 중앙 집중식 시스템과 달리 P2P 방식으로 버전 관리를 하는 시스템이다. DVCS는 각 사용자가 전체 변경 이력을 포함한 작업 사본을 가지며, 네트워크 연결 없이 작업 가능, 빠른 작업 속도, 개인적인 작업 허용, 원격 백업 기능, 다양한 개발 모델 지원, 프로젝트 포크 용이 등의 장점을 가진다. 하지만 초기 체크아웃 속도가 느리고, 추가적인 저장 공간이 필요하며, 코드베이스가 더 많이 노출될 수 있다는 단점도 있다. DVCS는 독립적인 개발자들이 참여하는 대규모 프로젝트, 특히 리눅스 커널과 같은 프로젝트에 적합하며, 풀 리퀘스트를 통해 소스 코드 기여가 이루어진다. 초기 DVCS 시스템으로는 아치, 모노톤, Darcs 등이 있었으며, 깃과 머큐리얼이 등장하면서 널리 사용되게 되었다.
더 읽어볼만한 페이지
- 분산 버전 관리 시스템 - 깃 (소프트웨어)
깃은 리누스 토르발스가 개발한 분산 버전 관리 시스템으로, 빠른 분기 및 병합, 분산 개발 환경 지원, 대규모 프로젝트 처리 효율성 등의 특징을 가지며, 깃허브, 깃랩 등에서 서비스되며 소프트웨어 개발 분야에서 널리 사용된다. - 분산 버전 관리 시스템 - 비트키퍼
비트키퍼는 래리 맥보이가 설계한 버전 관리 시스템으로, 리눅스 커널 개발 지원을 위해 거론되다 라이선스 정책 변경으로 오픈 소스 커뮤니티와 갈등을 겪었으나, 이후 아파치 라이선스 2.0으로 오픈 소스화되었다. - 자유 버전 관리 소프트웨어 - 깃 (소프트웨어)
깃은 리누스 토르발스가 개발한 분산 버전 관리 시스템으로, 빠른 분기 및 병합, 분산 개발 환경 지원, 대규모 프로젝트 처리 효율성 등의 특징을 가지며, 깃허브, 깃랩 등에서 서비스되며 소프트웨어 개발 분야에서 널리 사용된다. - 자유 버전 관리 소프트웨어 - 비트키퍼
비트키퍼는 래리 맥보이가 설계한 버전 관리 시스템으로, 리눅스 커널 개발 지원을 위해 거론되다 라이선스 정책 변경으로 오픈 소스 커뮤니티와 갈등을 겪었으나, 이후 아파치 라이선스 2.0으로 오픈 소스화되었다. - 버전 관리 - 깃허브
깃허브는 Git 버전 관리 시스템을 기반으로 소프트웨어 개발 협업 기능과 부가 서비스를 제공하는 웹 기반 플랫폼이지만, 여러 논란과 비판도 존재하는 세계 최대의 소프트웨어 개발 플랫폼이다. - 버전 관리 - 스테핑 레벨
분산 버전 관리 |
---|
2. 분산 버전 관리와 중앙 집중식 버전 관리
분산 버전 관리 시스템(DVCS)은 중앙 집중식 시스템의 클라이언트-서버 모델과 대조적으로 P2P 방식을 버전 관리에 사용한다. 분산 형상 관리는 패치를 P2P 방식으로 전송하여 저장소를 동기화한다. 단일 중앙 코드베이스 버전은 없으며, 대신 각 사용자는 작업 사본과 전체 변경 이력을 가지고 있다.
DVCS의 장점(중앙 집중식 시스템과 비교):
- 사용자가 네트워크에 연결되지 않은 상태에서도 생산적으로 작업할 수 있다.
- 커밋, 히스토리 보기, 변경 사항 되돌리기와 같은 일반적인 작업은 DVCS에서 더 빠르다. 중앙 서버와 통신할 필요가 없기 때문이다.[4] DVCS에서는 다른 피어 간에 변경 사항을 공유할 때만 통신이 필요하다.
- 개인적인 작업을 허용하므로 사용자는 게시하고 싶지 않은 초기 초안에도 변경 사항을 사용할 수 있다.
- 작업 사본은 효과적으로 원격 백업 역할을 하여 단일 실패 지점으로서 하나의 물리적 머신에 의존하는 것을 방지한다.[4]
- 개발 브랜치 또는 지휘관/부관 모델과 같은 다양한 개발 모델을 사용할 수 있다.[5]
- 프로젝트의 "릴리스 버전"을 중앙에서 제어할 수 있다.
- FOSS 소프트웨어 프로젝트의 경우, 리더십 갈등이나 디자인 불일치로 인해 중단된 프로젝트에서 프로젝트 포크를 만드는 것이 훨씬 쉽다.
DVCS의 단점(중앙 집중식 시스템과 비교):
- 기본적으로 모든 브랜치 및 개정 내역이 로컬 머신에 복사되므로, 저장소의 초기 체크아웃이 중앙 집중식 버전 관리 시스템의 체크아웃보다 느리다.
- 대부분의 중앙 집중식 VCS의 일부인 잠금 메커니즘이 없다.
- 모든 사용자가 전체 코드베이스 히스토리의 완전한 사본을 갖기 위해 추가적인 저장 공간이 필요하다.[6]
- 모든 참가자가 로컬에서 취약한 사본을 가지고 있기 때문에 코드베이스가 더 많이 노출된다.
일부 원래 중앙 집중식 시스템은 이제 몇 가지 분산 기능을 제공한다. Team Foundation Server 및 Visual Studio Team Services는 이제 Git을 호스팅하여 중앙 집중식 및 분산 버전 관리 저장소를 호스팅한다.
마찬가지로, 일부 분산 시스템은 매우 큰 코드베이스에서 작동하도록 체크아웃 시간 및 스토리지 비용 문제를 완화하는 기능을 제공한다.[7]
2. 1. 분산 버전 관리 시스템 (DVCS)의 장점
2. 2. 분산 버전 관리 시스템 (DVCS)의 단점
2. 3. 중앙 집중식 시스템의 분산 기능 지원
2. 4. 분산 시스템의 확장성 문제 해결
3. 작업 모델
분산 모델은 일반적으로 부분적으로는 독립 개발자들과 더불어 리눅스 커널 프로젝트같은 대형 프로젝트에 더 적합한 편인데, 그 이유는 개발자들이 독립적으로 작업한 다음에 변경사항을 병합(또는 거절)할 수 있기 때문이다. 이 분산 모델은 사용자 지정 소스 코드 기여 워크플로의 유연한 채택을 가능케 한다.[8]
분산 모델은 부분적으로 독립적인 개발자가 참여하는 대규모 프로젝트, 예를 들어 리눅스 커널과 같은 프로젝트에 일반적으로 더 적합하다. 이 모델을 사용하면 개발자가 독립적인 브랜치에서 작업하고, 나중에 다른 사람이 커밋하고, 감사하고, 병합(또는 거부)할 수 있는 변경 사항을 적용할 수 있다.[9] 이 모델은 더 나은 유연성을 제공하며, 원래 프로젝트와 목적이 다를 수 있는 사용자 정의 소스 코드 브랜치( 포크 )의 생성 및 적용을 허용한다. 또한 개발자가 기존 코드 저장소를 로컬로 복제하고, 변경 사항이 추적되고 로컬 저장소에 커밋되는 로컬 환경에서 작업할 수 있도록 하여[9] 저장소의 마스터 브랜치에 커밋되기 전에 변경 사항을 더 잘 추적할 수 있도록 한다. 이러한 접근 방식은 개발자가 로컬 및 연결이 끊어진 브랜치에서 작업할 수 있도록 하여, 더 큰 분산 팀에게 더 편리함을 제공한다.
3. 1. 중앙 저장소와 브랜치 저장소
분산 모델은 리눅스 커널 프로젝트와 같이 대규모 프로젝트에 적합하며, 개발자들이 독립적으로 작업한 후 변경사항을 병합하거나 거절할 수 있다. 이 모델은 사용자 지정 소스 코드 기여 워크플로의 유연한 채택을 가능하게 한다.진정한 분산 버전 관리 프로젝트에서는 모든 기여자가 자신의 저장소를 유지하고, 필요에 따라 다른 사용자의 변경 사항을 가져온다. 이러한 방식은 "포크(forking)"를 쉽게 만든다. 그러나 유지 관리가 어려워 많은 프로젝트가 중앙 저장소 방식을 택한다.
대부분의 프로젝트는 프로젝트 유지보수자들이 관리하는 중앙 저장소를 중심으로 개발을 진행한다. 개발자는 중앙 저장소를 복제(clone)하여 로컬 코드베이스 사본을 만들고, 중앙 저장소의 변경 사항을 주기적으로 로컬 저장소와 동기화한다.
GitHub와 같은 타사 서비스에 중앙 저장소를 호스팅하면 안정적인 가동 시간, 이슈 추적 시스템, 지속적 통합 등의 기능을 활용할 수 있다.
3. 2. 풀 리퀘스트 (Pull Request)
분산 버전 관리 시스템을 사용하는 소스 코드 저장소의 기여는 풀 리퀘스트(pull request), 즉 병합 요청(merge request)이라는 방식을 통해 이루어지는 것이 보통이다.[16] 프로젝트 관리자가 소스코드 변경사항을 풀(pull)하는 기여자 요청이므로 "풀 리퀘스트"라는 이름이 붙게 되었다. 유지보수자는 기여가 소스 베이스의 일부가 되게 하기 위해 풀 리퀘스트를 병합해야 한다.[17]개발자는 새 변경사항을 유지보수자에게 알리기 위해 풀 리퀘스트를 생성한다. 댓글 스레드가 개별 풀 리퀘스트에 연결된다. 이를 통해 코드 변경에 대한 집중화된 토론이 가능해진다. 제출된 풀 리퀘스트들은 저장소 접근이 가능한 누구나 볼 수 있다. 풀 리퀘스트는 유지보수자들에 의해 수락되거나 거절될 수 있다.[18]
풀 리퀘스트가 검토되고 승인되면 저장소에 병합된다. 확립된 워크플로에 따라 코드는 공식 릴리스에 포함되기 전에 테스트할 필요가 있을 수 있다. 그러므로 일부 프로젝트들은 테스트되지 않은 풀 리퀘스트를 병합하기 위한 특수한 브랜치가 포함되어 있다.[17][19] 그 밖의 프로젝트들은 모든 풀 리퀘스트에 대한 자동화된 테스트 스위트를 수행하며 이는 Travis CI 등의 CI 도구를 사용함으로써 이루어지며, 새로운 코드에 적절한 테스트 커버리지가 있는지를 리뷰어가 검사한다.
4. 역사
초기 오픈 소스 DVCS 시스템에는 아치, 모노톤, Darcs가 포함되었다.[14] 그러나 깃과 머큐리얼이 출시되면서 오픈 소스 DVCS가 대중화되었다.[14]
BitKeeper는 2002년부터 2005년까지 리눅스 커널 개발에 사용되었다.[14] 깃은 비트키퍼를 만든 회사가 리누스 토르발스와 리눅스 커널 개발자들이 이용했던 무료 라이선스를 철회하면서 개발이 촉발되었다.[14]
참조
[1]
서적
Pro Git
Apress
2019-06-04
[2]
웹사이트
Intro to Distributed Version Control (Illustrated)
https://betterexplai[...]
2018-01-07
[3]
웹사이트
Distributed Version Control Is Here to Stay, Baby
http://joelonsoftwar[...]
2019-06-04
[4]
웹사이트
Distributed revision control with Mercurial
http://hgbook.red-be[...]
2007-07-13
[5]
서적
Pro Git
Apress
2014
[6]
웹사이트
What is version control: centralized vs. DVCS
https://www.atlassia[...]
2018-01-07
[7]
웹사이트
How Microsoft Solved Git's Problem with Large Repositories
https://www.infoq.co[...]
2019-08-06
[8]
웹사이트
Submitting patches: the essential guide to getting your code into the kernel — The Linux Kernel documentation
https://www.kernel.o[...]
2024-11-22
[9]
웹사이트
Git - Revision Selection
https://git-scm.com/[...]
2024-11-22
[10]
웹사이트
GitLab Flow
https://about.gitlab[...]
2018-08-04
[11]
웹사이트
What is a pull request?
http://oss-watch.ac.[...]
2013-11-08
[12]
웹사이트
Using pull requests
https://help.github.[...]
GitHub
2016-03-27
[13]
웹사이트
Making a Pull Request
https://www.atlassia[...]
Atlassian
2016-03-27
[14]
뉴스
Linus Torvalds' BitKeeper blunder
http://www.infoworld[...]
2017-03-19
[15]
웹사이트
Version Control Systems Popularity in 2016
https://rhodecode.co[...]
2018-01-07
[16]
웹인용
GitLab Flow
https://about.gitlab[...]
2018-08-04
[17]
웹인용
What is a pull request?
http://oss-watch.ac.[...]
2013-11-08
[18]
웹인용
Using pull requests
https://help.github.[...]
GitHub
2016-03-27
[19]
웹인용
Making a Pull Request
https://www.atlassia[...]
Atlassian
2016-03-27
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com