通常搭建CVS服務器都是在Linux/Unix平臺上,但是在Windows平臺上,憑借數目龐大的Open Source軟件,我們也同樣可以搭建一個適用于項目組的CVS服務器,并且還可以為其添加源代碼跟蹤功能。
一、需要的軟件
1、CVSNT
CVSNT是目前在Windows平臺上構建CVS服務器最方便的工具,操作簡單,以Windows服務程序的形式運行。目前CVSNT已被移植到其它平臺如Linux上。
選用版本:2.0.58d。
選用這個版本而不是最新的2.5.x的原因是2.5.x改變了History文件的格式,影響了我們后面介紹的CVSTracNT的運行。當然,如果你不使用CVSTracNT,選用2.5.x也沒有問題,其操作與2.0.58d基本相同,也十分的簡單。
下載地址:
http://www.cvsnt.org2、CVSTracNT
CVSTracNT是一個基于Web的CVS源代碼跟蹤工具。使用CVSTracNT,你可以跟蹤源代碼的變更,提交任務單,創建里程碑,并通過Web的方式查看、比較源代碼文件。對于CVS系統本身來說,是一個非常有益的補充。
選用版本:1.1.5 Build20050703多國語言版。
這個版本由cnpack項目組的成員進行了漢化,并添加了許多實用的工具。具體的內容可以參考其中文網站。
下載地址:
http://www.cnvcl.org3、ViewCVS
ViewCVS是一個用Python語言編寫的CVS Web界面。有了它,你可以通過瀏覽器查閱源代碼,進行版本比較。相對于CVSTracNT自帶的Web界面來說,ViewCVS更加有親和力,功能也比較完善。大名鼎鼎的SourceForge的Web界面就是使用ViewCVS搭建的。
還有另外一個CVS的Web界面CVSWeb,用Perl語言開發。
選用版本:1.0 dev r6。
最新的版本,沒什么好說的。
下載地址:
http://russ.hn.org/viewcvs/4、Python
讓ViewCVS運行起來,必不可少的就是Python。
選用版本:2.4.1。其它2.4.x版本應該也可以,但注意和ViewCVS的版本要搭配。
下載地址:
http://www.python.org5、PyWin32
Python語言的Win32擴展。
選用版本:2.04 for Py 2.4。
下載地址:
http://pywin32.sourceforge.net6、Apache HTTP Server
ViewCVS可以在IIS和Apache服務器上運行,考慮再三,最后選擇的Apache。雖然配置起來有些麻煩(其實也不麻煩),但考慮到Apache是開源項目,不會有法律問題,呵呵。
選用版本:2.0.54。
下載地址:
http://apache.justdn.org/7、MySQL
ViewCVS提供了查詢功能,使用的是MySQL數據庫。
選用版本:3.23.42-nt。
不要使用4.x版本的MySQL,與ViewCVS兼容不太好。
二、安裝
1、安裝CVSNT
直接運行CVSNT安裝包。安裝結束后,打開Service Control Panel,配置你的CVS倉庫。點擊Repositories選項頁,添加你的倉庫地址就可以了,不需要重新啟動CVS服務器。
2、安裝CVSTracNT
直接運行CVSTracNT安裝包。感謝CNPack的程序員,如果按照CVSTracNT網頁上的安裝介紹,一定會郁悶死。安裝結束后運行CVSTrac配置程序,程序啟動后會自動搜索CVS倉庫,將其添加到CVSTrac數據庫。選中數據庫,點擊瀏覽按鈕,你的瀏覽器應該打開并顯示CVSTrac的頁面了。
CVSTracNT的使用及配置參考
http://www.cnpack.org上的介紹。
3、安裝Python及PyWin32
運行安裝包即可。
4、安裝Apache HTTP Server
運行安裝包即可。如果在安裝過程中沒有選擇讓Apache自動運行,那么可以通過開始菜單運行Apache。
5、安裝MySQL
運行安裝包即可。
6、安裝ViewCVS
最麻煩的地方到了。
首先,將ViewCVS解壓縮到一個目錄中,然后在該目錄的命令行中,運行python viewcvs-install。安裝結束后,編輯viewcvs.conf文件,修改cvs_roots項為你的CVS倉庫路徑,修改default_root項為默認的CVS倉庫,還可以修改郵件地址項。
然后拷貝web\cvs\viewcvs.cgi到你的Apache cgi-bin目錄中。
運行Apache,在瀏覽器中輸入
http://localhost/cgi-bin/viewcvs.cgi,看看你的ViewCVS是不是運行順利?
現在我們要為ViewCVS添加查詢功能了。
運行MySQL的管理程序mysql,進入MySQL命令行模式,添加一個用戶viewcvs,并賦予其讀寫的權力。退出。在命令行下運行python cvsbdadmin CREATE,根據提示輸入數據庫名,用戶名和密碼,數據庫自動創建。
編輯viewcvs.conf文件,修改cvsdb塊下的enabled選項值為1,去除后面各項前的注釋符,修改各項的值為前面設置的值。
拷貝web\cgi\query.cgi到Apache cgi-bin目錄下。
在瀏覽器中運行
http://localhost/cgi-bin/query.cgi,看看結果……
失敗了,系統提示Python錯誤。根據錯誤信息查到,錯誤處在dbi.py文件中。在dbi.py中有這樣一行:datetime.tuple()。查閱Python文檔,發現datetime對象沒有tuple方法,只有timetuple方法,更改之后,運行正常。
三、總結
以上的搭配方案適用于中小項目組,因為CVSNT本身在應對大項目時有一些效率問題。如果你想用CVS管理上萬個源文件,那么用Linux平臺搭建CVS服務器是更合適的選擇。
無論如何,CVSTracNT都是你不該錯過的好東西,當項目逐漸膨脹起來后,讓CVSTracNT來管理一些機械的事情是一個好選擇。
ViewCVS并不是必要的,但是比之CVSTracNT自帶的Web界面,ViewCVS要更舒服一些,某些功能也更清晰(比如版本比較)。讓你的上級通過ViewCVS來瀏覽你的工作情況也許是個好選擇,你不需要在Trac中為他保留一個會擾亂正常工作程序的位置。
總得來說ViewCVS的查詢功能并不是太方便,使用起來比較繁瑣,結論是不用也罷。安裝MySQL等等的繁瑣工作也就不需要了。
我最遺憾的是,因為時間的關系,并沒有建立SSL連接方式。從安全的角度來說,SSL也許是必不可少的,除非你的訪問者都值得信任。
最后還要說的是,CVS雖然比較流行,但并不是源代碼管理的唯一選擇。在你作出決定之前,不妨先看看這篇文章:
http://better-scm.berlios.de/comparison/comparison.html。