CVS(Concurrent Versions System)是基於 RCS/SCCS 發展的版本控制系統,採用「中央倉庫」模式:伺服器端建立倉庫統一管理原始碼,開發者下載(Checkout)至本地修改,再提交(Commit)回倉庫。可實現版本追蹤、衝突控制、多人協作無覆蓋風險。
# rpm -qa | grep cvs
# 若未安裝,從安裝光碟或 https://www.cvshome.org 取得 rpm 包安裝
# groupadd cvs
# adduser cvsroot
# su - cvsroot
$ chmod 771 . # 賦予同組讀寫權限
$ cvs -d /home/cvsroot init
inetd 系統(編輯 /etc/inetd.conf):
cvsserver stream tcp nowait root /usr/bin/cvs cvs -f --allow-root=/home/cvsroot pserver
xinetd 系統(建立 /etc/xinetd.d/cvspserver):
service cvsserver {
socket_type = stream
wait = no
user = root
server = /usr/bin/cvs
server_args = -f --allow-root=/home/cvsroot pserver
log_on_failure += USERID
only_from = 192.168.0.0/24
}
同步編輯 /etc/services 加入:cvsserver 2401/tcp
# 編輯 /etc/group,將開發者加入 cvs 組
cvs:x:105:laser,gumpwu
# killall -HUP inetd # inetd 系統
# /etc/rc.d/init.d/xinetd restart # xinetd 系統
# netstat -lnp | grep 2401 # 確認 port 2401 監聽中
在 $CVSROOT/CVSROOT/ 目錄下管理三個檔案:
用戶名:加密密碼:對應系統用戶# passwd
laser:$xxefajfka:cvspub
gumpwu:$ajfaal323:cvspub
henry:$fajkdpaieje:cvspub
betty:fjkalffjieinfn:cvspub
anonymous::cvspub
# readers
anonymous
betty
# writers
laser
gumpwu
henry
$ cd /path/to/project
$ cvs import -m "Initial import" project_name vendor_tag release_tag
注意:匯入目錄應為「乾淨」原始碼,勿包含編譯產物。
:pserver:admin@192.168.1.9:/home/cvsroot作者團隊在 Linux + Java + JBuilder 環境下導入 CVS 管理 ERP 專案,有效解決多人同時修改同一檔案導致的程式錯誤問題,版本控制效果顯著。