WinCVS與CVSNT簡明使用手則

1、前言:

CVS
是版本控制的利器,目前在LinuxWindows下都有不同版本;但是國內大多數應用介紹都是基於Linux等開放源代碼的開放性軟件組織,而且講解的也不繫統,讓人摸不着頭腦;Windows下的CVS使用介紹更是了了無幾。
本文是針對WindowsLAN環境下使用CVS的經驗介紹,一步一步的向您介紹如何配置和使用CVS的服務器端和客戶端。同時,本文只使用到了CVS當中最基本的東西,還有很多更爲高級的東西,本文暫不涉及。下面是本文的另一個連接映射,歡迎大家討論使用,共同進步。

文章連接
http://www.kuihua.net/book/list.asp?id=66
論壇連接http://www.kuihua.net/bbs/dispbbs.asp?boardID=1&;RootID=670&ID=670

2、安裝版本:

2.1
、服務器端(CVSNT)

1. 本文使用的是CVSNT-2.0.4,這是一個比較穩定的版本,不要使用最新的CVSNT-2.1.1,本人在使用中發現有比較嚴重的Bug
2.
下載連接http://www.cvsnt.org 目前,它提供2.0.62.1.1版本的下載。

3.
上面連接還提供源代碼,有興趣的朋友還可以下載下來仔細研究:)。

4.
有心的朋友,仔細觀察就會發現http://www.cvsnt.org 並沒有提供任何客戶端的下載,那是因爲CVS.exe既可以用於服務器端又可以用於客戶端,WinCVS是爲了客戶端使用的方便而定製的外殼。(關於這一點,本人未得到任何證實,只是本人在使用過程中的一種體會,歡迎大家討論。)

2.2、客戶端(WinCVS)

1. 本文使用的是WinCVS-1.3b13,這應該是一個最新版本:),本人在使用過程中並沒有發現有任何嚴重的Bug
2.
下載連接
http://sourceforge.net/projects/cvsgui/
3.
此網站還提供豐富的CVS文檔和相關源代碼,以及多個OS下面的相關文檔和代碼;有收藏癖的朋友有福了:)。

4. WinCVS-1.3b13
使用的CVSNT的版本是CVSNT-2.0.2,在與服務器端的CVSNT-2.0.4 版本配合使用時,未發現任何不兼容或衝突現象。

5.
在本人的系統中用cvs version命令顯示的結果如下:

Client: Concurrent Versions System (CVSNT) 2.0.2 (client/server)
Server: Concurrent Versions System (CVSNT) 2.0.4 (client/server)

3、服務器端(CVSNT)的安裝與配置:

3.1、服務器端機器和環境配置:

1. 操作系統:Windows 2000 Professional SP2中文版
2.
機器名稱:
Server
3.
機器地址:192.168.0.6 (內部
IP)
4.
網絡環境:100兆交換局域網

5.
硬盤分區格式:FAT32NTFS都可以。

6.
準備2CVSNT的工作目錄:

F:/KHRoot (
存放自己源代碼的根目錄
)
F:/KHTemp (
存放CVS出錯信息的目錄
)
7.
本機上存在有的用戶列表:(由NT或本機的使用者創建)

Administrator (
系統管理員
)
Jackey (
普通用戶
)
Goury (
普通用戶
)
Riolee (
普通用戶)

3.2、安裝CVSNT

1. 下載CVSNT-2.0.4;使用administrator登陸到Server機器上。
2.
雙擊自解壓的exe文件,選擇Full Install,其它按照默認方式安裝;安裝完畢後可以在服務控制器中發現多了2個服務:cvsnt
cvslocking
3.
發送Service Control Panel到桌面,形成快捷方式。

4.
安裝程序會自動將CVS安裝路徑,設置到系統的Path環境變量當中,因此使用者可以在控制檯(cmd)中任意位置執行cvs.exe,這一點對下面的配置很重要!!

3.3、配置CVSNT服務器:

1. 雙擊Service Control Panel快捷方式,在Service Status頁面,確認2個服務正常和穩定運行。
2.
選擇Repository頁面,點按Add按鈕,選擇已經準備好的F:/KHRoot這個目錄,確認,OKYes,這時會在F:/KHRoot下面建立CVSRoot目錄,這是CVS默認的管理目錄(默認模塊)。如果報錯,那是系統Path路徑未設置正確。

