CVS的update和commit, VSS是get_lastest_version和check in
對應VSS的check out/undo check out的CVS里是edit和unedit
在CVS中,標記自動更新功能缺省是打開的,這樣也帶來一個潛在的問題,是不用-kb方式添加binary文件的話在cvs自動更新時可能會導致文件失效。
Virsual SourceSafe中這個功能稱之為Keyword Explaination,缺省是關閉的,需要通過OPITION打開,并指定需要進行源文件關鍵詞掃描的類型:*.txt,*.java,*.html...
對于Virsual SourceSafe和CVS都通用的TAG有:
$Header$
$Author$
$Date$
$Revision$
盡量使用通用的關鍵詞保證代碼在CVS和VSS都能方便的跟蹤。
WinCVS
======
下載:
cvs Windows客戶端:目前穩定版本為1.2
http://www.wincvs.org/
ssh Windows客戶端
http://www.networksimplicity.com/openssh/
安裝好以上2個軟件以后:
WinCVS客戶端的admin==>preference設置
1 在general選單里
設置CVSROOT: username@192.168.0.123:/home/cvsroot
設置Authorization: 選擇SSH server
2 Port選單里
鉤上:check for alternate rsh name
并設置ssh.exe的路徑,缺省是裝在 C:Program FilesNetworkSimplicitysshssh.exe
然后可以使用WinCVS進行cvs操作了,所有操作都會跳出命令行窗口要求你輸入服務器端的認證密碼。
當然,如果你覺得這樣很煩的話,還有一個辦法是生成一個沒有密碼的公鑰/私鑰對,并設置CVS使用基于公鑰/私鑰的SSH認證(在general選單里)。
可以選擇的diff工具:examdiff
下載:
http://www.prestosoft.com/examdiff/examdiff.htm
還是在WinCVS菜單admin==>preference的WinCVS選單里
選上:Externel diff program
并設置diff工具的路徑,比如:C:Program Filesed16iExamDiff.exe
在對文件進行版本diff時,第一次需要將窗口右下角的use externel diff選上。
基于CVS的小組開發環境搭建
========================
作為一個小組級的開發環境,版本控制系統和BUG跟蹤系統等都涉及到用戶認證部分。如何方便的將這些系統集成起來是一個非常有趣的事情,畢竟我們不能指望Linux下有像Source Offsite那樣集成度很高的版本控制/BUG跟蹤集成系統。
我個人是很反對使用pserver模式的遠程用戶認證的,但如果大部分組員使用WINDOWS客戶端進行開發的話,總體來說使用CVSROOT/passwd認證還是很難避免的,但CVS用戶的管理比較麻煩。本來我打算自己用perl寫一個管理界面的,直到我發現了CVSTrac, 一個基于WEB界面的BUG跟蹤系統,它外掛在CVS系統上,而且包括了WEB界面的CVSROOT/passwd文件的管理,甚至還集成了WIKIWIKI功能。
這里首先說一下CVS的pserver模式下的用戶認證,CVS的用戶認證服務是基于inetd中的:
cvspserver stream tcp nowait nobody /usr/bin/cvs cvs --allow-root=/home/cvsroot pserver
一般在2401端口
CVS用戶數據庫是基于CVSROOT/passwd文件,文件格式:
[username]:[crypt_password]:[mapping_system_user]
由于密碼都用的是UNIX標準的CRYPT加密,這個passwd文件的格式基本上是apache的htpasswd格式的擴展(比APACHE的PASSWD文件多一個系統用戶映射字段),所以這個文件簡單的方法可以用
apache/bin/htpasswd -b myname mypassword
創建。注意:通過htpasswd創建出來的文件會沒有映射系統用戶的字段
例如:
new:geBvosup/zKl2
setup:aISQuNAAoY3qw
test:hwEpz/BX.rEDU
映射系統用戶的目的在于:你可以創建一個專門的CVS服務帳號,比如叫cvs,并將/home/cvsroot目錄下的所有權限賦予這個用戶,然后在passwd文件里創建不同的開發用戶帳號,但開發用戶帳號后的文件讀寫權限都映射為cvs用戶,避免了在SSH模式下多個開發用戶新建文件后的對于其他用戶的文件讀寫權限問題。
進一步的,你可以將用戶分別映射到2組用戶上,利用2個用戶的權限設置,避免2個項目組的文件互相訪問。
new:geBvosup/zKl2:proj1
setup:aISQuNAAoY3qw:proj2
test:hwEpz/BX.rEDU:proj1
CVSTrac很好的解決了CVSROOT/passwd的管理問題,而且包含了BUG跟蹤報告系統和集成WIKIWIKI交流功能等,使用的CGI方式的安裝,并且基于GNU Public License:
安裝過程
下載:http://www.cvstrac.org解包,復制成/usr/bin/cvstrac
在已經裝好的CVS服務器上(假設CVS庫已經使用cvs init初始化過在/home/cvsroot里),運行一下
cvstrac init /home/cvsroot myproj
運行后,/home/cvsroot里會有一個缺省的myproj.db庫
在apche/cgi-bin目錄中創建如下腳本cvstrac:
#!/bin/sh
/usr/bin/cvstrac cgi /home/cvsroot
設置cvstrac可執行。
從http://cvs.server.address/cgi-bin/cvstrac/myproj進入管理界面,缺省登錄名:setup 密碼 setup
在inetd里加入cvspserver服務:
cvspserver stream tcp nowait nobody /usr/bin/cvs cvs --allow-root=/home/cvsroot pserver
注意:這里的用戶設置成nobody目的是和apache的運行用戶一致,并且必須讓這個這個用戶對/home/cvsroot/下的CVSROOT/passwd和cvstrac初始化生成的myproj.db有讀寫權限。
一般用戶還可以從:
http://cvs.server.address/cgi-bin/cvstrac/myproj
修改登錄密碼,記錄BUG報告等,更多使用細節可以在使用中慢慢了解。
對于前面提到的WinCVS改用passwd file on server side模式登錄可以了。
總結:
利用cvs + (WinCVS/cvsweb/cvstrac),構成了一個相對完善的跨平臺工作組開發環境。
相關資源:
CVS HOME:
http://www.cvshome.org
CVS FAQ:
http://www.loria.fr/~molli/cvs-index.html
相關網站:
http://directory.google.com/Top/Computers/Software/Configuration_Management/Tools/Concurrent_Versions_System/
CVS 免費書:
http://cvsbook.red-bean.com/
CVS 命令的速查卡片:
http://www.refcards.com/about/cvs.html
WinCVS:
http://www.wincvs.org
CVSTrac: A Web-Based Bug And Patch-Set Tracking System For CVS
http://www.cvstrac.org