CVS是版本控制的利器,目前在Linux和Windows下都有不同版本;但是國內(nèi)大多數(shù)應(yīng)用介紹都是基于Linux等開放源代碼的開放性軟件組織,而且講解的也不系統(tǒng),讓人摸不著頭腦;Windows下的CVS使用介紹更是了了無幾。
本文是針對Windows的LAN環(huán)境下使用CVS的經(jīng)驗(yàn)介紹,一步一步的向您介紹如何配置和使用CVS的服務(wù)器端和客戶端。同時(shí),本文只使用到了CVS當(dāng)中最基本的東西,還有很多更為高級的東西,本文暫不涉及。下面是本文的另一個(gè)連接映射,歡迎大家討論使用,共同進(jìn)步。
1. 本文使用的是CVSNT-2.0.4,這是一個(gè)比較穩(wěn)定的版本,不要使用最新的CVSNT-2.1.1,本人在使用中發(fā)現(xiàn)有比較嚴(yán)重的Bug。
3. 上面連接還提供源代碼,有興趣的朋友還可以下載下來仔細(xì)研究:)。
1. 本文使用的是WinCVS-1.3b13,這應(yīng)該是一個(gè)最新版本:),本人在使用過程中并沒有發(fā)現(xiàn)有任何嚴(yán)重的Bug。
3. 此網(wǎng)站還提供豐富的CVS文檔和相關(guān)源代碼,以及多個(gè)OS下面的相關(guān)文檔和代碼;有收藏癖的朋友有福了:)。
4. WinCVS-1.3b13 使用的CVSNT的版本是CVSNT-2.0.2,在與服務(wù)器端的CVSNT-2.0.4 版本配合使用時(shí),未發(fā)現(xiàn)任何不兼容或沖突現(xiàn)象。
5. 在本人的系統(tǒng)中用cvs version命令顯示的結(jié)果如下:
3 服務(wù)器端(CVSNT)的安裝與配置:
3.1 服務(wù)器端機(jī)器和環(huán)境配置:
1. 操作系統(tǒng):Windows 2000 Professional SP2中文版
2. 機(jī)器名稱:Server
3. 機(jī)器地址:192.168.0.6(內(nèi)部IP)
4. 網(wǎng)絡(luò)環(huán)境:100兆交換局域網(wǎng)
5. 硬盤分區(qū)格式:FAT32與NTFS都可以。
6. 準(zhǔn)備2個(gè)CVSNT的工作目錄:
F:"KHRoot (存放自己源代碼的根目錄)
F:"KHTemp (存放CVS出錯(cuò)信息的目錄)
7. 本機(jī)上存在有的用戶列表:(由NT或本機(jī)的使用者創(chuàng)建)
Administrator (系統(tǒng)管理員)
Jackey (普通用戶)
Goury (普通用戶)
Riolee (普通用戶)
3.2 安裝CVSNT:
1. 下載CVSNT-2.0.4;使用administrator登陸到Server機(jī)器上。
2. 雙擊自解壓的exe文件,選擇Full Install,其它按照默認(rèn)方式安裝;安裝完畢后可以在服務(wù)控制器中發(fā)現(xiàn)多了2個(gè)服務(wù):cvsnt與cvslocking
3. 發(fā)送Service Control Panel到桌面,形成快捷方式。
4. 安裝程序會自動(dòng)將CVS安裝路徑,設(shè)置到系統(tǒng)的Path環(huán)境變量當(dāng)中,因此使用者可以在控制臺(cmd)中任意位置執(zhí)行cvs.exe,這一點(diǎn)對下面的配置很重要!!
3.3 配置CVSNT服務(wù)器:
1. 雙擊Service Control Panel快捷方式,在Service Status頁面,確認(rèn)2個(gè)服務(wù)正常和穩(wěn)定運(yùn)行。
2. 選擇Repository頁面,點(diǎn)按Add按鈕,選擇已經(jīng)準(zhǔn)備好的F:"KHRoot這個(gè)目錄,確認(rèn),OK,Yes,這時(shí)會在F:"KHRoot下面建立CVSRoot目錄,這是CVS默認(rèn)的管理目錄(默認(rèn)模塊)。如果報(bào)錯(cuò),那是系統(tǒng)Path路徑未設(shè)置正確。
3. 選擇Advanced頁面,勾上Use local users for pserver ...,(Why? I don’t know!J),在Temporary欄選擇已經(jīng)準(zhǔn)備好的F:"KHTemp,確認(rèn),OK。
4. 點(diǎn)按【應(yīng)用】按鈕,確認(rèn),退出,OK,搞定!!
3.4 小結(jié):
1. 至此,CVSNT服務(wù)器端基本配置完畢,下面進(jìn)行WinCVS的使用和管理。
2. 由于CVS支持遠(yuǎn)程管理,也就是客戶端與服務(wù)器集成的特性,因此,我們將添加用戶、權(quán)限控制、模塊維護(hù)等所有的管理工作都放到遠(yuǎn)端(WinCVS)進(jìn)行管理,服務(wù)器端這時(shí)可以Ctrl+Atl+Del進(jìn)入鎖定狀態(tài)了,下面的所有工作都交給遠(yuǎn)端的WinCVS來進(jìn)行管理。
4 客戶端(WinCVS)的安裝與配置:
4.1 客戶端機(jī)器和環(huán)境配置:
1. 操作系統(tǒng):Windows 2000 Professional SP2中文版
2. 機(jī)器名稱:YCW2000
3. 機(jī)器地址:192.168.0.2(內(nèi)部IP)
4. 網(wǎng)絡(luò)環(huán)境:100兆交換局域網(wǎng),可以直接訪問到Server
5. 硬盤分區(qū)格式:FAT32與NTFS都可以。
4.2 安裝WinCVS:
1. 下載WinCVS 1.3b13,全部按照默認(rèn)安裝就可以了。
2. 啟動(dòng)WinCVS,開始使用。特別注意:以下的所有操作都是在YCW2000(192.168.0.2)這臺機(jī)器上遠(yuǎn)程完成的,此時(shí)的Server(192.168.0.6)主機(jī)已經(jīng)進(jìn)入了鎖定狀態(tài)。
5 管理員使用WinCVS進(jìn)行遠(yuǎn)程管理:
5.1 配置WinCVS成管理員狀態(tài):
1. 準(zhǔn)備管理員工作目錄:(在YCW2000機(jī)器上)
E:"CVSClient"Admin (管理員工作目錄)
E:"CVSTemp (WinCVS臨時(shí)目錄)
2. 第一次啟動(dòng)WinCVS時(shí)會自動(dòng)彈出Preferences配置頁面,也可以通過Admin=>Preference菜單進(jìn)入;第一次使用時(shí)需要配置如下的3個(gè)頁面:
l General頁面設(shè)置:

