cvs 설정

프로그램/Etc 2008.09.22 13:50


==== cvs(Concurrent Versions System)

- 여러 사람이 공동으로 프로젝트를 수행할 때 발생되는 소스 덮어쓰기 소스 동기화 문제를 해결하기 위한 시스템

- 개발자는 자신의 디렉토리에서 혼자서 작업하듯이 프로젝트 진행이 가능

- 중간 중간 cvs 서버에 있는 최신 프로젝트 파일과 자신의 작업 디렉토리의 파일을 동기화 시킬 필요가 있다.

- cvs 는 파일이 변경될 때 마다 파일의 버전을 증가시켜가며 프로젝트를 관리


=== cvs 설치 확인

# cvs  -v

다운로드 위치 : www.cvshome.org


=== 저장소(Repository) 생성 및 초기화

저장소 -  해당 디렉토리에 프로젝트에서 사용할 모든 파일이 위치
              개발자들은 저장소에 등록된 프로젝트 파일을 다운 받아서 사용


# mkdir /home/cvs            // 저장소로 사용할 일반 디렉토리 생성
# cvs  -d  /home/cvs  init        //저장소 초기화(cvs 에서 사용하는 제어파일이 들어 있는 CVSROOT 디렉토리를 생성)


=== cvs 사용자 등록 및 접근권한 설정

# useradd cvs
# chown  -R  root.cvs  /home/cvs 
# chmod  -R  770  /home/cvs
# passwd cvs           // cvs 유저에 대한 패스워드 설정


==== cvs 서버에 접속할 개발자 등록

cvs 접속할 사용자는 cvs 서버에서만 인식하는 사용자로 ssh 등으로 시스템에 로그인은 불가능하다.

# htpasswd  -nb  test1  1234         // 개발자 id : test1, 패스워드 : 1234
test1:암호화된 패스워드              //   암호화된 패스워드를 복사

# htpasswd  -nb  test2  5678         // 개발자 id : test1, 패스워드 : 1234
test1:암호화된 패스워드              //   암호화된 패스워드를 복사

# vim  /home/cvs/CVSROOT/passwd       //개발자id 와 암호화된 패스워드를 아래 형식에 맞추어 기록

test1:암호화된 패스워드:cvs
test2:암호화된 패스워드:cvs


====  cvs 서버 실행

# vim  /etc/xinetd.d/cvs        //아래 항목 수정

  disable = no
  server_agrs  = -f  --allow-root=/home/cvs  pserver


# service xinetd restart
# netstat  -na  | grep  2401    //cvs 포트 2401 확인


===== cvs 에 로그인

# cvs  -d  :pserver:개발자id@ip주소:2401/home/cvs  login       // cvs 서버에 로그인

=====  cvs 에 프로젝트 파일 등록

# cd /linuxc
# cvs import -m "메신저 프로젝트" linuxc  project  start
# ls /home/cvs/linuxc        // 저장소 디렉토리에 linuxc 디렉토리 생성 및 각 파일들이 [파일명].v 형태로 등록여부 확인
             // 저장소에 등록된 파일은 직접 수정하지 말것

====== cvs 에서 프로젝트 파일 다운로드(checkout)

# cvs  -d  :pserver:개발자id@ip주소:2401/home/cvs  login       // cvs 서버에 로그인
# cvs checkout  linuxc    // 모듈 다운로드(모듈 : 저장소 디렉토리에 생성되는 디렉토리를 의미)

======= 수정한 파일 저장소에 업로드

# cvs  -d  :pserver:개발자id@ip주소:2401/home/cvs  login      
# cvs commit  -m  "hello.c 파일 주석추가"  hello.c        //commit 명령을 내릴때 마다 버전 정보는 증가
                // cvs 서버 접속후 업데이트 여부 확인
 
======== 여러개의 수정한 파일을 저장소에 업로드 하는 경우

수정한 파일이 있는 디렉토리에서 cvs commit 명령 수행

# cd /linuxc
# cvs commit


======== 현재 작업 디렉토리에 최신 소스 반영

# cvs  update       

현재 작업디렉토리의 소스파일 버전이 저장소 디렉토리에 있는 버전보다 낮은 경우
commit 명령이 수행되지 않으므로 수시로 updae 명령을 수행한다.


======== 디렉토리와 파일을 추가

일반 텍스트 파일이 아닌 바이너리파일(이미지파일 등) 추가시에는 -kb 옵션을 함께 사용(주의)

# cvs  add  [디렉토리명 또는 파일명]
# cvs commit

======== 파일 제거

# rm  [삭제할파일명]
# cvs remove  [삭제할파일명]
# cvs ci

===== 삭제된 파일 복구(삭제 이전버전으로 복구)

# cvs  status [삭제한파일명]    //삭제된 파일의 버전확인
# cvs  up  -j  [삭제된파일버전] -j  [삭제된파일이전버전]  [삭제된파일명]
예] cvs  up  -j 1.3  -j 1.2  [삭제된파일명]

# cvs  add  [삭제된파일명]    // 완전히 복구하기 위해 파일을 cvs 에 추가


==== 디렉토리 제거

저장소에서 직접 rm 명령으로 제거


== 파일을 이전 버전으로 복구

# cvs  status  파일명   //현재 버전 확인
# cvs  up  -r  [이전버전]  -p  파일명  >  파일명


=== 이전버전으로 복구된 파일 수정후 업로드가 안되는 경우

#  cvs up -A  복구파일명  //해당 파일의 sticky tag 제거
#  cvs  commit


=== 특정 부분을 수정한 사람 확인

# cvs  log  파일명


===  파일 버전 차이점 확인

형식 : cvs  diff  -r  이전버전  -r  최신버전  파일명

# cvs  diff  -r  1.2  -r  1.3  hello.c


==== 전체 파일을 특정 시점으로 되돌리고자 하는 경우

#  cvs  tag  TAG_1        // 현재 파일들의 버전에 태그 설정(현재 시점의 파일 버전 마킹)

#  cvs  up  -r  TAG_1    // TAG_1 시점으로 복구


==== cvs 설정 변경

# cd /ect/xinetd.d/cvs 안에 설정내용 변경 후 재시작

신고

티스토리 툴바