CVS (Concurrent Versions System) 는 동시 버전 관리 시스템이며 보통 소프트웨어 프로젝트를 진행할 때,
파일로 이뤄진 모든 작업과 모든 변화를 추적하고, 여러 개발자(지역적으로 떨어진)가 협력하여 작업할 수 있게 합니다. 더 자세한건.. 위키피디아를 참고 하세요.

http://ko.wikipedia.org/wiki/CVS


1. CVS 설치

cvs 가 설치 되어 있는지 확인하고 아래 처럼 찾을수 없다면 cvs 를 설치 합니다.

[root@ruo91 ~]# cvs
-bash: cvs: command not found

[root@ruo91 ~]# yum -y install cvs


2. CVS 사용자, 그룹 생성

cvs 를 사용할 유저와 그룹을 생성 해주고 저장소 디렉토리에 유저, 그룹, 디렉토리 권한 등을 부여 해줘야 합니다.

[root@ruo91 ~]# groupadd cvs
[root@ruo91 ~]# useradd -g cvs -s /sbin/nologin cvs
[root@ruo91 ~]# chown -R cvs.cvs /home/cvs
[root@ruo91 ~]# chmod -R 770 /home/cvs

cvs -d 를 사용하여 지정된 디렉토리에 CVSROOT 라는 하위 디렉토리가 생성 해줍니다.

[root@ruo91 ~]# mkdir /home/cvs/ruo91
[root@ruo91 ~]# cvs -d /home/cvs/ruo91 init
[root@ruo91 ~]# chown -R cvs.cvs /home/cvs/ruo91
[root@ruo91 ~]# chmod -R 770 /home/cvs/ruo91

[root@ruo91 ~]# ls -al /home/cvs/ruo91 | grep CVSROOT
drwxrwxr-x 3 root root 4096 10월 21 20:58 CVSROOT

아파치의 htpasswd 바이너리 파일을 이용하여 crypt 알고리즘으로 생성 된 비밀번호를 생성 해줍니다.

[root@ruo91 ~]# /usr/local/apache2/bin/htpasswd -nb 사용자ID 비밀번호

[root@ruo91 ~]# /usr/local/apache2/bin/htpasswd -nb ruo91 123456
ruo91:tblgIWIzLSVqE

crypt 알고리즘으로 생성 된 비밀번호를 CVSROOT 디렉토리에서 passwd 파일을 생성 후 아래 처럼 내용을 추가 해줍니다.

[root@ruo91 ~]# echo ‘ruo91:tblgIWIzLSVqE:cvs’ >> /home/cvs/ruo91/CVSROOT/passwd

[root@ruo91 ~]# cat /home/cvs/ruo91/CVSROOT/passwd
ruo91:tblgIWIzLSVqE:cvs

ruo91:tblgIWIzLSVqE:cvs 를 자세히 보면 3개의 필드별로 :(세미콜론)을 사용하여 구분 하며
첫번째는 사용자 ID, 두번째는 아파치의 htpasswd 의 crypt 알고리즘으로 생성 된 비밀번호, 세번째는 cvs 사용자의 권한으로 접근의 의미 입니다.

사용자ID:암호화 된 비밀번호:cvs 사용자 권한으로 접근

3. CVS 서버 실행

저장소 디렉토리를 서비스 하기 위한 cvspserver 파일을 생성 해줍니다.

[root@ruo91 ~]# vi /etc/xinetd.d/cvspserver

service cvspserver
{
       disable         = no
       flags           = REUSE
       socket_type     = stream
       wait            = no
       user            = cvs
       server          = /usr/bin/cvs
       server_args     = -f –allow-root=/home/cvs/ruo91 pserver
}

적용을 위해 xinetd 데몬을 재시작 합니다.

[root@ruo91 ~]# service xinetd restart
xinetd 를 정지 중: [  OK  ]
xinetd (을)를 시작 중: [  OK  ]

