CVS User Guide
목 차
CVS 소개
- CVS = Concurrent Versions System
- CVS 는 버전 관리 시스템이다.
- CVS 는 RCS 와 달리 다수의 개발자가 동시에 파일 을 관리하게 해준다.
- CVS 는 관리하는 파일 들을 CVS 저장소 (CVS Repository) 라고 부르는 특정 장소에 중앙 집중적으로 저장한다.
- CVS 는 리모트 서버를 통해 접근할 수 있다.
- CVS 명령은 다음과 같은 형식이다.
cvs [전체_옵션] 명령어 [명령어_옵션] [명령어_인수]
- CVS 명령어 에는 다음과 같은 것이 있다.
import checkout update add remove commit tag release
CVS 작업 흐름도
- CVS 를 사용하여 협동 작업을 하는 경우의 일반적인 작업 흐름도는 다음 그림 과 같다.

CVS 저장소 설정
- CVS 저장소가 로컬 디스크에 있을때
bash$ export CVSROOT="/nfs/myhost/repository"
- CVS 저장소가 리모트에 있을때 (자신의 로컬 컴퓨터를 통해 넷웍으로 원격지의 CVS 저장소를 사용할때)
bash$ export CVSROOT=":pserver:user@myhost.com:/nfs/myhost/repository"
bash$ cvs login(Logging in to user@myhost.net)
CVS password:
bash$
새 프로젝트 초기화
- 새 프로젝트를 시작하려면 먼저 빈 디렉토리 (myproj) 를 하나 만든후 그 곳으로 이동한다.
bash$ mkdir myproj
bash$ cd myproj - 새 디렉토리를 CVS 저장소에 등록한다. 설명 에는 새로 시작하는 프로젝트에 대한 간단한 설명문을, 그다음 인수에는 프로젝트 디렉토리명을, LEOKIM 은 프로젝트를 시작하는 사람이나 조직명을 (vendor-tag), 마지막 인수에는 release tag 을 넣는다. 여기서는 REL_0 으로 release 0 이라고 하였다.
bash$ cvs import -m "설명" myproj MY_NAME REL_0
- 성공적으로 CVS 저장소에 등록 (import) 되었으면 디렉토리를 지운다. 이후 지금 생성한 프로젝트 디렉토리는 cvs checkout 명령으로 디렉토리 이하 저장된 내용을 모두 가져와서 작업하게 된다.
bash$ cd ..
bash$ rmdir myproj
프로젝트 시작
- 자신 또는 다른 사람의 프로젝트에 참여해서 작업하려면 먼저 프로젝트 디렉토리명 (또는 모듈명) 을 알아야 한다.
- 프로젝트 디렉토리명은 CVS 저장소의 최상위 디렉토리 내용을 조사해 보면 알 수 있다.
bash$ ls /project/Repository
CVSROOT bbs cvsweb htdocs perl todoapache cvs dot.files httpd-conf templbash$ - 또는 CVS 웹 브라우저 를 통해 열람해 볼 수도 있다.
- 위의 예제에서 CVSROOT은 CVS 저장소 설정에 관련된 파일 들이 들어있으며 나머지는 전부 프로젝트 관련 디렉토리들이다.
- 작업할 프로젝트 디렉토리를 정했으면 (CVSROOT 도 다른 디렉토리와 마찬가지로 취급된다.) cvs checkout 명령으로 저장소의 내용을 자신의 작업환경에 가져온다.
bash$ mkdir work
bash$ cd work
bash$ cvs checkout htdocs
bash$ cd htdocs
최신 자료 유지
bash$ cd work/htdocs
bash$ cvs update일상 작업
편집
- 보통 파일 편집하는 것과 다른 점이 없으며 다만 파일 에 다음과 같은 RCS 지정자를 삽입하여 최근 수정일, 고친 사람, 개정판 번호 등의 정보를 알기 쉽게 한다. (매뉴얼 페이지 co (1) 참고)
- $Id$
- $Date$
- $Revision$
- $Log$
추가
- 파일 이나 디렉토리 모두 동일한 방법으로 아래와 같이 CVS 저장소에 추가한다.
- 단, cvs commit 명령을 수행하기 전까지는 실제로 CVS 저장소에 저장하지 않는다.
- 문서가 아닌 이미지 같은 바이너리 파일 도 추가해서 CVS 저장소에 넣을 수 있는데 이때에는 반드시 -kb 옵션을 주어야 한다.
bash$ mkdir newdir
bash$ cvs add newdir
bash$ cd newdir
bash$ vi newfile.c
bash$ cvs add newfiles.c
bash$ cp ~/somewhere/img/test.gif .
bash$ cvs add -kb test.gif
bash$ cd ..
bash$ cvs commit
삭제
- 불필요한 파일 이나 디렉토리 를 CVS 저장소에서 삭제할 수 있다.
- 추가와 마찬가지로 cvs commit 명령을 수행하기 전까지는 실제로 CVS 저장소에서 삭제하지 않는다.
bash$ rm newfile.c
bash$ cvs remove newfile.c
bash$ cvs commit
작업 내용 영구 저장
충돌 해결 방법
Snapshot 생성
| a.c | b.c | c.c | ||
|---|---|---|---|---|
| ... | ... | ... | ||
| ... | 1.1 | ... | ||
| 1.6 | 1.2 | 2.3 | ||
| 1.7 | 1.3 | 2.4 | - REL_1_0 | |
| 1.8 | 1.4 | 2.5 | ||
| 1.9 | ... | 2.6 | ||
| ... | ... | ... |
bash$ cd prog_a
bash$ cvs commit
bash$ cvs tag REL_1_0
bash$ cvs co -rREL_1_0 prog_a
bash$ cd prog_a
참고 문헌
Trackback URL : http://par.sarang.net/trackback/136




Leave your greetings here.
감사합니다 ^^ 많은 도움 되었어요
댓글 감사합니다.
요즘은 CVS보다는 Subversion이 더 많이 쓰이는 것 같습니다.
저도 지금은 Subversion을 주로 쓰고 있고요.
감사합니다.