동시 버전 시스템

Concurrent Versions System
동시 버전 시스템
개발자CVS 팀
초기 릴리즈1990년 11월 19일; 31년(1990-11-19)
안정적 해제
1.11.23 / 2008년 5월 8일; 13년(2008-05-08)
리포지토리
기록 위치C
운영 체제Unix 유사, Windows
유형수정제어
면허증GPL-1.0 또는 라이터[1]
웹사이트cvs.nongnu.org

Concurrent Version System(CVS, Concurrent Versioning System이라고도 함)은 Dick Grune이 1986년 7월에 처음 개발한 개정 제어 시스템이다.[2]

CVS는 단일 파일에서 작동하는 초기 시스템인 RCS프런트 엔드로 작동한다.리포지토리 수준의 변경 추적과 클라이언트-서버 모델에 대한 지원을 추가하여 RCS로 확장한다.[3]

GNU General Public License의 조건에 따라 출시되는 CVS는 무료 소프트웨어다.

디자인

CVS는 전체 프로젝트가 아닌 개별 파일을 관리하는 구형 버전 제어 시스템인 RCS(Revision Control System)의 프런트 엔드로 작동한다.리포지토리 수준의 변경 추적과 클라이언트-서버 모델에 대한 지원을 추가하여 RCS로 확장한다.[3]파일은 저장소의 각 파일에 해당하는 히스토리 파일을 포함하는 숨겨진 디렉토리가 있는 RCS와 동일한 히스토리 형식을 사용하여 추적된다.

CVS는 델타 압축을 사용하여 동일한 파일의 여러 버전을 효율적으로 저장한다.이것은 한 버전에서 다음 버전으로 거의 변경되지 않은 큰 텍스트 파일과 함께 잘 작동한다.소스코드 파일은 대개 이런 경우가 많다.한편, CVS가 파일을 바이너리로 저장하라는 지시를 받으면, 각각의 개별 버전을 서버에 보관한다.이는 일반적으로 버전 간에 컴팩트한 델타 작성이 어려운 실행 가능 이미지와 같은 비 텍스트 파일에 사용된다.

CVS는 심볼 링크가 버전 제어 시스템에 저장될 때 보안 위험을 초래할 수 있기 때문에 심볼 링크를 제외한다.예를 들어 중요한 파일에 대한 심볼 링크를 저장소에 저장할 수 있어 체크인하지 않은 경우에도 파일에 액세스할 수 있다.심볼릭 링크 대신 특정 권한과 의식적인 개입이 필요한 스크립트를 CVS에 체크할 수 있다.[citation needed]

작전

CVS는 모듈로서 관리하는 단일 프로젝트(관련 파일의 세트)에 라벨을 붙인다.CVS 서버는 자신이 관리하는 모듈을 리포지토리에 저장한다.프로그래머들은 체크아웃을 통해 모듈의 복사본을 얻는다.체크아웃된 파일은 작업 복사본, 샌드박스 또는 작업 영역 역할을 한다.작업 복사본에 대한 변경사항은 이를 커밋하여 저장소에 반영된다.업데이트는 리포지토리의 변경사항을 작업 복사본과 병합하는 것이다.

CVS는 클라이언트-서버 아키텍처를 사용한다. 즉, 서버는 프로젝트의 현재 버전과 기록을 저장하고 클라이언트는 프로젝트에 대한 전체 복사본을 "체크아웃"하고, 이 복사본에서 작업한 다음 나중에 변경사항을 "체크인"하기 위해 서버에 연결한다.CVS 서버는 "익명 읽기 액세스"[4]를 허용할 수 있다. 여기서 클라이언트는 빈 암호 또는 간단한 게시된 암호(예: "anoncvs")와 버전을 체크아웃하고 비교할 수 있다. 변경사항의 체크인은 이러한 시나리오에서 개인 계정과 암호를 필요로 한다.여러 개발자가 동일한 프로젝트에서 동시에 작업할 수 있으며, 각 개발자는 프로젝트의 "작업 복사본" 내에서 파일을 편집하고 서버에 수정사항을 전송(또는 체크인)할 수 있다.충돌을 피하기 위해 서버는 파일의 최신 버전에 대한 변경사항만 허용한다.따라서 개발자들은 정기적으로 다른 사람의 변경사항을 통합하여 작업 복사본을 최신 상태로 유지할 것으로 예상된다.이 작업은 대부분 CVS 클라이언트에 의해 자동으로 처리되며, 체크인되지 않은 파일의 로컬 버전과 체크인되지 않은 파일 간에 편집 충돌이 발생할 때만 수동 개입이 필요하다.클라이언트는 또한 "업데이트" 명령을 사용하여 서버에 있는 최신 버전의 로컬 복사본을 최신 버전으로 가져올 수 있다.클라이언트는 또한 버전을 비교하거나 변경 내역을 요청하거나 프로젝트의 과거 스냅샷을 체크아웃할 수 있다(예: 주어진 날짜 기준).체크인 작업이 성공하면, 관련된 모든 파일의 버전 번호가 자동으로 증가하며, 서버는 사용자가 제공한 설명 줄, 날짜 및 작성자 이름을 로그 파일에 기록한다.CVS는 또한 각 커밋에 따라 사용자가 지정한 외부 로그 처리 스크립트를 실행할 수 있다.이러한 스크립트는 CVS의 항목에 의해 설치됨loginfo이메일 알림을 트리거하거나 로그 데이터를 웹 기반 형식으로 변환할 수 있는 파일.

