CVS操作手冊

 

 

                                         ———————————————————————————————

1 服務器端安裝過程
安裝前的注意事項:
 本操作手冊基於CVSNT 2.5.03 build 2382,操作界面以及選項設置都會隨版本的變化而發生一定的改變
 CVS容器(repository)、臨時文件夾(TEMP)必須安裝於CVSNT所在服務器
 CVSNT應作爲〔服務〕,且建議使用SYSTEM賬戶執行(原因有兩點:1、SYSTEM不具有網絡權限,也就是說不能被當作遠程服務來使用;2、當SYSTEM賬戶不進行操作的時候,CVSNT服務仍舊在線服務)
 CVSNT建議被運行在採用NTFS文件系統的服務器上(原因有兩點:1、NTFS文件系統具備CVS所需要的權限管理的基礎;2、NTFS文件系統更加穩定且能夠有更大地存儲能力)
1.1 CVSNT的安裝與配置
1.1.1 創建CVS容器和臨時文件夾
例如:D:/CVSNTRepositories (容器) D:/CVSTEMP (臨時)(請注意:臨時文件夾不可以位於操作系統臨時文件夾內。如:C:/winnt/temp 或者 C:/Documents and Settings中)

1.1.2 點擊CVSNT安裝程序
含客戶端、服務器端,進行安裝。(請注意:1、如果服務器採用Windows XP、2003或者更高版本則,其〔WMI Service〕服務可能會引起權限拒絕錯誤,請在安裝前將其關閉,安裝結束後重新開啓即可;2、注意客戶端與服務器端版本匹配問題;3、安裝後可能需要重新啓動)
1.1.3 CVS容器設置
 通過〔開始〕-〔程序〕-〔CVSNT〕-〔CVSNT Control Panel〕打開CVS控制面板(或在控制面板中打開)
 對設置變更前,請停止CVSNT、CVSNT Lock服務
 點擊〔Repository configuration〕選項卡
 點擊〔Add〕新增容器:其中〔Location〕欄位填寫/選擇容器所在目錄(在步驟1中創建的);〔Name〕欄位填寫容器名稱,必須遵守規則:必須以“/”開頭,形如“/CVSNTRoot”。(請注意:如果想要新的容器生效,必須勾選〔Publish Repository〕〔Online〕選項)
1.1.4 CVS臨時文件夾設置
點擊〔Server Settings〕選項卡,在〔Temporary〕中選擇步驟1中創建的CVS臨時文件夾。
重新啓動CVSNT、CVSNT Lock服務,如果服務不能啓動,請檢查容器所在文件夾權限設置或重新啓動服務器。
1.1.5 更新CVS服務器中的二進制文件列表
(請注意:這是非常重要的,如果不將已知二進制文件類型加入二進制文件列表,當上傳此類文件時文件可能被損壞)
在命令行提示符下操作:
SET CVSROOT=D:/CVSNTRepositories/Repo1(以Administrator登錄服務器,本地操作模式)
Cvs co CVSROOT
Cd CVSROOT
Notepad cvswrappers (在記事本中編輯列表文件例如)
*.cab -k ‘b’
*.class -k ‘b’
*.doc -k ‘b’
*.dll -k ‘b’
*.exe -k ‘b’
*.exp -k ‘b’
*.gif -k ‘b’
*.gz -k ‘b’
*.jar -k ‘b’
*.jpg -k ‘b’
*.jpeg -k ‘b’
*.lib -k ‘b’
*.msi -k ‘b’
*.mso -k ‘b’
*.pfw -k ‘b’
*.png -k ‘b’
*.ppt -k ‘b’
*.sit -k ‘b’
*.tar -k ‘b’
*.tlb -k ‘b’
*.vsd -k ‘b’
*.xls -k ‘b’
*.wmz -k ‘b’
*.zip -k ‘b’
Cvs commit
1.1.6 服務器端CVS權限設置
CVSNT服務器的權限控制包括兩部分:
 NTFS ACL 阻止沒有經過授權的人訪問CVS容器
 CVSNT ACL 阻止開發人員commit錯誤的版本分支
