Ubuntu Linux에는 CVS가 기본적으로 설치돼있지 않다. 따라서 버전관리를 위해 CVS 서버를 설치하려면 다음 과정이 필요하다. 아래 예에서는 cvs를 CVS 사용자 ID 로 등록하고, /home/cvsroot를 CVS 저장소로 사용한다.

1. 다음 두 명령으로 xinetd와 cvs를 설치 한다.

sudo apt-get install xinetd
sudo apt-get install cvs

2. adduser 명령을 이룔 CVS 서버를 위한 사용자와 그룹 그리고 CVS 저장소를 위한 디렉터리를 생성한다. 아래 명령은 cvs 라는 ID를 가진 사용자 및 그룹을 만들고 홈 디렉터리로 /home/cvsroot 를 생성한다. 이 디렉터리는 나중에 CVS 저장소를 위해 사용할 것이다.

sudo adduser --home /home/cvsroot cvs

3. 사용자 cvs로 로그인 한 후 CVS 저장소를 만든다.

su - cvs
cvs -d /home/cvsroot init

4. 사용자 cvs 로부터  로그아웃 후 vi 편집기를 이용 xinetd 에 cvspserver를 등록한다.

sudo vi /etc/xinetd.d/cvspserver

service cvspserver
{
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/cvs
        server_args     = -f --allow-root=/home/cvsroot pserver
        disable         = no
        log_on_failure += USERID
}

5. cvspserver 등록을 마쳤으면 xinetd를 재가동 한다음 CVS를 사용할 수 있다. 물론 일반 사용자의 경우 CVS를 사용하려면 /home/cvsroot 디렉터리에 쓰기 권한이 있어야 한다.

sudo /etc/init.d/xinetd restart

AND


Solaris 10이 실행되는 SPARC 서버에서는 기본적으로 CVS가 제공되지 않는다. 게다가 Solaris 10에서는 inetd를 사용하지 않고 SMF를 사용한다. 따라서 cvs를 설피하고 /etc 폴더 안에 있는 inetd.conf를 수정하는 것 만으로는 제대로 동작하지 않는다. 이를 해결하기 위해서는 몇단계의 과정이 필요한데 그리 복잡하지는 않다.

1. cvs 설치

