티스토리 뷰

★ Linux

CVS 세팅하기

유쾌한 개발자 anyjava 2008. 7. 9. 00:01

CVS란?


cvs(Concurrent Versions System)는 오픈소스로서 유닉스 및 리눅스 계열에서 가장 오랫동안 많이 사용되어 온 형상 관리 시스템이다.  CVS에는 WinCVS와 TortoiseCVS 등의 클라이언트 프로그램이 존재하고 이클립스와 넷빈즈, J빌더, Idea등의 개발툴에 기본 통합되어 있다.


CVS는 혼자하는 개발, 팀을 이루는 개발, 다국적 개발모두에 유용하며 클라이언트 서버 구조로 잠금 상태를 예약하지 않은 수정병합 방식으로 동일한 소스에 대한 동시 작업을 지원한다. 또한 소스 버전 관리 역시 여러명이 공동 작업을 하는 데 무척 유용한 것으로 평가된다.


CVS 설치방법


  우선 xinetd가 설치되어있어야 한다. cvs가 설치되어있는지 우선 확인해보도록 한다. 루트계정으로 로그인하여 아래 명령어를 입력한다


 # cvs -v 

  혹은

 # cvs -version


CVS가 설치 되어 있다면 버전정보가 보여질 것이다. 만약 설치되어 있지 않다면 http://ftp.gnu.org/non-gnu/cvs/binary/stable/x86-linux/RPMS/i386/ 에서 패키지를 다운로드 할수 있다. 최신 버전의 rpm패키지 버전을 다운로드해 다음과 같이 설치한다. 단 debuginfo의 rpm 패키지는 설치할 필요가 없다.


- 새로 설치한 경우 : rpm -ivh cvs*

- 업데이트 할 경우 : rpm -Uvh cvs*

- 설치된 정보를 확인하는 방법 : rpm-qi cvs


설치를 마친 후 # which cvs를 실행하면 다음과 같이 나타난다.


/usr/bin/cvs


만약, Fedora 라면 # yum install cvs* 을 이용하여 쉽게 설치가 가능할 것이다.


CVS 사용자 추가


CVS의 저장소를 관리 할 수 있는 계정을 만들도록 하자. 이때 추가되는 사용자의 홈디렉토리가 CVS의 저장소가 될 것이다.


 # useradd cvs- cvs라는 사용자 추가

 # passwd cvs - cvs user password 설정


저장소 설정


  여러명이 함께 작업을 할려면 공통으로 보관할 장소가 필요하다 CVS에서 이러한 역할을 하는 곳을 저장소(repository)라 부른다. 이 디렉토리에는 CVS의 전반적인 설정사항과 각 프로젝트의 파일들( 문서, 프로그램 등) 은 물론이고, 각 파일의 버전  관리에 필요한 정보, 파일별 작업 기록들이 저장된다. 여기에 잇는 파일들은 모두 CVS가 관리하므로 사용자는 이 파일들을 직접 건드릴 필요가 전혀 없다. CVS 설치를 완료 했다면 저장소를 설정해 줘야 한다.


# cvs -d /home/cvs init


/home/cvs 디렉토리를 CVS저장소로 초기화한다. -d 옵션은 저장소가 될 디렉토리 경로를 지정하기 위한 옵션이고, init는 저장소를 초기화하기 위한 cvs명령어 이다.

  이 과정을 거친 후 /home/cvs 디렉토리를 살펴보면 CVSROOT라는 이름의 디렉토리가 생성되어 있음을 확인할 수 잇다. 이것은 정상적으로 초기화된 것으로, 이곳에 CVS의 설정 파일이 존재한다.


사용자 관리


  사용자 관리는 두가지 방법으로 나눌 수 잇다.


- CVS가 설치된 서버 시스템(리눅스)에 클라이언트 계정을 모두 등록해 놓고 사용하는 경우

- CVS 서버에만 접근할 수 잇는 계정을 사용하는 경우


참고로 첫번째 방법으로 관리하는 경우 클라이언트는 ssh나 rsh프로토콜로 접근이 가능하며, 두번째 방법으로 관리하는 경우에는 pserver 프로토콜로 접근할 수 있다.


첫번째 방법으로는 앞부분에서 나온것과 같이 사용자를 추가하고 나서 특정그룹에 사용자를 추가하면 될 것이다. 특정 그룹에 사용자 계정을 추가하는 명령어는 usermod이다.


# usermod -G cvs userid


userid를 사용자 그룹 cvs에 추가시키면 /etc/group파일의 내용이 다음과 같이 변경된다.