3.
選擇Advanced頁面,勾上Use local users for pserver ...,(Why? I don’t know!J,Temporary欄選擇已經準備好的F:/KHTemp,確認,OK

4.
點按【應用】按鈕,確認,退出,OK,搞定!!

3.4、小結:

1.
至此,CVSNT服務器端基本配置完畢,下面進行WinCVS的使用和管理。
2.
由於CVS支持遠程管理,也就是客戶端與服務器集成的特性,因此,我們將添加用戶、權限控制、模塊維護等所有的管理工作都放到遠端(WinCVS)進行管理,服務器端這時可以Ctrl+Atl+Del進入鎖定狀態了,下面的所有工作都交給遠端的WinCVS來進行管理。

4 客戶端(WinCVS)的安裝與配置:

4.1 客戶端機器和環境配置:

1.
操作系統:Windows 2000 Professional SP2中文版
2.
機器名稱:
YCW2000
3.
機器地址:192.168.0.2 (內部
IP)
4.
網絡環境:100兆交換局域網,可以直接訪問到
Server
5.
硬盤分區格式:FAT32NTFS都可以。

4.2 安裝WinCVS

1. 下載WinCVS 1.3b13,全部按照默認安裝就可以了。
2.
啓動WinCVS,開始使用。特別注意:以下的所有操作都是在YCW2000(192.168.0.2)這臺機器上遠程完成的,此時的Server(192.168.0.6)主機已經進入了鎖定狀態。

5 管理員使用WinCVS進行遠程管理:

5.1 配置WinCVS成管理員狀態:

1. 準備管理員工作目錄:(YCW2000機器上)
E:/CVSClient/Admin (
管理員工作目錄
)
E:/CVSTemp (WinCVS
臨時目錄
)
2.
第一次啓動WinCVS時會自動彈出Preferences配置頁面,也可以通過Admin=>Preference菜單進入;第一次使用時需要配置如下的3個頁面:

General
頁面設置:

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

CVS
頁面設置: 注:Home路徑是設置密碼等文件的存放位置,必須指定,否則在登陸時,WinCVS也要彈出設置框。這個Home路徑需要Python.exe這個外掛程序纔有效。這裏選擇已經準備好的路徑:
E/CVSTemp
WinCVS
頁面設置:

注:此頁面設置WinCVS的外掛編輯程序,通常使用UltraEdit比較方便。

3.
設置管理員的工作路徑:可以點按圖標 ,或View=>Browse Location=>Change…菜單進行設置,選擇已經準備好的路徑:E:/CVSClient/Admin,確認,OK,這時此目錄將出現在WinCVS的左邊導航欄【Workspace】內。

4.
至此,WinCVS就被配置成了遠程的管理員使用狀態,下面進行一般管理員需要的基本操作演練。演練的內容爲:Administrator需要管理JackeyGouryRiolee三個用戶,分別爲這3個用戶建立工作目錄,每個人只能訪問自己的工作目錄。同時,只有Administrator能夠進行權限分配,其它人沒有任何管理權限。

5.2 管理員進行管理演練:

1. 登陸遠程CVSNT
  
選擇Admin=>Login菜單,默認設置,OK
  
彈出密碼輸入框,確認,OK。注意觀察輸出框【OutPut】的返回結果。
2. Checkout
默認模塊:(CVSRoot管理模塊)

  
在左邊導航欄【Workspace】內,選擇【Admin】點按右鍵,選擇【Checkout
  modules…】,在【Checkout settings】中輸入CVSRoot,確定,OK。如下圖:

  
如果成功的話,會在【Admin】欄下增加一個【CVSRoot】目錄。表示您已經將【
  CVSRoot】這個管理模塊下載到本地了。

3. CVS中目錄權限介紹:

系統支持的目錄權限列表:
r (
讀取權限
)
w (
寫入權限
)
c (
創建和刪除權限
)
n (
沒有任何權限
)
默認情況下,任何用戶都擁有任何目錄的所有權限。
任何情況下只有目錄的擁有者和Administrator纔有權力更改目錄的使用權限。下面將會介紹如何修改目錄權限和目錄的擁有者。

4. 修改CVSRoot的權限:只讓Administrator擁有rcw三種全部權限。

選中剛剛下載的【CVSRoot】模塊,【Ctrl+L】或Admin=>Command Line…,彈出Command Line Settings對話框,直接執行CVS命令。
取消所有用戶的默認權限:cvs chacl default:n 回車,OK,完成。
設置Administrator擁有所有權限:cvs chacl administrator:rcw 回車,OK,完成。
更改【CVSRoot】的擁有者:cvs chown administrator 回車,OK,完成。
查看【CVSRoot】的權限狀態:cvs lsacl 回車,OK,在【Output】中顯示:
Owner: administrator
default:n
administrator:rwc
CVSRoot】的權限配置完畢。

5. 編寫代碼庫中的模塊文件,便於多用戶下載方便。

l 需要自己編寫的模塊文件格式如下:(實現基本功能)
【模塊一的描述】【n個空格或參數】【相對目錄路徑一(DirA)

【模塊二的描述】【n個空格或參數】【相對目錄路徑二(DirB)

……
【模塊X的描述】【n個空格或參數】【相對目錄路徑X(DirX)

【描述信息】與【相對路徑】在字面上不一致時,需要使用-a參數。
【相對路徑】指的是CVS會自動帶上根路徑,這裏是F:/KHRoot,所以上面例子的完整路徑爲:F:/KHRoot/DirA
瞭解了模塊文件結構,現在來實際操作一把:雙擊【CVSRoot】模塊下的modules文件,用UltraEdit打開進行編輯。
JackeyGouryRiolee三個用戶分配工作目錄和完成其它模塊描述。
CVSRoot CVSRoot
Jackey
工作目錄
-a Jackey
Goury
工作目錄
-a Goury
Riolee
工作目錄
-a Riolee
編輯完畢,存盤。回到WinCVS,選中modules這個文件【Ctlr+M】或右鍵選擇【Commit selection…】,默認設置,【確認】,OK,完成上傳。

6 . 爲三個用戶分別上傳工作目錄:

YCW2000機器上的E:/CVSClient/Admin分別建立三個目錄分別名爲:JackeyGouryRiolee,作爲臨時交換目錄。
在新創建的每個目錄中用UltraEdit或拷貝一個Readme.txt作爲引子文件!!:)
然後,回到WinCVS,在【Workspace】欄的【Admin】目錄下形成如下的目錄結構:
分別選中GouryJackeyRiolee,右鍵,點按【Import Module】,選擇【Continue】,其它全部使用默認值,【確定】,OK,完成上傳工作。
仔細觀察【Output】窗口,確認都成功上傳了。
轉移到系統的Explore程序中,刪除E:/CVSClient/Admin目錄下的JackeyGouryRiolee三個目錄。然後回到WinCVS當中。(一定要刪除!!!:)
至此,就完成了工作目錄的上傳工作。