앞서 언급했듯이 SPARC Solaris 10 에서는 cvs가 기본적으로 제공되지 않기 때문에 이 프로그램을 다운받아 설체해야 한다. 필자는 SUN 프리웨어 사이트(http://www.sunfreeware.com)에서 SPARC Solaris 10용 패키지를 다운로드 받아 설치했다. 필자가 받은 버전은 1.12.13 버전으로 아래 링크를 클릭하면 받을 수 있다.


cvs를 설치하려는 서버에 패키지를 다운로드 받은 후에는 관리자로 접속한 뒤 gzip 명령으로 압축을 푼 후 pkgadd 명령을 이용 패키지를 설치한다. 형식은 다음과 같다.

gzip -d cvs-1.12.13-sol10-sparc-local.gz
pkgadd -d cvs-1.12.13-sol10-sparc-local

그러면 /usr/local 디렉터리 아래에 cvs 관련 파일들이 설치된다.

2. /etc/inetd.conf 수정

/etc/inetd.conf의 적당한 부분에 다음 라인을 추가한다.

cvspserver      stream  tcp     nowait  root    /usr/local/bin/cvs      cvs --allow-root=/users/cvsroot   pserver

위 라인에서 파란색 부분은 cvs 실행파일이 저장된 경로이고 붉은색 부분은 실제 버전관리를 위한 데이터가 저장될 cvsroot repository의 경로이다. 이 부분을 자신에게 맞게 수정한다.

3. inetconv 실행

Solaris 10으로 넘어오면서 모든 서비스가 기본적으로 SMF(Service Management Facility)로 변경됐기 때문에 inetd.conf에 설정된 서비스들을 제공하려면 이것 역시 SMF에 등록해야 한다. 이는 관리자로 접속한 후 쉘에서 단지 -e 옵션과 함께 inetconv 명령을 입력함으로써 해결할 수 있다.

inetconv -e

그러면 몇몇 메세지를 출력한 뒤 SMF에 등록되어 cvs 기능을 이용할 수 있다. 확인은 다음 명령으로 가능하다.

svcs | grep cvs

그러면

online         23:59:32 svc:/network/cvspserver/tcp:default

명령이 출력되는데 online 상태라면 현재 cvs 서비스가 가능하다.

AND


누군가가 CVS 서버에 등록한 변경사항이 있다면 그 내용을 자신의 이클립스 프로젝트에 반영해야 한다. 이를 "Update" 한다고 한다. 앞서 "addCookie.jsp" 내용을 변경하고 이를 서버에 등록하였다. 그러면 다른 사람은 변경된 "addCookie.jsp"를 "Update"하여 변경된 내용을 해야 할 것이다.

다음 그림을 보자. 앞에서 "addCookie.jsp"가 변경되어 서버에 등록했을 때 버전이 "1.1"에서 "1.2"로 변경되었으나 그림에서는 아직 프로젝트의 "addCookie.jsp"의 버전이 "1.1"로 변경이 반영되지 않았음을 알 수 있다. 그러면 이 파일의 버전을 CVS 서버로부터 "Update" 하여 "1.2"로 업그레이드하는 방법을 살펴보겠다.

사용자 삽입 이미지

"Update"를 위해서는 프로젝트 이름에서 마우스 오른쪽 클릭을 해 나타나는 메뉴에서 "Team", "Update" 항목을 차례로 선택한다.

사용자 삽입 이미지

그러면 서버에 접속하여 변경된 내용을 가져온다. 이 과정은 "CVS Update" 창을 통해 나타난다.

사용자 삽입 이미지

CVS Update


"Update"를 통해 변경된 내용이 적용되면 변경된 파일의 버전이 변경된다. 다음 그림에서와 같이 "addCookie.jsp"의 버전이 "Update" 후 "1.1"에서 "1.2"로 변경되었음을 알 수 있다.

사용자 삽입 이미지
AND

공동으로 진행되는 프로젝트는 누군가에 의해 변경이 발생하고 이러한 변경은 또 다른 사람이 반영해야 한다. 만약 내가 "JSPLecture" 프로젝트에서 "WebContent" 디렉터리의 "addCookie.jsp" 프로그램을 변경했다면 이를 다른 사람이 반영할 수 있도록 CVS 서버에 등록해야 한다. 이클립스에서는 CVS에 의해 동기화 된 프로젝트의 프로그램과 같은 어떤 파일이 변경됐다면 다음 그림에 표시된 박스에서와 같이 해당 파일이름과 그 파일을 포함하고 있는 상위 디렉터리의 이름들 그리고 프로젝트 이름 좌측에 ">" 표시가 붙는다. 그러므로 ">" 표시가 있다면 CVS 서버와 동기화 된 후 변경이 발생했음을 의미하므로 이 변경사항을 서버에 등록해야 한다.

사용자 삽입 이미지
 
변경된 내용을 서버에 등록하는 것을 "Commit" 이라고 하며 이는 프로젝트 이름에서 마우스 오른쪽 클릭을 한 후 뜨는 메뉴 창에서 "Team", "Commit..." 항목을 차례로 선택한다.

사용자 삽입 이미지
 
앞 그림에서 "Commit..." 항목을 선택하면 변경된 내용에 대한 간단한 설명을 위한 "Commit" 창이 뜬다 필요하다면 굵은 선으로 된 박스 창에 설명을 추가할 수 있다. 여기서는 아무 설명도 입력하지 않고 "Finish" 버튼을 클릭 CVS 서버에 변경된 내용을 등록한다.

사용자 삽입 이미지
 
여기서는 아무런 설명도 하지 않고 등록했기 때문에 확인을 위한 "Empty commit comment" 창이 뜬다. 변경에 대한 설명을 입력하지 않아도 이 창이 뜨지 않도록 하려면 "Remember decision" 항목을 선택하면 된다.

사용자 삽입 이미지

Empty commit comment

 
변경된 내용이 CVS 서버에 반영됐다면 ">" 표시가 없어지며 변경된 파일 "addCookie.jsp"의 버전이 변경된다.

사용자 삽입 이미지
 
AND


학교에서 실습한 프로젝트를 CVS 서버에 등록한 후 집이나 학교에서 이어서 진행하려면 우선 CVS 서버에 등록된 프로젝트를 이클립스로 가져와야 한다. 이를 위해서는 프로젝트 익스플로러에서 마우스 오른쪽 버튼을 클릭한 다음 "New" -> "Project..." 항목을 차례로 선택하는 것으로부터 시작한다. 이것은 CVS 서버에서 관리되고 있는 프로젝트를 최초로 이클립스레 가져오는 단계를 설명한 것이다.

사용자 삽입 이미지

CVS에서 Project 가져오기

 
"New Project" 창이 뜨면 "CVS" 의 "Projects from CVS" 항목을 선택한 후 "Next>" 버튼을 클릭한다.

사용자 삽입 이미지

New Project


CVS 서버 접속에 필요한 계정정보를 입력받기 위한 "Enter Repository Location Information" 창이 뜨면 다음과 같은 내용의 정보를 입력한다. 이는 앞 CVS 서버에 프로젝트 등록하기에서 다룬 내용과 동일하다. "Host"에는 CVS 서버의 도메인 이름이나 IP 주소를 입력하고, "Repository path"에는 서버에서 CVS 저장소를 위한 디렉터리 이름을 입력한다. "Repository path"는 서버에 따라 다르므로 관리자에게 문의하여 입력해야 한다. 그리고 CVS 서버에 주어진 자신의 아이디와 비밀번호를 "User"와 "Password"에 각각 입력한 뒤 "Next>" 버튼을 클릭한다. "Save password" 좌측의 체크박스를 선택하면 암호를 기억하여 다음부터 암호를 묻지 않는다.

사용자 삽입 이미지
 
"Select Module"창은 CVS 서버에서 관리되고 있는 모듈들 중 하나를 선택 가져올 수 있도록 한다. 여기서 모듈이름은 이클립스에서 프로젝트 이름과 동일하다고 생각하면 된다. 이 창이 뜨면 "Use an existing module" 항목을 선택한다. 그러면 서버에서 관리되는 모듈 목록이 나열되는데, 우리는 "JSPLecture"를 가져올 것이므로 이것을 선택한 후 "Finish" 버튼을 클릭한다. 그러면 서버로 부터 프로젝트 "JSPLecture"를 가져온다. 그 과정은 "Checking out JSPLecture from CVS" 창에 진행 상태와 함께 표시된다.

사용자 삽입 이미지

Select Module

 
사용자 삽입 이미지

Checking out 창

 
프로젝트 가져오기가 완료되면 CVS 서버 이름과 함께 프로젝트 이름인 "JSPLecture"가 출력된다.

 
사용자 삽입 이미지
 
AND