DVCS(DRCS)

OpenSource/Common 2012. 10. 31. 10:46


In computer programming, a distributed revision control system (DRCS), distributed version control or decentralized version control system (DVCS) keeps track of software revisions and allows many developers to work on a given project without necessarily being connected to a common network.



버전 관리 시스템 (버전 관리 시스템)는 컴퓨터 에서 작성, 편집되는 파일 의 변경 이력을 관리하는 시스템. 특히 소프트웨어 개발에서 소스 코드 관리에 이용되는 경우가 많다.

목차

  [ 숨기기 ] 

개요 편집 ]

버전 관리 시스템의 가장 기본적인 기능은 파일의 생성 날짜, 수정 한 날짜, 변경 사항 등의 기록을 보관하기위한 것이다. 따라서 여러 번 변경 한 파일도 과거의 상태와 변경 내용을 확인하거나 변경 이전 상태로 복원하는 것이 용이하게된다. 더 많은 버전 관리 시스템은 여러 사람이 파일의 편집에 관한 상황을 상정하고있다. 상업적 소프트웨어 개발이나 오픈 소스 프로젝트 등에서는 여러 사람이 여러 파일을 각각 편집하는 각 파일의 최신 상태를 알 수 없게되거나 동일한 파일에 대한 변경 내용이 충돌하는 등의 문제가 생기기 쉽다 이 버전 관리 시스템은 이러한 문제를 해결하는 방법을 제공한다. 그러나 버전 관리 시스템을 개인의 파일 관리에 사용하는 것도 가능하다하고, 소스 코드뿐만 아니라 설정 파일이나 문서의 관리 등에도 사용할 수있다이다.

관리 방식 편집 ]

버전 관리 시스템에서는 파일 버전을 데이터베이스에 저장하고,이 데이터베이스를 일반적으로 저장소 라고 부른다.

버전 관리 시스템의 기본적인 이용 방법은 다음 흐름이된다.

  1. 파일을 저장소에 등록한다.
  2. 파일을 저장소에서 로컬로 추출 (체크 아웃)
  3. 로컬 환경에서 파일에 대해 변경.
  4. 변경된 파일을 저장소에 다시 (체크인)

파일이 체크인되면 시스템에서 "언제" "누가" "어떤 변경했다"등이 기록되어 나중에 참조 할 수있다. 또한 필요에 따라 이전 버전을 검색 할 수도있다.

이러한하는 사용자 인터페이스 는 CUI 와 GUI 등 다양하다. 또한, 통합 개발 환경 을 함께 사용할 수있는 것도있다.

저장소 편집 ]

개인의 RCS 등은 만든 파일을 즉시 출시 할 수 있지만, CVS , Subversion 등의 공동 이용을위한 시스템의 경우 먼저 " 저장소 "라는 파일 관리를위한 디렉토리를 준비한다. 저장소 만들기 작업은 기본적으로 시스템 또는 프로젝트 관리자가 수행 작업자는 그에 대한 파일을 커밋 (체크인), 체크 아웃한다.

저장소가 한곳에 집중하는 시스템을 단일 저장소, 여러 물건을 분산 리포지토리한다.

저장소가 손상 파일을 복구 할 수 없게 될 수 저장소의 정기적 인 백업은 필수로되어있다.

체크 아웃 편집 ]

저장소에서 데이터를 꺼내는 것을 체크 아웃이라고 부른다.

CVS 와 Subversion 은 저장소에서 처음 데이터를 가져 로컬에 저장하는 것을 체크 아웃이라고 부른다. 이후에 다시 다른 사람에 의해 업데이트 된 저장소에서 데이터를 추출하여 데이터를 최신 버전으로 유지하는 것은 체크 아웃이라고 부르지 않고, 업데이트 라고 부른다.

Visual Source Safe (VSS)는 저장소에서 파일을 검색뿐만 아니라, 또한 그 파일에 잠금을 체크 아웃 한 사람이 파일을 체크 인 할 때까지 다른 사람이 편집 할 수 없도록되는 것을 체크 아웃 라고, CVS 나 Subversion은 체크 아웃의 정의가 약간 다르다. 그러나 VSS는 소프트웨어의 버전 및 구성에 따라 잠금을 방지 할 수있다.

저장소에서 체크 아웃 한 후 잠시 동안 누군가가 저장소에 최신 버전의 데이터를 커밋 (체크인)하고있을 가능성이 있기 때문에, 충돌, 충돌을 피하기 위해 체크 아웃 한 데이터로 작업 하기 전에 나 커밋 (체크인)하기 전에 반드시 로컬 업데이트 (VSS에서는 새로라고 부른다)하여 항상 최신 상태로 유지하는 것이 좋습니다있다.

체크인 편집 ]

저장소에 파일을 쓰는 것을 체크인이나 커밋이라고 부른다. VSS는 저장소에서 파일을 검색뿐만 아니라, 또한 그 파일에 잠금을 체크 아웃 한 사람이 파일을 체크 인 할 때까지 다른 사람이 편집 할 수 없도록한다.

잠금 방식과 복사 병합 방식 편집 ]

하나의 파일에 대해 다른 변경이 동시에 발생하면 파일의 일관성을 유지할 수 없게되어 버린다. 버전 관리 시스템에서는 이러한 문제를 방지하기위한 시스템이 준비되어 있지만, 그 방법은 크게 두 가지로 나뉜다. 하나가 " 잠금 "을 이용하는 방법이고, 다른 하나는"복사 병합 "을 이용하는 방법이다.