7. Checkout】下載3個用戶的工作目錄到【Admin】目錄下:

在【Workspace】欄選擇【Admin】目錄,右鍵,點按【Checkout Module…,如下圖:
選擇【】,得到CVSNT上最新的模塊配置情況,彈出如下的信息框:
這個結構圖就是剛纔在modules當中編寫的模塊文件格式信息。選擇【Jackey工作目錄】,下載到YCW2000機器的E:/CVSClient/Admin目錄下。
按照以上操作,依次分別下載【Goury工作目錄】和【Riolee工作目錄】。形成如下狀態:


8.
爲三個用戶分別設置各自目錄的訪問權限。(只有自己才能訪問自己的工作目錄)

選中【Goury】目錄,【Ctrl+L】或Admin=>Command Line…,彈出Command Line Settings對話框,直接執行CVS命令。
取消所有用戶的默認權限:cvs chacl default:n 回車,OK,完成。
設置Goury擁有所有權限:cvs chacl goury:rcw 回車,OK,完成。
查看【CVSRoot】的權限狀態:cvs lsacl 回車,OK,在【Output】中顯示:
Owner: administrator
default:n
goury:rwc
按照以上的方法依次分別設置【Jackey】與【Riolee】的工作目錄訪問權限。
至此,完成了3個用戶的目錄權限分配。注意,雖然Administrator也沒有權力再次【Checkout】那3個用戶的工作目錄,但是它是這些目錄的擁有者又是Administrator,因此,只有它纔有權力更改這些目錄的訪問權限。