注:按照圖示方式輸入即可,需要注意的是Path部分的格式是Unix路徑格式,它指的是CVSNT端設(shè)置的工作根目錄。
l CVS頁面設(shè)置:

注:Home路徑是設(shè)置密碼等文件的存放位置,必須指定,否則在登陸時(shí),WinCVS也要彈出設(shè)置框。這個(gè)Home路徑需要Python.exe這個(gè)外掛程序才有效。這里選擇已經(jīng)準(zhǔn)備好的路徑:E"CVSTemp
l WinCVS頁面設(shè)置:

注:此頁面設(shè)置WinCVS的外掛編輯程序,通常使用UltraEdit比較方便。
3. 設(shè)置管理員的工作路徑:可以點(diǎn)按圖標(biāo)
,或View=>Browse Location=>Change…菜單進(jìn)行設(shè)置,選擇已經(jīng)準(zhǔn)備好的路徑:E:"CVSClient"Admin,確認(rèn),OK,這時(shí)此目錄將出現(xiàn)在WinCVS的左邊導(dǎo)航欄【W(wǎng)orkspace】內(nèi)。
4. 至此,WinCVS就被配置成了遠(yuǎn)程的管理員使用狀態(tài),下面進(jìn)行一般管理員需要的基本操作演練。演練的內(nèi)容為:Administrator需要管理Jackey,Goury,Riolee三個(gè)用戶,分別為這3個(gè)用戶建立工作目錄,每個(gè)人只能訪問自己的工作目錄。同時(shí),只有Administrator能夠進(jìn)行權(quán)限分配,其它人沒有任何管理權(quán)限。
5.2 管理員進(jìn)行管理演練:
1. 登陸遠(yuǎn)程CVSNT:
l 選擇Admin=>Login菜單,默認(rèn)設(shè)置,OK。
l 彈出密碼輸入框,確認(rèn),OK。注意觀察輸出框【OutPut】的返回結(jié)果。
2. Checkout默認(rèn)模塊:(CVSRoot管理模塊)
l 在左邊導(dǎo)航欄【W(wǎng)orkspace】內(nèi),選擇【Admin】點(diǎn)按右鍵,選擇【Checkout modules…】,在【Checkout settings】中輸入CVSRoot,確定,OK。如下圖:

l 如果成功的話,會在【Admin】欄下增加一個(gè)【CVSRoot】目錄。表示您已經(jīng)將【CVSRoot】這個(gè)管理模塊下載到本地了。
3. CVS中目錄權(quán)限介紹:
l 系統(tǒng)支持的目錄權(quán)限列表:
r (讀取權(quán)限)
w (寫入權(quán)限)
c (創(chuàng)建和刪除權(quán)限)
n (沒有任何權(quán)限)
l 默認(rèn)情況下,任何用戶都擁有任何目錄的所有權(quán)限。
l 任何情況下只有目錄的擁有者和Administrator才有權(quán)力更改目錄的使用權(quán)限。下面將會介紹如何修改目錄權(quán)限和目錄的擁有者。
4. 修改CVSRoot的權(quán)限:只讓Administrator擁有rcw三種全部權(quán)限。
l 選中剛剛下載的【CVSRoot】模塊,【Ctrl+L】或Admin=>Command Line…,彈出Command Line Settings對話框,直接執(zhí)行CVS命令。
l 取消所有用戶的默認(rèn)權(quán)限:cvs chacl default:n 回車,OK,完成。
l 設(shè)置Administrator擁有所有權(quán)限:cvs chacl administrator:rcw 回車,OK,完成。
l 更改【CVSRoot】的擁有者:cvs chown administrator 回車,OK,完成。
l 查看【CVSRoot】的權(quán)限狀態(tài):cvs lsacl 回車,OK,在【Output】中顯示:
Owner: administrator
default:n
administrator:rwc
l 【CVSRoot】的權(quán)限配置完畢。
5. 編寫代碼庫中的模塊文件,便于多用戶下載方便。
l 需要自己編寫的模塊文件格式如下:(實(shí)現(xiàn)基本功能)
【模塊一的描述】【n個(gè)空格或參數(shù)】【相對目錄路徑一(DirA)】
【模塊二的描述】【n個(gè)空格或參數(shù)】【相對目錄路徑二(DirB)】
……
【模塊X的描述】【n個(gè)空格或參數(shù)】【相對目錄路徑X(DirX)】
l 【描述信息】與【相對路徑】在字面上不一致時(shí),需要使用-a參數(shù)。
l 【相對路徑】指的是CVS會自動(dòng)帶上根路徑,這里是F:"KHRoot,所以上面例子的完整路徑為:F:"KHRoot"DirA
l 了解了模塊文件結(jié)構(gòu),現(xiàn)在來實(shí)際操作一把:雙擊【CVSRoot】模塊下的modules文件,用UltraEdit打開進(jìn)行編輯。
l 為Jackey,Goury,Riolee三個(gè)用戶分配工作目錄和完成其它模塊描述。
CVSRoot CVSRoot
Jackey工作目錄 -a Jackey
Goury工作目錄 -a Goury
Riolee工作目錄 -a Riolee
l 編輯完畢,存盤。回到WinCVS,選中modules這個(gè)文件【Ctlr+M】或右鍵選擇【Commit selection…】,默認(rèn)設(shè)置,【確認(rèn)】,OK,完成上傳。
6. 為三個(gè)用戶分別上傳工作目錄:
l 在YCW2000機(jī)器上的E:"CVSClient"Admin分別建立三個(gè)目錄分別名為:Jackey,Goury,Riolee,作為臨時(shí)交換目錄。
l 在新創(chuàng)建的每個(gè)目錄中用UltraEdit或拷貝一個(gè)Readme.txt作為引子文件!!:)
l 然后,回到WinCVS,在【W(wǎng)orkspace】欄的【Admin】目錄下形成如下的目錄結(jié)構(gòu):

l 分別選中Goury,Jackey,Riolee,右鍵,點(diǎn)按【Import Module】,選擇【Continue】,其它全部使用默認(rèn)值,【確定】,OK,完成上傳工作。
l 仔細(xì)觀察【Output】窗口,確認(rèn)都成功上傳了。
l 轉(zhuǎn)移到系統(tǒng)的Explore程序中,刪除E:"CVSClient"Admin目錄下的Jackey,Goury,Riolee三個(gè)目錄。然后回到WinCVS當(dāng)中。(一定要?jiǎng)h除!!!:)
l 至此,就完成了工作目錄的上傳工作。
7. 【Checkout】下載3個(gè)用戶的工作目錄到【Admin】目錄下:
l 在【W(wǎng)orkspace】欄選擇【Admin】目錄,右鍵,點(diǎn)按【Checkout Module…】,如下圖:

l 選擇【…】,得到CVSNT上最新的模塊配置情況,彈出如下的信息框:

l 這個(gè)結(jié)構(gòu)圖就是剛才在modules當(dāng)中編寫的模塊文件格式信息。選擇【Jackey工作目錄】,下載到Y(jié)CW2000機(jī)器的E:"CVSClient"Admin目錄下。
l 按照以上操作,依次分別下載【Goury工作目錄】和【Riolee工作目錄】。形成如下狀態(tài):