잠금 방식은 사용자가 편집 할 파일에 잠금을 다른 사용자가 편집 할 수 없도록 해두고 편집​​이 완료되면 잠금을 해제한다. 간단하고 확실한 방법이지만, 다른 사용자는 파일의 편집 완료까지 기다려야하고 비효율적. 또한 무책임한 사용자가 파일에 잠금을 그대로 방치 해 버리는 등의 위험성도있다.따라서 그룹의 사용보다 개인의 파일 관리에 적합하다.

복사 병합 방식으로 편집 할 파일을 시스템에서 사용자의 원래로 복사하고이 복사본을 편집한다. 편집 완료 후 수정 한 부분을 시스템 측에 반영하지만,이 작업을 병합이라고 부른다. 다른 사용자의 편집 중에도 시스템에서 복사는 자유롭게 할 수 있도록하는 것으로, 여러 사용자가 동시에 편집 작업을 진행할 수 있으므로 그룹의 이용에 적합하다. 그러나 각 사용자의 변경이 충돌하는 경우에는 병합하는 시점에서 해결해야한다. 일반적으로 변경 내용이 충돌 사실을 사용자에게 알리고 내용을 확인, 수정하는 방법이 채택되는 경우가 많다.

버전 번호, 태그 브랜치 편집 ]

버전 관리 시스템을 이용하는 경우, 파일에 버전 (개정판) 번호가 추가된다. RCS와 CVS 의 경우 일반적으로 1.1에서 시작하여 파일의 편집이 이루어지는마다 마지막 수치가 증가된다. 그럼 당신은 아무것도 지정하지 않고 파일을 체크 아웃 한 경우 최신 파일을 검색하게되는데,이 버전 번호를 이용하여 이전에 편집 한 파일을 추출 할 수있게된다. 시스템에 따라 버전 번호뿐만 아니라 날짜, 시간으로 파일을 체크 아웃 할 수있게된다.

태그는 버전 관리 번호와는 별도로 파일에 특정 이름을 부여하기위한 것이다. 특히 저장소에있는 파일에 대해 일괄 태그를 붙이는 (자주 "친다"이라한다)하여 특정 저장소의 상태를 쉽게 검색 할 수있게된다. 베타 릴리스 판 · 포팅 등 프로젝트의 구분이 붙은 시점에서 태그를 붙일 수 잘 이루어지고있다.

브랜치는 저장소를 분기하는 것으로, 프로젝트를 분기시켜 여러 방향으로 개발을 동시에 진행할 수있다. 대규모 개발 프로젝트에서 "개발 버전" "안정"과 프로젝트의 방향성을 나누고 싶다면에는 효과적이다. 버전 관리 시스템에서 여러 방향으로 나누어 한 지점을 정리하는 기능을 가진 것도있다.

네트워크의 이용 편집 ]

그룹에서 버전 관리 시스템을 이용하면 네트워크의 이용이 필수적이다. 시스템은 고유의 방법이 있지만, 대부분은 다른 인증 시스템을 이용하여 사용자 인증을 수행하고, 통신 경로를 암호화하여 통신의 안전성을 도모하게된다. 통신은 ssh 를 이용하여 안전성을 확보하는 것이 일반적이다.

다른 익명의 시스템을 준비하고있는 것도있다. 인터넷에서 프로젝트를 공개하는 경우에 자주 사용되어 있기 때문에, 개발중인 소스 코드를 프로젝트에 참여하지 않는 사람들에 대해서도 공개했다.

주요 버전 관리 시스템 편집 ]

무료 소프트웨어 (무료 오픈 소스) 편집 ]

독점 편집 ]

  • AccuRev - 스트림이라는 개념을 사용하여 프로세스 지향의 구성 관리 도구. 버그 추적 시스템을 내장한다. 분산 개발, 병렬 개발 등 다양한 개발 프로세스를 스트림으로 표현할 수있다.
  • Alienbrain - 디지털 자산 관리 시스템. 버전 관리 기능 이외에, 구성 관리, 상태 관리 등의 기능이있다. 닌텐도 에서 사용되어 유명해진. 바이너리 데이터, CG 데이터를 불문하고 기록을 자동으로 저장할 수있다.
  • BitKeeper - 예전 Linux 커널 개발에 사용 된 유명 해졌다.
  • Rational ClearCase
  • Code Co-op
  • Perforce - 중앙. 록 방식. Perforce Software가 개발했다. 병합 기능도있다.
  • SCCS (Source Code Control System) - 소스 코드 관리 시스템. AT & T가 개발 한 RCS에 대응하는 프로그램.
  • SourceHaven
  • StarTeam
  • Visual SourceSafe - Microsoft Visual Studio 와 세트로 사용되는 경우가 많은 버전 관리 시스템.
  • Team Foundation Server - 버전 관리 기능 이외에, 작업 관리 기능, 작업 관리 기능, 자동 빌드, 보고서 생성 기능도있는 Microsoft 소프트웨어 개발 프로젝트 관리 서버 제품.

관련 항목 편집 ]


'OpenSource > Common' 카테고리의 다른 글

OpenSource 소프트웨어의 개요  (0) 2012.12.29
Git 명령어  (0) 2012.10.31
OSGi - 서비스 개념  (0) 2012.10.08
OSGi - “Getting started with OSGi”의 번역  (0) 2012.10.08
루씬(Lucene) 개요 및 원리  (2) 2012.09.24
Posted by linuxism
,