9. CVSNT系統中的用戶管理原則:

CVSNT的用戶與本機(這裏是Server機器)上的NT用戶是相關聯的,即CVSNT用的全是本機上存在的已有用戶,因此在默認情況下可以不用設置任何用戶名,只要使用本機上已經存在的用戶名就可以用WinCVS進行登陸。
只有用Administrator身份登陸到CVSNT系統中,纔有權力進行新用戶的創建和刪除。
使用CVS創建的新用戶,必須與服務器端機器上的NT用戶相綁定,才能生效;因此,這個新用戶實際上是綁定它的NT用戶的一個替身,在CVS系統中稱爲別名
一個NT用戶可以有多個替身別名,充當多個CVS用戶。

10. WinCVS進行新用戶的添加和刪除。(確保使用Administrator登陸)

Ctrl+L】或Admin=>Command Line…,彈出Command Line Settings對話框,直接執行CVS命令。
添加新用戶【Killer】:cvs passwd -a Killer 回車,設置密碼,OK,完成。
綁定【Killer】到【Jackey】:cvs passwd -r Jackey Killer 回車,設置密碼,OK,完成。
兩次輸入的密碼可以不同,但以第二次輸入的密碼爲最終密碼。
刪除用戶【Killer】:cvs passwd -X Killer 回車,OK,完成。
其它特殊的功能查看passwd命令的幫助。

11.
使用完畢後,一定要【Logout】,因爲WinCVS退出時並不會自動註銷自己在遠端的會話;這樣做是爲了防止其它人接着打開WinCVS,不用登陸就可以完成你能進行的所有操作了。

6 WinCVS中常見的特殊操作:

6.1 如何刪除下載的文件或目錄:

1. 選中下載的某個或多個文件,執行【Remove】命令。
2.
再次選中這些文件,執行【Commit】命令就完成了刪除文件的操作。

3.
本質上CVS是不會刪除任何文件和目錄的,即使是執行了以上操作,刪除了某些文件,遠端CVS實際執行的是將提交刪除的文件放到了一個叫【Attic】的目錄下,因此,這些被刪除的文件是可以通過一定的方法恢復的。

6.2 如何恢復已經刪除的文件或目錄:

1. 在執行了【Remove】命令之後恢復文件。
Ctrl+L】直接輸入命令cvs add xxxxx,或執行【Add Selection】界面操作。
這樣就可以直接恢復還未提交的刪除文件。
2.
在執行了【Commit】命令之後恢復文件。

只能用【Ctrl+L】直接輸入命令cvs add xxxxx,這時會得到一個空的文件。
選中這個空文件,執行【Update】操作,得到這個文件的實體。
再次選中這個文件,執行【Commit】操作,得到這個文件最新版本。
3.
由於CVS系統中本質上不會刪除任何目錄,因此,談不上對目錄的恢復,但是CVS系統默認情況下是要在用戶本機上(如:YCW2000)要刪除空目錄,因此,可以用如下方法得到已被刪除的空目錄:cvs checkout -p xxx,也可以在Admin=>Preference的【Globals】頁面進行設置。

4.
可見,CVS系統能夠保證:只要上傳到服務器的文件,無論你怎麼在遠程進行如何的操作,正常的或非正常的操作,都可以用Administrator登陸上去,通過以上的方法找到丟失的文件。除非用戶進入到遠端服務器,將文件手動刪除,那就沒辦法了:)

6.3 如何得到以前版本的文件:

1.
有時我們需要得到以前版本的文件,而WinCVS默認方式只傳遞最新的版本。
2.
選中某個文件,【Ctrl+G】或右鍵,點按【Graph selection…】,使用默認設置,就可以得到該文件所以版本的圖形結構描述。

3.
選中一個版本,右鍵,點按【Retrieve revision】,就可以得到相應的老版本文件。當然也可以得到最新版本的文件:)