8. 為三個(gè)用戶分別設(shè)置各自目錄的訪問權(quán)限。(只有自己才能訪問自己的工作目錄)
l 選中【Goury】目錄,【Ctrl+L】或Admin=>Command Line…,彈出Command Line Settings對話框,直接執(zhí)行CVS命令。
l 取消所有用戶的默認(rèn)權(quán)限:cvs chacl default:n 回車,OK,完成。
l 設(shè)置Goury擁有所有權(quán)限:cvs chacl goury:rcw 回車,OK,完成。
l 查看【CVSRoot】的權(quán)限狀態(tài):cvs lsacl 回車,OK,在【Output】中顯示:
Owner: administrator
default:n
goury:rwc
l 按照以上的方法依次分別設(shè)置【Jackey】與【Riolee】的工作目錄訪問權(quán)限。
l 至此,完成了3個(gè)用戶的目錄權(quán)限分配。注意,雖然Administrator也沒有權(quán)力再次【Checkout】那3個(gè)用戶的工作目錄,但是它是這些目錄的擁有者又是Administrator,因此,只有它才有權(quán)力更改這些目錄的訪問權(quán)限。
9. CVSNT系統(tǒng)中的用戶管理原則:
l CVSNT的用戶與本機(jī)(這里是Server機(jī)器)上的NT用戶是相關(guān)聯(lián)的,即CVSNT用的全是本機(jī)上存在的已有用戶,因此在默認(rèn)情況下可以不用設(shè)置任何用戶名,只要使用本機(jī)上已經(jīng)存在的用戶名就可以用WinCVS進(jìn)行登陸。
l 只有用Administrator身份登陸到CVSNT系統(tǒng)中,才有權(quán)力進(jìn)行新用戶的創(chuàng)建和刪除。
l 使用CVS創(chuàng)建的新用戶,必須與服務(wù)器端機(jī)器上的NT用戶相綁定,才能生效;因此,這個(gè)新用戶實(shí)際上是綁定它的NT用戶的一個(gè)替身,在CVS系統(tǒng)中稱為“別名”。
l 一個(gè)NT用戶可以有多個(gè)‘替身’或‘別名’,充當(dāng)多個(gè)CVS用戶。
10. 用WinCVS進(jìn)行新用戶的添加和刪除。(確保使用Administrator登陸)
l 【Ctrl+L】或Admin=>Command Line…,彈出Command Line Settings對話框,直接執(zhí)行CVS命令。
l 添加新用戶【Killer】:cvs passwd -a Killer 回車,設(shè)置密碼,OK,完成。
l 綁定【Killer】到【Jackey】:cvs passwd -r Jackey Killer 回車,設(shè)置密碼,OK,完成。
l 兩次輸入的密碼可以不同,但以第二次輸入的密碼為最終密碼。
l 刪除用戶【Killer】:cvs passwd -X Killer 回車,OK,完成。
l 其它特殊的功能查看passwd命令的幫助。
11. 使用完畢后,一定要【Logout】,因?yàn)閃inCVS退出時(shí)并不會自動(dòng)注銷自己在遠(yuǎn)端的會話;這樣做是為了防止其它人接著打開WinCVS,不用登陸就可以完成你能進(jìn)行的所有操作了。
6 WinCVS中常見的特殊操作:
6.1 如何刪除下載的文件或目錄:
1. 選中下載的某個(gè)或多個(gè)文件,執(zhí)行【Remove】命令。
2. 再次選中這些文件,執(zhí)行【Commit】命令就完成了刪除文件的操作。
3. 本質(zhì)上CVS是不會刪除任何文件和目錄的,即使是執(zhí)行了以上操作,刪除了某些文件,遠(yuǎn)端CVS實(shí)際執(zhí)行的是將提交刪除的文件放到了一個(gè)叫【Attic】的目錄下,因此,這些被刪除的文件是可以通過一定的方法恢復(fù)的。
6.2 如何恢復(fù)已經(jīng)刪除的文件或目錄:
1. 在執(zhí)行了【Remove】命令之后恢復(fù)文件。
l 【Ctrl+L】直接輸入命令cvs add xxxxx,或執(zhí)行【Add Selection】界面操作。
l 這樣就可以直接恢復(fù)還未提交的刪除文件。
2. 在執(zhí)行了【Commit】命令之后恢復(fù)文件。
l 只能用【Ctrl+L】直接輸入命令cvs add xxxxx,這時(shí)會得到一個(gè)空的文件。
l 選中這個(gè)空文件,執(zhí)行【Update】操作,得到這個(gè)文件的實(shí)體。
l 再次選中這個(gè)文件,執(zhí)行【Commit】操作,得到這個(gè)文件最新版本。
3. 由于CVS系統(tǒng)中本質(zhì)上不會刪除任何目錄,因此,談不上對目錄的恢復(fù),但是CVS系統(tǒng)默認(rèn)情況下是要在用戶本機(jī)上(如:YCW2000