CVSNT登錄方式有兩種:
 Windows用戶驗證與CVSNT用戶驗證的混合驗證模式
 CVSNT用戶驗證的單一驗證模式
由於Windows不允許任何非真實帳戶的對文件系統進行操作,所以使用CVSNT創建的用戶其實是Windows用戶的別名(映射),其關係如下圖:

本文主要介紹混合模式驗證的設置方法。

某容器權限的設置步驟:
1) 以Administrator登錄服務器
2) 爲CVSNT創建Windows用戶組、用戶
Group Name 描述
CVSAdmins 所有的CVS容器管理權,允許更新所有容器中的文件
CVSAdmin-XXX 某容器的管理權
CVSUsers 所有CVS用戶,可以checkout文件,但checkin/commit動作受到CVSROOT/writers文件控制
請注意:如果CVSNT部署於Windows2003+的服務器上,請確認用戶組擁有執行CMD.EXE的權限,因爲操作系統默認是沒有的
3) 設置CVSROOT權限控制文件
CVSROOT filename 描述
Admin 被允許執行CVS管理員指令的用戶名單 (不受源代碼管理控制)
Passwd 記錄CVSNT帳戶名稱和密碼 (經過加密,不受源代碼管理控制)
Group 記錄CVSNT組信息,格式:
組名:用戶名1 用戶名2 用戶名3 ……
Readers 可以讀取數據的用戶名單
Writers 被允許進行寫操作(commit)的用戶名單
config 某CVSNT容器的配置文檔
 SystemAuth Yes:混合驗證 No:單一驗證
 以Administrator登錄服務器,切換到命令行方式
 切換到CVS容器所在的文件夾中,例如:D:/CVSNTRepositories/Repo1/CVSROOT
 設置admin文件
通過“echo cvsadmin>> admin”新建admin文件,“username”與“admin”中間不能有空格
 設置writers、config文件(不要在CVS容器文件夾中進行)
Set CVSROOT=:pserver:cvsadmin@host:/Repo1
Cvs login
Cvs co cvsroot
Cd cvsroot
Notepad config
Echo username>> writers (請注意:必須將自己所使用的用戶名也添加進去,否則會被死鎖,若死鎖請到CVS容器中刪除writers與writers.v文件即可)
Cvs add writers (當新建此文檔時使用)
Cvs commit
4) 設置CVSNT容器所在文件夾權限

Directory/File SYSTEM Administrators CVSAdmins
CVSAdmin-XXX CVSUsers 描述
./CVSNTTEMP Full 開放權限
./CVSNTRepositories Full Full Full Read
./CVSNTRepositories/Repo1 Full Read Full Full 單個容器
./CVSNTRepositories/Repo1/CVSROOT Full Read Full Read 避免普通用戶改變配置文件
./CVSNTRepositories/Repo1/CVSROOT/history Full Read Full Change 記錄CVS用戶歷史
./CVSNTRepositories/Repo1/CVSROOT/val-tags Full Read Full Change CVS用戶checkout
請注意:history文件在CVSNT 2.5.x版本後發生了較大的變化,CVSNT不會自動生成歷史記錄,所以容器Repo1中CVSROOT文件夾下沒有history文件需要手動創建一個空的文件並命名爲history

某容器內項目權限的設置:

1) 添加CVSNT用戶
語法:
cvs passwd [-a] [-x] [-X] [-r real_user] [-R] [-D domain] [username]
其中,-a表示添加一個cvsnt用戶;-x表示取消一個cvsnt用戶;-X表示刪除一個cvsnt用戶;-r表示把一個cvsnt用戶和一個指定的系統用戶綁定;-R表示取消一個cvsnt用戶和一個系統用戶的綁定;-D表示域;username表示要創建的cvsnt用戶
不加參數表示修改當前登錄用戶密碼
你可以使用以下命令來創建映射關係:
cvs passwd -a -r
2) 設置CVSNT用戶權限
語法:
 Chown
CVS chown [-R] user [directory…]
其中-R 表示遞歸。
cvs chown -R cvsadmin .
上述命令把當前目錄及其子目錄對應的服務器目錄的owner設置爲cvsadmin用戶。

 Chacl