6.4 有時WinCVS會變得異常緩慢,怎麼辦?

1.
確認安裝了WinCVS的機器上沒有安裝CVSNT服務器端,因爲它們使用的版本有可能不一致。
2.
只安裝了WinCVS,但以前安裝過其它版本的WinCVS,怎麼辦?

3.
先卸載所有的WinCVS系統,刪除安裝目錄下的殘留文件。

4.
打開註冊表編輯器,全程查找cvs關鍵字,找到一個刪除一個,一直到找不到爲止!!:)

5.
重新安裝WinCVS,這個問題基本上就可以解決了,我就是這樣解決,不曉得你那裏如何?:)

7 其它說明:

1.
本文的重點在介紹如何讓使用者搭建CVSNT+WinCVS這個系統,因此重點介紹了管理員的常用操作,至於一般用戶使用到的操作,相對比較簡單和單一,使用WinCVS的次數多了,很快就會熟悉它了。
2.
這篇文檔只是窺探了CVS的一點皮毛而已,CVS當中還有很多高級的用法,以及上百個命令,還有很多新鮮的管理源代碼的方法,比如:tagbranch等模式;因此,熱烈歡迎大家積極探索,不斷共享,不斷進步。。。。。。。。

3.
另外,cvs.html這個幫助,裏面的信息也很豐富,但是,很多地方寫得不夠清楚,需要不斷猜測和實踐才能知道怎麼回事,本文的很多經驗都是看這個幫助,如此這般,採用這個笨辦法得到的。。。。。。

4.
最後,祝願看到此文的人,得到的幫助、提高等好處大於或等於浪費的時間、反而退步等壞處!!

 

 

還有一篇:

http://www.study1860.com編程文檔熱線

先說下CVSNT的用戶驗證方式,CVSNT的用戶驗證方式分兩種:Windows系統用戶與CVSNT用戶共存的混合驗證方式,及CVSNT用戶 單一驗證方式,默認工作在混合驗證方式下,當然使用單一驗證方式對用戶的管理肯定比較方便一點,因此下面的配置就是圍繞該方式進行的。各個資源庫所使用的 驗證方式及用戶配置由其目錄下CVSROOT裏的配置文件決定,其中有幾個比較重要的文件。

 

1config文件

控制CVSNT的驗證工作方式的就是config文件,注意該文件最前面的兩行:

#Set this to `no" if pserver shouldn"t check system users/passwords
#SystemAuth=yes

第二行就是我們要修改的內容,默認狀態是被註釋掉的,SystemAuth有兩個值yesno

yespserver將使用Windows系統用戶和CVSNT用戶來共同驗證(若CVSNT用戶未定義,則用Windows系統用戶來進行驗證),默認爲yesCVSNT用戶在後面將要介紹的passwd文件中定義。

no:只使用CVSNT用戶來進行驗證。

該文件可以在客戶端進行修改,因此我們可以將其checkout出來將第二行改爲SystemAuth=no,並commitCVSNT上就可以啓用單一驗證方式了,注意啓用單一驗證方式後原來的Windows系統用戶將變爲無效,因此要注意執行該步驟的時機。

2 admin文件

該文件保存CVSNT管理員用戶列表,內容很簡單,形式如下:
User1
User2
User3
每一行定義一個管理 員用戶,默認時沒有該文件,但你可以在客戶端自己添加並add上去,再commitCVSNT上,但是光有這個文件還是不會生效的,還要將其添加到 checklist文件中,使CVSNT能夠讀取該文件的內容,在checklist中添加文件列表的格式爲:

 [空格]文件名 出錯信息

其中文件名前的空格必須要有的,不然會出錯。
我們可以先添加admin文件到CVSNT中,再修改checklist文件commit,就可以使admin文件生效了。

3passwd文件

服務器工作在CVSNT用戶單一驗證方式下的時候,這個文件定義了CVSNT的用戶信息,這裏面保存着用戶名,用戶密碼,以及別名信息。默認狀態下 沒有該文件,但是我們可以在CVSNT還工作在混合驗證方式下時,用系統管理員登錄,通過添加用戶命令來讓CVSNT自動建立一個passwd文件。