또한 CVS는 프로젝트의 다른 "branchs"를 유지할 수 있다.예를 들어, 소프트웨어 프로젝트의 릴리스 버전은 버그 수정에 사용되는 하나의 분기를 형성할 수 있지만, 현재 개발 중인 버전은 주요 변경사항과 새로운 기능을 포함하여 별도의 분기를 형성할 수 있다.CVS는 대부분의 작업이 트렁크에서 이루어지며, 가지들은 일반적으로 수명이 짧거나 역사적인 것이어야 한다고 가정한다.설계대로 사용하면 분기를 쉽게 관리할 수 있고 분점 운영이 효율적이고 빠르다.[5][6]

휴대성

서버 소프트웨어는 일반적으로 Unix에서 실행되지만(적어도 CVSNT 서버는 마이크로소프트 윈도우즈의 다양한 맛을 지원하지만), CVS 클라이언트는 주요 운영 체제 플랫폼에서 실행될 수 있다.

역사

그루네는 다음과 같이 회상했다.[7]

나는 ACK(암스테르담 컴파일러 키트) C 컴파일러에서 내 제자인 에릭 바알베르겐과 마아텐 와이지와 협력할 수 있도록 CVS를 만들었다.우리 셋은 스케줄이 엄청나게 달랐다(한 학생은 꾸준한 9-5 노동자였고, 다른 한 명은 불규칙했으며, 나는 저녁에만 프로젝트를 할 수 있었다).그들의 프로젝트는 1984년 7월부터 1985년 8월까지 진행되었다.CVS는 처음에 cmt라고 불렸는데, 그것은 우리가 독립적으로 버전을 커밋할 수 있게 해준 명백한 이유 때문이다.

그루네는 1986년 6월 23일 이 코드를 공개하였다.[8]

결국 현재 버전의 CVS로 진화한 코드는 1989년 4월 브라이언 베를리너로부터 시작되었고, 이후 제프 폴크와 많은 다른 기여자들이 투입되었다.브라이언 베를린, 커뮤니티의 혜택을 위해 GPL.[9]에 따라 11월 19일 1990년, CVS버전 1.0은 자유 소프트웨어 Founda에 제출되었다에 개봉되었다 program—which 어떻게 툴과 내부적으로 Prisma, 제3자 개발자는 미국의 커널을 개발함으로 사용되는 확장되었다 설명하는 신문은 CVS에 그의 개선을 도입하는 것을 썼다.ti개발 및 유통을 [10]위해

최신 버전은 2008년 5월 8일에 발매되었다.[11]

입양 및 후계자

오픈 소스 소프트웨어의 세계에서는, CVS(Concurrent Version System)는 오랫동안 버전 제어를 위한 선택 도구였다.그리고 당연히 그렇다.CVS 자체는 무료 소프트웨어로, 지리적으로 분산되어 있는 수십 명의 프로그래머들이 작업을 공유할 수 있도록 하는 네트워크 운영에 대한 비제한적 모드의 운영 및 지원은 오픈소스 세계의 협업적 성격에 매우 잘 부합한다.CVS와 그것의 반차오틱 개발 모델은 오픈 소스의 초석이 되었다.[12]

시간이 지나면서 개발자들은 기능을 추가하고 운영 모델을 변경하며 개발자들의 생산성을 향상시키기 위해 CVS를 기반으로 한 새로운 버전 제어 시스템을 만들었다.CVS 대체 프로젝트에는 CVSNTSubversion이 포함된다.[13][14]

참고 항목

메모들

  1. ^ "Contents of /ccvs/README".
  2. ^ "CVS--Concurrent Versions System v1.12.12.1: Overview". Archived from the original on 15 April 2012. Retrieved 9 December 2011.
  3. ^ a b Stopak, Jacob (November 30, 2019). "The Evolution of Version Control System (VCS) Internals". Retrieved 22 September 2020.
  4. ^ Charles D. Cranor; Theo de Raadt (1999). "Opening The Source Repository With Anonymous CVS, USENIX 1999" (PDF).
  5. ^ Collins-Sussman, Ben; Greg Ward (September 2004). "Subversion Users: Re: Performance (Subversion vs. CVS)". subversion-users. Retrieved 2010-07-07.
  6. ^ West, Adrian (July 2004). "cvs branchtag performance fix". Archived from the original on 2009-08-03. Retrieved 2010-07-07.
  7. ^ "Concurrent Versions System CVS". dickgrune.com.
  8. ^ Dick Grune (July 3, 1986). "CVS, an RCS front-end (cvs)". Newsgroup: mod.sources. Usenet: 122@mirror.UUCP. Retrieved September 14, 2016.
  9. ^ "CVS II: Parallelizing Software Development - Berliner (ResearchIndex)". Archived from the original on September 9, 2004.
  10. ^ "[cvs] Contents of /ccvs/NEWS". cvs.savannah.gnu.org.
  11. ^ "Concurrent Versions System - News: Stable CVS Version 1.11.23 Released! [Savannah]". savannah.nongnu.org.
  12. ^ Ben Collins-Susman, Subversion For Subversion 1.1, 2005 버전 제어
  13. ^ "Subversion FAQ: Why does this project exist?". Subversion. Retrieved September 21, 2009.
  14. ^ "Dispelling Subversion FUD". Ben Collins-Sussman. Archived from the original on July 18, 2011. Retrieved June 30, 2010.

참조

외부 링크