cvs:x:503:cvs, userid


권한 설정


  CVS에 접근하기 위한 사용자 계정과 그 사용자계정 들을 하나로 묶어두기 위한 사용자 그룹을 만들기가 완료 되었다. 이제 사용자 각각이 아니라 사용자 그룹에게 CVS를 사용할 수 있는 권한을 설정해 줄 차례이다. 다음 명령을 써서 저장소 디렉토리(/home/cvs)와 관련해 cvs그룹에게 권한을 여어준다. CVS 그룹에 포함되어 있는 사용자 계정은 CVS그룹이 가지는 권한을 그대로 물려받게 될 것이다.


# chgrp -R /home/cvs

# chmod 770 /home/cvs /home/cvs/CVSROOT


CVS서버에만 접근 할수 잇는 계정 관리


- 서비스 설정


  CVS전용 계정으로 관리하는 경우 클라이언트는 CVS서버에 pserver 프로토콜을 사용해 접근한다. 이 프로토콜을 사용할 수 있으려면 몇 가지 준비사항이 필요하다. 우선 pserver 프로토콜이 사용하는 포트가 사용 가능하게 설정되어 있는지를 확인해야 한다.


# cat /etc/services | grep 2401


  이 명령어의 결과로 내용이 나타난다면 pserver 프로토콜을 사용할 준비가 되어 있는 것이다.


- pserver 환경 파일 작성


  pserver 프로토콜을 사용하기 위해서는 환경 파일을 작성해야 한다. 슈퍼데몬인 xinetd를 사용하는 경우 /etc/xinetd.d/ 디렉토리에 cvspserver 파을을 만들고 다음 내용을 입력해 줘야 한다. cvspserver 파일을 생성하고 내용을 편집하기 위해 vi 에디터를 사용하자


# vim /etc/xinetd.d/cvspserver


 service cvspserver

{

    disable = no

    flag = REUSE

    socket_type = stream

    wait = no

    user = root

    server = /usr/bin/cvs

    server_args = -f -allow-root=/home/cvs pserver

    log_on_failure += USERID

}

 위의 내용을 /etc/xinetd.conf 에 추가 해도 무방하다. --allow-root는 cvs 저장소가 /home/cvs임을 명시하기 위해 사용된다. 만약 새로운 project1라는 프로젝트를 만들었다면 이 프로젝트는 /home/cvs/project1 디렉토리에 저장된다. cvspserver 파일의 편집을 완료 했으면 다음 명령어를 사용해 xinetd 서비스를 재시작한다.

# service xinetd restart


- cvs server 전용 사용자 계정 추가

  이제 마지막 단계이다. cvs전용의 사용자 계정을 추가 하는 것은 cvs 저장소 디렉토리 아래에 있는 CVSROOT 디렉토리의 passwd 파일을 편집하는 거소가 동일한 개념이다. cvs용 계정을 더 쉽게 추가하기 위해 /usr/local/bin 디렉토리에 cvspasswdgen 파일을 생성하고 다음과 내용의 스크립트를 기록한다.


cvsuser01:ldlmlmR2K0mqw:cvs


  이어서 cvspasswdgen 파일에 대해 다음과 같이 실행 권한을 부여한다.


# chmod +x /usr/local/bin/cvspasswdgen


  이제 다음과 같은 명령어로 CVS 전용 사용자 계정을 추가할 수 있다. cvspasswdgen 명령어의 첫 번째 파라미터는 사용자 계정이름이고, 두번째 파라미터는 해당 계정의 패스워드이다.


# cd /home/cvs/CVSROOT

# cvspasswdgen cvsuser01 cvsuser01 >> passwd


  위 명령어를 입력하면 passwd 파일에 계정정보가 입력 될 것이다. 이제 IDE를 통해 접속을 하면 될것이다. 다음으로 Eclipse를 통해 CVS를 이용하는 것을 올리겠습니다.



참고 자료

 참고 자료
1. Micro Sofrware 2007. 12월호 'CVS를 이용한 프로젝트관리'


'★ Linux' 카테고리의 다른 글

Centos 에 Transmission 설치  (0) 2012.01.31
Linux 파일시스템의 구조  (0) 2009.01.07
[Linux] 페도라 Swap 용량 늘리기  (0) 2009.01.06
리눅스 bash shell 프롬프트 모양  (0) 2009.01.03
Fedora 8에 Firefox 3 설치하기.  (0) 2009.01.03
CVS 세팅하기  (0) 2008.07.09
댓글
댓글쓰기 폼