CVS chacl [-R] [-r branch] [-u user] [-j branch] [-n] [-p priority] [-m message] [-a [no]{read|write|create|tag|control}[,…]] [-d] [file or directory…]
-R表示遞歸;
-r branch表示對分支的權限的修改;
-a表示設置用戶的權限;
-d表示刪除用戶的權限。
cvs chacl -R -u cvsuser2 -a read,write,create,tag .
上述命令賦予cvsuser2用戶當前目錄及其子目錄對應的服務器目錄的讀/寫/創建/打標籤的權限。
cvs chacl -u g2 -a read,nowrite HelloWorld.java
上述命令賦予g2羣組當前目錄下HelloWorld.java文檔的讀權限,拒絕其寫權限。
cvs chacl –u cvsuser2 –d .
上述命令取消cvsuser2 用戶對當前目錄對應的服務器目錄的所有權限。

 Lsacl
CVS lsacl [-dR] [file or directory …]
-d表示僅列出目錄權限,-R表示遞歸。

3) 請注意:這裏是一個CVSNT 2.5.03 build 2382 bug
當進入被cvs checkout出來的項目客戶端文件夾時,並且這時你並不是使用checkout所使用的帳戶登錄的,cvs會自動使你變更成爲checkout時所使用的帳戶。
危害描述:可以藉此漏洞奪得他人帳號控制權,甚至最高管理員權限。
解決方法:在使用時請勿在他人的計算機上使用自己的帳號checkout項目,尤其是管理員帳號。

1.1.7 測試CVSNT服務
經過以上設置,CVSNT服務器已經部署完畢,需要對其進行連接測試,在命令行模式下操作:
Set CVSROOT=:pserver:username@host:/Repo1
Cvs login
成功則無錯誤提示。

1.2 CopSSH的安裝與配置
在CVS應用中爲了提升數據傳輸的安全性,可以採用SSH通訊協議來替代pserver標準協議,在衆多SSH服務程序當中,截至筆者寫此文章之時,CopSSH是對各種客戶端程序支持最好的開源項目。
 安裝過程非常簡單,完成後需要〔Activate a user〕,〔開始〕-〔程序〕-〔CopSSH〕
請注意:CopSSH要求必須使用Windows帳戶,CVSNT帳戶不被支持。可以通過綁定Windows與CVSNT帳戶的方法來解決。
 需要從CVSNT安裝文件夾中拷貝以下文件到CopSSH安裝目錄的bin下
cvs.exe
cvsapi.dll
dbghelp.dll
extnt.dll
msvcp71.dll
msvcr71.dll
cvstools.dll
iconv.dll
mdnsclient.dll
 請設置CopSSH臨時文件夾的權限

Directory/File SYSTEM Administrators CVSAdmins
CVSAdmin-XXX CVSUsers 描述
./Documents and Settings /SvcCOPSSH.XXX/Local Settings/Temp Full Full Full Full

 連接測試

Set CVSROOT=:ssh:username@host:/Repo1
Cvs login
輸入密碼後,會要求確認接受public key。
1.3 刪除不安全CVS通訊協議(可選)
將位於CVSNT安裝文件夾中protocols目錄中的相應DLL文件刪除即可。

2 客戶端的安裝過程
安裝前注意事項:
 已經安裝Microsoft VS系列
 TamTam Plugin是付費軟件

客戶端的安裝相對簡單,這裏只介紹其中需要注意的幾點:
 安裝時請首先安裝CVSNT客戶端。
 TamTam Plugin 捆綁的文本比較工具不支持多字節字符(中文、日文等等),請使用WinMerge,並在設置中對其進行綁定。
 請指定TamTam Plugin所使用的CVS.EXE爲CVSNT中的以保持穩定的兼容性。
 爲了加快網絡傳輸速度請開啓網絡壓縮選項
 在填寫連接字串時,請使用SSH通訊協議,例如::ssh:username@host:/Repo1

3 CVSNT的日常維護
3.1 容器的備份
通過一個腳本文件(加入〔任務計劃〕)或者〔備份〕程序進行備份,其中內容形如:
net stop cvsnt
xcopy d:/CVSNTRepositories //server/cvsbackup /Q /S /C /H /R /O /Y
net start cvsnt

 

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