添加用戶的命令的示例:

cvs passwd –r administrator –a cvsadmin

之後系統提示輸入密碼,輸入後服務器會新建一個passwd文件。

該文件的內容很簡單,形式如下:

cvsadmin:fqr1fS4gDghrt:administrator
kid:aTXRfS31Bm6JA
mystique:Yna4QcXz9dEqd

以第一行爲例:cvsadmin爲用戶名,fqr1fS4gDghrtCVS使用UNIX標準加密函數對密碼進行加密後的結果,administrator爲該用戶的別名,當使用混合驗證方式時對應Windows系統用戶名。

注意:這個文件是不能在客戶端進行修改的,不能checkout出來。

4group文件

該文件定義CVSNT中組信息,同組裏的用戶擁有一樣的權限,對組權限的修改和對用戶權限的修改一樣。

group文件的內容爲

administrators:cvsadmin kid mystique
users:User1 User2 User3

可以看到該文件的內容也很簡單,組名:用戶名,多個用戶名之間用空格隔開。

Group文件可以在客戶端修改,不用修改checkoutlist這個文件,系統會自動使其生效。

作爲組裏面的特定成員可以賦給特定的權限。

瞭解了以上內容,下面我說一下我自己的配置步驟,我沒有使用WinCVS進行操作,是直接使用命令行進行修改的,覺得這樣思路比較清晰:

1、添加系統變量CVSROOT=E:/CVSNT/Repository,並把E:/CVSNT加入到系統Path路徑。

2、進入命令提示符,因爲此時爲混合驗證模式,可以不用不用登陸直接進行checkout。可以建立一個工作目錄,在該目錄下進行操作,我這裏爲E:/CVSNT/Works

 檢出CVSROOT目錄:
 
 cvs co CVSROOT

3、添加CVSNT系統管理員用戶,此時會提示設置用戶密碼:

 cvs passwd –r administrator –a cvsadmin

4、修改CVSROOT訪問權限:

 cd CVSROOT
 cvs chown cvsadmin   //
更改所有者爲
cvsadmin
 cvs chacl default:n   //
默認權限爲
n
 cvs chacl cvsadmin:rwc  //
添加cvsadmin

5、修改config文件,按上面的方法修改後commit

 cvs ci

6、此時單一驗證方式已經啓用了,也就是隻能使用剛纔添加的cvsadmin進行登錄,此時可以把CVSNT控制面板上的Use local users for pserver authentication instead of domain users關掉。登錄前還要改一下系統變量CVSROOT,關閉命令提示符窗口,修改CVSROOT爲:

 :pserver:[email protected]:4021/CVSNT/Repository

這裏的192.168.0.1是服務器的IP地址,/CVSNT/Repository就是前面設置Repository時設置的Name,可以改爲你機器上的配置。修改系統變量之後以下的步驟在任何與服務器相連的機器上進行,當然該機器上應該有CVSNT的可執行文件。

7、如果爲了避免出現錯誤,先重啓一下CVSNT服務器,再啓動命令提示符來到E:/CVSNT/Works,因爲已經啓用單一驗證方式,先要進行登錄。

 cvs login
 
 
輸入密碼,此時就是以cvsadmin登錄了。

 
8
、添加admin文件,首先將CVSROOT檢出,在CVSROOT下新建admin文件,內容爲
 
 cvsadmin
 
 
執行命令:
 
 cvs add admin
 cvs ci
 
9
、修改checklist文件,在該文件末尾添加一行:

 [空格]admin  error message
 
 
注意:admin前的空格不能少。

 
 
執行命令:
 
 cvs ci
 
經過以上步驟,可以說用戶配置已經基本完成了,CVSNT可以很好的工作在單一驗證方式下。進一步的管理可使用以下命令:

添加用戶: cvs passwd -a username,使用時不必理會需要添加別名的提示。

修改用戶權限:cvs chacl username:r|w|c|n,(rRead wwrite ccontrol nnone

要添加組管理,只需同添加admin步驟一樣,按照格式要求新建group文件即可。

如果還有不清楚的可以看看自帶的文檔,說得還是比較詳細的。

ok,差不多就是這些,有錯還請各位幫忙指出,還在學習ING

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章