cvs 서버가 실행 되고 있는지 확인 합니다. (기본 포트는 2401)

[root@ruo91 ~]# netstat -ant | grep 2401
tcp        0      0 0.0.0.0:2401                0.0.0.0:*                   LISTEN   

4. CVS 테스트
CVS 로그인

[root@ruo91 ~]# cvs -d :pserver:ruo91@localhost:/home/cvs/ruo91 login
Logging in to :pserver:ruo91@localhost:2401/home/cvs/ruo91
CVS password:

CVS 체크아웃 후 저장소 다운로드

[root@ruo91 ~]# cvs -d:pserver:ruo91@localhost:/home/cvs/ruo91 co httpd-2.2.14

아파치 2.2.14 다운로드 테스트…

[root@ruo91 ~]# cvs -d:pserver:ruo91@localhost:/home/cvs/ruo91 co httpd-2.2.14
cvs checkout: Updating httpd-2.2.14
cvs checkout: Updating httpd-2.2.14/build
cvs checkout: Updating httpd-2.2.14/build/pkg
cvs checkout: Updating httpd-2.2.14/build/rpm
cvs checkout: Updating httpd-2.2.14/build/win32
cvs checkout: Updating httpd-2.2.14/docs
cvs checkout: Updating httpd-2.2.14/docs/cgi-examples
cvs checkout: Updating httpd-2.2.14/docs/conf
cvs checkout: Updating httpd-2.2.14/docs/conf/extra
cvs checkout: Updating httpd-2.2.14/docs/docroot
cvs checkout: Updating httpd-2.2.14/docs/error
cvs checkout: Updating httpd-2.2.14/docs/error/include
cvs checkout: Updating httpd-2.2.14/docs/icons
cvs checkout: Updating httpd-2.2.14/docs/icons/small
cvs checkout: Updating httpd-2.2.14/docs/man
cvs checkout: Updating httpd-2.2.14/docs/man/tr
cvs checkout: Updating httpd-2.2.14/docs/manual
cvs checkout: Updating httpd-2.2.14/docs/manual/developer
cvs checkout: Updating httpd-2.2.14/docs/manual/faq
cvs checkout: Updating httpd-2.2.14/docs/manual/howto
cvs checkout: Updating httpd-2.2.14/docs/manual/images
cvs checkout: Updating httpd-2.2.14/docs/manual/misc
cvs checkout: Updating httpd-2.2.14/docs/manual/mod
cvs checkout: Updating httpd-2.2.14/docs/manual/platform
cvs checkout: Updating httpd-2.2.14/docs/manual/programs
cvs checkout: Updating httpd-2.2.14/docs/manual/rewrite
cvs checkout: Updating httpd-2.2.14/docs/manual/ssl
cvs checkout: Updating httpd-2.2.14/docs/manual/style
cvs checkout: Updating httpd-2.2.14/docs/manual/style/css
cvs checkout: Updating httpd-2.2.14/docs/manual/style/lang
cvs checkout: Updating httpd-2.2.14/docs/manual/style/latex
cvs checkout: Updating httpd-2.2.14/docs/manual/style/xsl
cvs checkout: Updating httpd-2.2.14/docs/manual/style/xsl/util
cvs checkout: Updating httpd-2.2.14/docs/manual/vhosts
cvs checkout: Updating httpd-2.2.14/include
cvs checkout: Updating httpd-2.2.14/modules
cvs checkout: Updating httpd-2.2.14/modules/aaa
cvs checkout: Updating httpd-2.2.14/modules/arch
cvs checkout: Updating httpd-2.2.14/modules/arch/netware
cvs checkout: Updating httpd-2.2.14/modules/arch/win32
cvs checkout: Updating httpd-2.2.14/modules/cache
cvs checkout: Updating httpd-2.2.14/modules/database
cvs checkout: Updating httpd-2.2.14/modules/dav
cvs checkout: Updating httpd-2.2.14/modules/dav/fs
cvs checkout: Updating httpd-2.2.14/modules/dav/lock
cvs checkout: Updating httpd-2.2.14/modules/dav/main
cvs checkout: Updating httpd-2.2.14/modules/debug
cvs checkout: Updating httpd-2.2.14/modules/echo
cvs checkout: Updating httpd-2.2.14/modules/experimental
cvs checkout: Updating httpd-2.2.14/modules/filters
cvs checkout: Updating httpd-2.2.14/modules/generators
cvs checkout: Updating httpd-2.2.14/modules/http
cvs checkout: Updating httpd-2.2.14/modules/ldap
cvs checkout: Updating httpd-2.2.14/modules/loggers
cvs checkout: Updating httpd-2.2.14/modules/mappers
cvs checkout: Updating httpd-2.2.14/modules/metadata
cvs checkout: Updating httpd-2.2.14/modules/proxy
cvs checkout: Updating httpd-2.2.14/modules/ssl
cvs checkout: Updating httpd-2.2.14/modules/test
cvs checkout: Updating httpd-2.2.14/os
cvs checkout: Updating httpd-2.2.14/os/beos
cvs checkout: Updating httpd-2.2.14/os/bs2000
cvs checkout: Updating httpd-2.2.14/os/netware
cvs checkout: Updating httpd-2.2.14/os/os2
cvs checkout: Updating httpd-2.2.14/os/tpf
cvs checkout: Updating httpd-2.2.14/os/tpf/samples
cvs checkout: Updating httpd-2.2.14/os/unix
cvs checkout: Updating httpd-2.2.14/os/win32
cvs checkout: Updating httpd-2.2.14/server
cvs checkout: Updating httpd-2.2.14/server/mpm
cvs checkout: Updating httpd-2.2.14/server/mpm/beos
cvs checkout: Updating httpd-2.2.14/server/mpm/experimental
cvs checkout: Updating httpd-2.2.14/server/mpm/experimental/event
cvs checkout: Updating httpd-2.2.14/server/mpm/mpmt_os2
cvs checkout: Updating httpd-2.2.14/server/mpm/netware
cvs checkout: Updating httpd-2.2.14/server/mpm/prefork
cvs checkout: Updating httpd-2.2.14/server/mpm/winnt
cvs checkout: Updating httpd-2.2.14/server/mpm/worker
cvs checkout: Updating httpd-2.2.14/srclib
cvs checkout: Updating httpd-2.2.14/srclib/apr
cvs checkout: Updating httpd-2.2.14/srclib/apr/atomic
cvs checkout: Updating httpd-2.2.14/srclib/apr/atomic/netware
cvs checkout: Updating httpd-2.2.14/srclib/apr/atomic/os390
cvs checkout: Updating httpd-2.2.14/srclib/apr/atomic/unix
cvs checkout: Updating httpd-2.2.14/srclib/apr/atomic/win32
cvs checkout: Updating httpd-2.2.14/srclib/apr/build
cvs checkout: Updating httpd-2.2.14/srclib/apr/build/pkg
cvs checkout: Updating httpd-2.2.14/srclib/apr/build/rpm
cvs checkout: Updating httpd-2.2.14/srclib/apr/docs
cvs checkout: Updating httpd-2.2.14/srclib/apr/dso
cvs checkout: Updating httpd-2.2.14/srclib/apr/dso/aix
cvs checkout: Updating httpd-2.2.14/srclib/apr/dso/beos
cvs checkout: Updating httpd-2.2.14/srclib/apr/dso/netware
cvs checkout: Updating httpd-2.2.14/srclib/apr/dso/os2
cvs checkout: Updating httpd-2.2.14/srclib/apr/dso/os390
cvs checkout: Updating httpd-2.2.14/srclib/apr/dso/unix
cvs checkout: Updating httpd-2.2.14/srclib/apr/dso/win32
cvs checkout: Updating httpd-2.2.14/srclib/apr/file_io
cvs checkout: Updating httpd-2.2.14/srclib/apr/file_io/netware
cvs checkout: Updating httpd-2.2.14/srclib/apr/file_io/os2
cvs checkout: Updating httpd-2.2.14/srclib/apr/file_io/unix
cvs checkout: Updating httpd-2.2.14/srclib/apr/file_io/win32
cvs checkout: Updating httpd-2.2.14/srclib/apr/include
cvs checkout: Updating httpd-2.2.14/srclib/apr/include/arch
cvs checkout: Updating httpd-2.2.14/srclib/apr/include/arch/aix
cvs checkout: Updating httpd-2.2.14/srclib/apr/include/arch/beos
cvs checkout: Updating httpd-2.2.14/srclib/apr/include/arch/netware
cvs checkout: Updating httpd-2.2.14/srclib/apr/include/arch/os2
cvs checkout: Updating httpd-2.2.14/srclib/apr/include/arch/os390
cvs checkout: Updating httpd-2.2.14/srclib/apr/include/arch/unix
cvs checkout: Updating httpd-2.2.14/srclib/apr/include/arch/win32
cvs checkout: Updating httpd-2.2.14/srclib/apr/locks
cvs checkout: Updating httpd-2.2.14/srclib/apr/locks/beos
cvs checkout: Updating httpd-2.2.14/srclib/apr/locks/netware
cvs checkout: Updating httpd-2.2.14/srclib/apr/locks/os2
cvs checkout: Updating httpd-2.2.14/srclib/apr/locks/unix
cvs checkout: Updating httpd-2.2.14/srclib/apr/locks/win32
cvs checkout: Updating httpd-2.2.14/srclib/apr/memory
cvs checkout: Updating httpd-2.2.14/srclib/apr/memory/unix
cvs checkout: Updating httpd-2.2.14/srclib/apr/misc
cvs checkout: Updating httpd-2.2.14/srclib/apr/misc/netware
cvs checkout: Updating httpd-2.2.14/srclib/apr/misc/unix
cvs checkout: Updating httpd-2.2.14/srclib/apr/misc/win32
cvs checkout: Updating httpd-2.2.14/srclib/apr/mmap
cvs checkout: Updating httpd-2.2.14/srclib/apr/mmap/unix
cvs checkout: Updating httpd-2.2.14/srclib/apr/mmap/win32
cvs checkout: Updating httpd-2.2.14/srclib/apr/network_io
cvs checkout: Updating httpd-2.2.14/srclib/apr/network_io/beos
cvs checkout: Updating httpd-2.2.14/srclib/apr/network_io/os2
cvs checkout: Updating httpd-2.2.14/srclib/apr/network_io/unix
cvs checkout: Updating httpd-2.2.14/srclib/apr/network_io/win32
cvs checkout: Updating httpd-2.2.14/srclib/apr/passwd
cvs checkout: Updating httpd-2.2.14/srclib/apr/poll
cvs checkout: Updating httpd-2.2.14/srclib/apr/poll/os2
cvs checkout: Updating httpd-2.2.14/srclib/apr/poll/unix
cvs checkout: Updating httpd-2.2.14/srclib/apr/random
cvs checkout: Updating httpd-2.2.14/srclib/apr/random/unix
cvs checkout: Updating httpd-2.2.14/srclib/apr/shmem
cvs checkout: Updating httpd-2.2.14/srclib/apr/shmem/beos
cvs checkout: Updating httpd-2.2.14/srclib/apr/shmem/os2
cvs checkout: Updating httpd-2.2.14/srclib/apr/shmem/unix
cvs checkout: Updating httpd-2.2.14/srclib/apr/shmem/win32
cvs checkout: Updating httpd-2.2.14/srclib/apr/strings
cvs checkout: Updating httpd-2.2.14/srclib/apr/support
cvs checkout: Updating httpd-2.2.14/srclib/apr/support/unix
cvs checkout: Updating httpd-2.2.14/srclib/apr/tables
cvs checkout: Updating httpd-2.2.14/srclib/apr/test
cvs checkout: Updating httpd-2.2.14/srclib/apr/test/data
cvs checkout: Updating httpd-2.2.14/srclib/apr/test/internal
cvs checkout: Updating httpd-2.2.14/srclib/apr/threadproc
cvs checkout: Updating httpd-2.2.14/srclib/apr/threadproc/beos
cvs checkout: Updating httpd-2.2.14/srclib/apr/threadproc/netware
cvs checkout: Updating httpd-2.2.14/srclib/apr/threadproc/os2
cvs checkout: Updating httpd-2.2.14/srclib/apr/threadproc/unix
cvs checkout: Updating httpd-2.2.14/srclib/apr/threadproc/win32
cvs checkout: Updating httpd-2.2.14/srclib/apr/time
cvs checkout: Updating httpd-2.2.14/srclib/apr/time/unix
cvs checkout: Updating httpd-2.2.14/srclib/apr/time/win32
cvs checkout: Updating httpd-2.2.14/srclib/apr/user
cvs checkout: Updating httpd-2.2.14/srclib/apr/user/netware
cvs checkout: Updating httpd-2.2.14/srclib/apr/user/unix
cvs checkout: Updating httpd-2.2.14/srclib/apr/user/win32
cvs checkout: Updating httpd-2.2.14/srclib/apr-util
cvs checkout: Updating httpd-2.2.14/srclib/apr-util/buckets
cvs checkout: Updating httpd-2.2.14/srclib/apr-util/build
cvs checkout: Updating httpd-2.2.14/srclib/apr-util/build/pkg
cvs checkout: Updating httpd-2.2.14/srclib/apr-util/build/rpm
cvs checkout: Updating httpd-2.2.14/srclib/apr-util/crypto
cvs checkout: Updating httpd-2.2.14/srclib/apr-util/dbd
cvs checkout: Updating httpd-2.2.14/srclib/apr-util/dbm
cvs checkout: Updating httpd-2.2.14/srclib/apr-util/dbm/sdbm
cvs checkout: Updating httpd-2.2.14/srclib/apr-util/docs
cvs checkout: Updating httpd-2.2.14/srclib/apr-util/encoding
cvs checkout: Updating httpd-2.2.14/srclib/apr-util/hooks
cvs checkout: Updating httpd-2.2.14/srclib/apr-util/include
cvs checkout: Updating httpd-2.2.14/srclib/apr-util/include/private
cvs checkout: Updating httpd-2.2.14/srclib/apr-util/ldap
cvs checkout: Updating httpd-2.2.14/srclib/apr-util/memcache
cvs checkout: Updating httpd-2.2.14/srclib/apr-util/misc
cvs checkout: Updating httpd-2.2.14/srclib/apr-util/strmatch
cvs checkout: Updating httpd-2.2.14/srclib/apr-util/test
cvs checkout: Updating httpd-2.2.14/srclib/apr-util/test/data
cvs checkout: Updating httpd-2.2.14/srclib/apr-util/uri
cvs checkout: Updating httpd-2.2.14/srclib/apr-util/xlate
cvs checkout: Updating httpd-2.2.14/srclib/apr-util/xml
cvs checkout: Updating httpd-2.2.14/srclib/apr-util/xml/expat
cvs checkout: Updating httpd-2.2.14/srclib/apr-util/xml/expat/conftools
cvs checkout: Updating httpd-2.2.14/srclib/apr-util/xml/expat/lib
cvs checkout: Updating httpd-2.2.14/srclib/pcre
cvs checkout: Updating httpd-2.2.14/srclib/pcre/doc
cvs checkout: Updating httpd-2.2.14/srclib/pcre/testdata
cvs checkout: Updating httpd-2.2.14/support
cvs checkout: Updating httpd-2.2.14/support/SHA1
cvs checkout: Updating httpd-2.2.14/support/win32
cvs checkout: Updating httpd-2.2.14/test