CVS를 사용하여 팀 프로그래밍

CVS(Concurrent Versions System) 팀 프로그래밍 환경에서 팀 구성원은 다른 팀과 별도로 자신의 Workbench에서 모든 작업을 수행합니다. 결과적으로 이들은 작업을 공유하길 원합니다. 작업의 공유는 CVS 저장소를 통해 수행합니다.

분기

CVS는 분기 모델을 사용하여 서로 분리되지만 상호의존적인 여러 작업 과정을 지원합니다. 분기는 개발 팀이 진행 중인 작업을 공유하고 통합하는 위치입니다. 분기는 팀 구성원이 프로젝트를 변경하면서 갱신한 공유 작업공간이라 할 수 있습니다. 분기 모델을 사용하면 개별 구성원이 CVS 팀 프로젝트에서 작업하고, 변경사항이 발생할 때 자신의 작업을 다른 구성원과 공유하고, 프로젝트를 진행하면서 다른 구성원의 작업에 액세스할 수 있습니다. HEAD라고 하는 특수 분기는 저장소에 기본 작업 과정을 표시합니다(HEAD는 트렁크라고도 합니다).

작업 공유

팀 구성원은 새 작업을 생성하면서 변경사항을 분기에 확약하여 작업을 공유합니다. 마찬가지로, 최근의 사용 가능한 작업을 가져오려면 로컬 작업공간을 분기의 변경사항으로 갱신합니다. 따라서 분기는 지속적으로 변경되고 팀 구성원이 새 작업을 제출하면서 다음으로 이동합니다.

분기는 프로젝트의 현재 상태를 효과적으로 표시합니다. 팀 구성원은 언제라도 분기에서 작업공간을 갱신하고 최신 상태인지 확인할 수 있습니다.

분기 및 Workbenche와 상호작용

낙관적 팀 모델

CVS에서는 팀에서 작업하는 데 필요한 두 가지 중요한 기능을 제공합니다.

현재의 작업을 이전 작업과 비교하여 이전 작업을 더 좋은 것으로 되돌릴 수 있기 때문에 히스토리를 유지하는 것이 중요합니다. 팀의 통합된 작업을 포함하여 현재 프로젝트 상태에 대한 한 가지 정의가 있으므로 작업을 관리하는 것이 중요합니다. 이러한 관리는 분기 모델을 통해 제공됩니다.

낙관적 모델은 팀의 구성원이 액세스한 자원을 변경할 수 있는 장소입니다. 두 명의 팀 구성원이 동일한 자원에 대한 분기 변경사항을 확약할 수 있기 때문에, 충돌이 발생할 수 있으며 이러한 충돌을 처리해야 합니다. 이 모델은 충돌이 거의 발생하지 않는 것으로 여겨지기 때문에 낙관적이라 합니다.

권장 작업 흐름

일반적으로 자원은 분리되어 없습니다. 대체로 자원에는 다른 자원에 대한 암시적 또는 명시적 종속성이 있습니다. 예를 들어 웹 페이지에는 다른 웹 페이지에 대한 링크가 있고, 소스 코드에는 다른 소스 코드 자원에서 설명한 항목에 대한 참조가 있습니다.  완전히 독립된 자원은 없습니다.

자원을 분기에 확약할 때 자원의 종속성에 영향을 줄 수 있습니다. 분기는 현재의 프로젝트 상태를 표시하며 팀 구성원이 언제라도 분기 컨텐츠를 새 작업의 기초로 사용할 수 있기 때문에 종속성의 무결성을 보장해야 합니다.

따라서 이상적인 작업 흐름은 분기 무결성이 보존되는 것입니다.

이상적인 작업 흐름

이상적 작업 흐름은 다음과 같이 진행됩니다.

  1. 새로 시작. 작업을 시작하기 전에 작업공간의 자원을 현재의 분기 상태로 갱신하십시오. 처리할 로컬 작업이 없는 경우 가장 빠르게 캐치업하는 방법은 분기(또는 HEAD)에서 원하는 프로젝트를 선택한 다음 체크아웃(또는 프로젝트가 이미 로컬에 존재하는 경우 바꿀 대상 > 저장소의 최신 컨텐츠)을 선택하는 것입니다. 그러면 로컬 자원을 분기의 자원으로 겹쳐씁니다.

  2. 변경 수행. Workbench에서 로컬로 작업하여 새 자원을 작성하고 기존의 자원을 수정하고 진행하면서 로컬에서 저장하십시오.

  3. 동기화. 작업을 확약할 준비가 되면 저장소와 동기화하십시오.

    1. 갱신. 수신 변경사항을 점검하여 로컬 Workbench에 추가하십시오. 그러면 확약할 작업의 무결성에 영향을 줄 수 있는 변경사항이 있는지 판별할 수 있습니다. 충돌을 해결하십시오. 다시 테스트하고 무결성 검사기를 실행하십시오(예: 중단된 하이퍼텍스트 링크 검사, 코드 컴파일 확인 등)

    2. 확약. 변경사항이 최신 분기 컨텐츠에 통합되었으므로 변경사항을 분기에 확약할 수 있습니다. 신중을 기하기 위해 새로운 수신 변경사항이 있으면 이전 단계를 반복할 수 있습니다.

이것이 이상적 작업 흐름입니다. 특정 조건에서는 수신 변경사항이 사용자에게 영향을 주지 않으므로 갱신 없이 확약하도록 선택할 수 있습니다. 그러나 일반적으로 팀 구성원은 위와 유사한 흐름을 따라서 분기 무결성이 손상되지 않게 해야 합니다. 

CVS에 대한 자세한 정보는 http://www.cvshome.org를 참조하십시오.

관련 개념
CVS 저장소
분기
버전
CVS 저장소와 동기화

관련 타스크
CVS 저장소 위치 작성

CVS 저장소에서 프로젝트 체크아웃
 
Workbench에서 자원 바꾸기

CVS를 사용하여 새 프로젝트 공유

저장소와 동기화

갱신

충돌 해결

분기에서 병합

확약

관련 참조
CVS