結合文檔和一些網上資源,折騰了半天終于搞定了CVS,我寫一點非常簡單的"速成"
的教材.希望對大家有用.
下面是我的步驟和做法.
1,要求:
root 權限;
CVS軟件,請找到相關的rpm,tgz,deb 等包裝上,或者到
http://www.cvshome.org/CVS/Dev/code
下載原程序編譯安裝,這里我不準備介紹它的安裝,請參考CVS自身的文檔安裝.
我使用Slackware的tgz包,安裝的命令是
#installpkg cvs*.tgz
其他包請參考對應包管理工具的命令.
一定的系統資源,要有一定內存(32M能工作得很好),要一定的磁盤空間,看
你的項目的大小和多少而定.
2,架設CVS服務器:
建立CVSROOT目錄,因為這里涉及到用戶對CVSROOT里的文件讀寫的權限問題,
所以比較簡單的方法是建立一個組,然后再建立一個屬于該組的帳戶,而且以后有
讀寫權限的用戶都要屬于該組.假設我們建一個組cvs,用戶名cvsroot.建組和用
戶的命令如下
#groupadd cvs
#adduser cvsroot
生成的用戶家目錄在/home/cvsroot(根據自己的系統調整)
用cvsroot用戶登陸,修改 /home/cvsroot (CVSROOT)的權限,賦與同組人有讀寫
的權限:
$chmod 771 . (或者770應該也可以)
注意:這一部分工作是按照文檔說明做的,是否一定需要這樣沒有試驗,我
會在做試驗后在以后版本的教程說得仔細一點.如果您有這方面的經驗請提
供給我,謝謝.
建立CVS倉庫,(仍然是cvsroot用戶),用下面命令:
$cvs -d /home/cvsroot init
以root身份登陸,修改/etc/.netd.conf 和 /etc/services,分別加入下面一行:
在 /etc/inetd.conf 里加入:
cvsserver stream tcp nowait root /usr/bin/cvs cvs --allow-root=/home/cvsroot pserver
說明:上面的行是單獨一整行,/usr/bin/cvs 應該是你的cvs版本的命令路徑,
請根據自己的系統調整./home/cvsroot 是你建立的CVSROOT的路徑,也請
根據上面建立目錄的部分的內容做調整.
在/etc/services里加入:
cvsserver 2401/tcp
說明:cvsserver是任意的名稱,但是不能和已有的服務重名,也要和上面修
改/etc/inetd.conf那行的第一項一致.這里我用的是CVS的口令認證方式,
CVS還有其他認證方式,我沒有做試驗,如果您有經驗,請補充,謝謝.
添加可以使用CVS服務的用戶到cvs組:
以root身份修改/etc/group,把需要使用CVS的用戶名加到cvs組里,比如我想
讓用戶laser和gumpwu能夠使用CVS服務,那么修改以后的/etc/group應該有下
面這樣一行:
cvs:x:105:laser,gumpwu
在你的系統上GID可能不是105,沒有關系.主要是要把laser和gumpwu用逗號
分隔開寫在后一個冒號后面.當然,象RedHat等分發版有類似linuxconf這樣
的工具的話,用工具做這件事會更簡單些.
重起inetd使修改生效:
#killall -HUP inetd
這樣服務器設置完成了.我們接著搞客戶端.
3,設置客戶端,如果是Linux(或者其他*nix),客戶端和服務器端的軟件是一樣的,如果是
Win,MAC等平臺,請到http://www.loria.fr/cgi-bin/molli/wilma.cgi/rel找相應的客戶端軟件,
這里我先說一下在Linux(*nix)里怎么做:
設置環境變量CVSROOT:
$export CVSROOT=:pserver:laser@the_server_name:
/home/cvsroot
注意:這里的pserver是訪問方式,我在上面設置的是口令認證,所以這里是
pserver,如果你的CVS服務器設置成別的訪問模式,那么需要相應修改.
laser是可以使用 CVS服務器的用戶名,這里可以根據你的設置修改,我在這
個版本設置的是直接使用系統用戶的口令文件,也是說laser必須是CVS服
務器上的合法用戶,這里當然有安全問題,CVS可以設置成為擁有自己的用戶,
我將在以后的版本里面增加這些內容,或者您也可以提供一些補充,或者直接
讀CVS的文檔.the_server_name是CVS服務器的名稱或者IP地址,根據你的情
況填寫,/home/cvsroot是你的CVS服務器的CVSROOT目錄,根據你的CVS服務
器設置做修改或者詢問管理員.你可以把這行放到你的shell的profile里
(.bash_profile,.profile等)這樣不用每次敲一長串命令了.
登陸CVS服務器:
$cvs login,這時候cvs會問你口令,請把你在CVS服務器上的口令敲進去,這里
是laser在CVS服務器上的系統用戶的口令:
Passwd:xxxxxxxx
成功登陸后將在你的家目錄建立一個.cvspass文件,以后不用輸入口令了.
好,客戶端設置完成,簡單吧.
現在服務器和客戶端都設置好了,那么怎么用呢,我在這里寫一個簡單的(估計也是常用
的)命令介紹:
首先,建立一個新的CVS項目,一般我們都已經有一些項目文件了,這樣我們可以用下面步驟
生成一個新的CVS項目:
進入到你的已有項目的目錄,比如叫cvstest:
$cd cvstest
運行命令:
$cvs import -m "this is a cvstest project" cvstest v_0_0_1 start
說明:import 是cvs的命令之一,表示向cvs倉庫輸入項目文件.
-m參數后面的字串是描述文本,隨便寫些有意義的東西,如果不加 -m 參
數,那么cvs會自動運行一個編輯器(一般是vi,但是可以通過修改環境變量
EDITOR來改成你喜歡用的編輯器.)讓你輸入信息,
cvstest 是項目名稱(實際上是倉庫名,在CVS服務器上會存儲在以這個名字
命名的倉庫里.)
v_0_0_1是這個分支的總標記.沒啥用(或曰不常用.)
start 是每次 import 標識文件的輸入層次的標記,沒啥用.
這樣我們建立了一個CVS倉庫了,然后,我們可以把這個測試項目的文件刪除.試驗一下如何
從倉庫獲取文件.這里我假設上面的所有客戶端工作你都已經做過了.
運行下面的命令:
$cvs checkout cvstest
從倉庫中檢索出cvstest項目的源文件.
如果你已經做過一次checkout了,那么不需要重新checkout,只需要進入cvstest項目的目錄,更新
一把行了:
$cd cvstest
$cvs update
一下即可.又或者你不想直接更新,只是想看看有沒有更新的東西,那么:
$cvs status
這時后會打印出一長串狀態報告(你可能需要用類似less這樣的命令分頁顯示,或者定向到一個輸
出文件里慢慢看.),對項目中的每個文件有一份狀態報告,類似這樣:
================================================
File: foo.c Status: Up-to-date
Working revision: 1.1.1.1 'Some Date'
Repository revision: 1.2 /home/cvsroot/cvstest/foo.c,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)