第一部分 CVS伺服器的配置 1、 CVS簡述: CVS是Concurrent Versions System的縮寫,它是目前比較流行與優秀的版本管理與控制工具,它深受大多數開發人員與系統管理的喜愛,同時也是用來管理其它日常文檔(如word工作文檔之類)的一個強有力的工具。這一部分將對CVS伺服器的安裝、配置與使用方法進行簡單、扼要的介紹,以協助大家儘快的使用CVS來進行一些版本的管理與控制工作。 2、 CVS伺服器的安裝 預設情況下,CVS在Redhat Linux中已經安裝,這一點可以通過在Linux命令列的情況下運行: rpm –q cvs 如果出現CVS的版本資訊就證明已經安裝成功了。 CVS伺服器安裝包可以從網上的很多地方下載,也可以到CVS的官方網站進行下載。根據你所使用的系統,下載相應的版本,然後進行安裝。因為我們的項目是在Redhat Linux下使用CVS伺服器進行版本管理,所以本文將主要基於Redhat Linux進行介紹。首先下載CVS伺服器的rpm包,當然也可以下載其它方式的包如來源程式包,然後採用以下命令進行安裝: rpm -ivh cvs-1.11.1p1-7.rpm 3、 CVS伺服器的配置 安裝完之後的第一件事就是要配置CVS伺服器的設定檔,使其能正常的工作。首先在/etc/services檔案中添加cvspserver,使其成為Linux的一種服務也就是cvs伺服器常式的入口,配置如下: cvspserver 2401/tcp # cvs client/server operations cvspserver 2401/udp # cvs client/server operations 如果檔案中已經存在上面的兩行文字,就不用添加了。 4、 配置xinetd,用xinetd來啟動CVS驗證伺服器: 進入到/etc/xinetd.d/目錄,然後編輯一個文字檔,名字一定要與/etc/services中的入口名字cvspserver一致,所以這裡用cvspserver作為檔案名稱,檔案的內容如下所示: service cvspserver { disable = no flags = REUSE socket_type = stream wait = no user = root server = /usr/bin/cvs server_args = -f --allow-root=/usr/cvsroot pserver log_on_failure += USERID } 編輯檔案之後測試cvspserver服務是否配置成功。 執行 /etc/init.d/xinetd restart 重新啟動服務,啟動成功之後,執行下面的語句,驗證服務是否啟動正常: telnet localhost 2401 如果出現如下字樣: Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 輸入hi,會繼續輸出如下字樣 cvs [pserver aborted]: bad auth protocol start: hi Connection closed by foreign host. 出現以上的現象表示CVS使用者驗證伺服器已經配置成功。 如果出現如下字樣,表示配置不成功,請重新檢查以上的配置: Trying 127.0.0.1... telnet: connect to address 127.0.0.1: Connection refused 5、 配置CVS使用者: 首先建立一個使用者組cvs,可以使用groupadd或者addgroup命名,也可以直接編輯/etc/group檔案添加這個組,然後添加一個使用者cvsuser: groupadd cvs useradd cvsuser –g cvs passwd cvsuser 設定新的密碼。 在/usr目錄下建立cvsroot目錄(也可以在其它的目錄下建,但是應該和cvspserver檔案中的選項一致),然後修改/usr/cvsroot的屬主及屬性: cd /usr mkdir cvsroot chown –R cvsuser:cvs cvsroot chmod –R 771 cvsroot 6、 初始化CVS伺服器 安裝完CVS伺服器之後的另一件重要的事情就是要初始化CVS伺服器的根目錄,以後建立的CVS項目都將建立在這個目錄下,採用的命令如下: cvs –d /usr/cvsroot init 如果沒有任何提示,表示初始化成功。初始化成功之後,會在/usr/cvsroot目錄中建立CVSROOT目錄,目錄中有如下檔案: -r--r--r-- 1 root root 493 Apr 5 20:19 checkoutlist -r--r--r-- 1 root root 693 Apr 5 20:19 checkoutlist,v -r--r--r-- 1 root root 760 Apr 5 20:19 commitinfo -r--r--r-- 1 root root 960 Apr 5 20:19 commitinfo,v -r--r--r-- 1 root root 527 Apr 5 20:19 config -r--r--r-- 1 root root 727 Apr 5 20:19 config,v -r--r--r-- 1 root root 753 Apr 5 20:19 cvswrappers -r--r--r-- 1 root root 953 Apr 5 20:19 cvswrappers,v -r--r--r-- 1 root root 1025 Apr 5 20:19 editinfo -r--r--r-- 1 root root 1225 Apr 5 20:19 editinfo,v drwxrwxr-x 2 root root 4096 Apr 5 20:19 Emptydir -rw-rw-rw- 1 root root 0 Apr 5 20:19 history -r--r--r-- 1 root root 1141 Apr 5 20:19 loginfo -r--r--r-- 1 root root 1341 Apr 5 20:19 loginfo,v -r--r--r-- 1 root root 1151 Apr 5 20:19 modules -r--r--r-- 1 root root 1351 Apr 5 20:19 modules,v -r--r--r-- 1 root root 564 Apr 5 20:19 notify -r--r--r-- 1 root root 764 Apr 5 20:19 notify,v -r--r--r-- 1 root root 649 Apr 5 20:19 rcsinfo -r--r--r-- 1 root root 849 Apr 5 20:19 rcsinfo,v -r--r--r-- 1 root root 879 Apr 5 20:19 taginfo -r--r--r-- 1 root root 1079 Apr 5 20:19 taginfo,v -rw-rw-rw- 1 root root 0 Apr 5 20:19 val-tags -r--r--r-- 1 root root 1026 Apr 5 20:19 verifymsg -r--r--r-- 1 root root 1226 Apr 5 20:19 verifymsg,v 這樣目錄/usr/cvsroot就成為CVS伺服器的根目錄,以後建立的目錄都將預設的存放在這個目錄下。 7、 登入cvs伺服器(在Linux或其它Unix系統下進行登入的情況): 輸入如下命令: cvs -d :pserver:cvsuser@localhost:/usr/cvsroot login 提示輸入密碼,輸入上面設定的密碼,如果沒有任何提示,就證明成功登入了 登入成功之後在目前使用者的$HOME目錄中產生.cvspass檔案,可以利用vi對檔案進行察看。 由於以“.”開頭的檔案在Linux中是隱藏的,所以可以利用如下命令進行察看: ls –a 這個檔案記載了使用者的登入資訊。執行登出命令可以刪除該檔案中的登入資訊 cvs -d :pserver:cvsuser@localhost:/usr/cvsroot logout 下面對登入命令的文法進行說明: 其中,:pserver表示採用pserver方式進行使用者登入認證,一般的CVS伺服器都採用這種方式,當然也可以採用其它方式,具體參考相應的資料; :cvsuser表示要登入的使用者名稱,只要是cvs組的成員都可以,如:cvsuser; @host表示要登入的伺服器,可以是DNS名,也可以是IP地址,如:192.168.0.1; :/usr/cvsroot表示CVS在伺服器上的目錄,也可以是其它目錄(由第6中你所指定的用來做init初始化的目錄決定); 提示: a、也可以把export CVSROOT=:pserver:cvsuser@192.168.0.1:/usr/cvsroot這一句直接寫在使用者的初始設定檔案中(如:.bash_profile),這樣使用者每次登入時,只需輸入: cvs login 然後輸入相應的口令就可以登入到cvs伺服器上。 b、如果是本地登入,可以直接把export CVSROOT=/usr/cvsroot這一句寫在使用者的初始設定檔案如:/etc/profile中;然後執行如下命令使環境變數生效: source /etc/profile 8、 向CVS添加新的項目模組 一般我們都已經有一個或多重專案了,這樣我們可以用下面步驟產生一個新的CVS項目。將一個工程檔案置於CVS中進資料列版本設定,在CVS 術語中稱作匯入(import)。從名字上就可以看出,在匯入前需要為此作些準備工作。 輸入操作的基本要求是有個"乾淨"的目錄結構。"乾淨"的意思是不需要版本控制的檔案都被移走了(如編譯產生的檔案,備份檔案等等)。如果工程已經開始一段時間了,這就顯得很重要。在目錄中也許有些是不打算將其置於版本控制下的檔案,但是又想將他們放在這裡,這種情況下,你要在輸入之前將它們移走,然後再移回來。 注意的是CVS 認為空白目錄是不存在的。如果想增加一個既不包含檔案又不包含子目錄的目錄,需要在其下建立一個啞檔案。建議你建立一個名為 README.txt 的檔案,其內容為對目錄的簡要說明。 進入到已有項目的目錄,比如叫 cvstest: cd /home/cvsuser/cvstest 運行命令將專案檔匯入到cvs倉庫中: cvs import -m "this is a cvstest project" cvstest tengtu start 說明:import 是cvs的命令之一,表示向cvs倉庫輸入專案檔. -m參數後面的字串是描述文本,對項目進行描述,如果不加 -m 參數,那麼cvs會自動運行一個編輯器(一般是vi,但是可以通過修改環境變數EDITOR來改成你喜歡用的編輯器)讓你輸入資訊,cvstest |