前幾天好奇,也剛好得了點(diǎn)空閑,然后就想看看ViewVC對(duì)Subversion的支持程度,于是就想裝個(gè)玩玩。好死不死的,在我的VMWare Workstation上剛好有個(gè)Windows Server 2003,心想,就它吧,可就這么一偷懶,折騰了我好幾天,最終還是只能算將就著把它給裝上了。
安裝環(huán)境:Windows Server 2003, IIS 6, Suberversion 1.3.0, ViewVC 1.0-Dev
安裝步驟:
一、首先安裝Subversion
,按照
Mere-Moments Guide to installing a Subversion server on Windows
的介紹自然應(yīng)該是很容易就搞定安裝和簡單配置的,然后往倉庫中添加幾個(gè)文件,然后做點(diǎn)更新,以便從ViewVC中能看到點(diǎn)東西;
二、安裝ViewVC
1. 既然裝了Subversion,那就學(xué)以致用,直接從
http://viewvc.tigris.org/svn/viewvc/trunk/
檢出個(gè)最新的版本下來就行,或者到
http://www.viewvc.org/nightly/
下載個(gè)打包的版本;
2. 如果你有閱讀Readme的習(xí)慣,那恭喜你,基本上完成基本的安裝配置是沒有問題啦;當(dāng)然,你一定要看完整個(gè)REQUIREMENTS這一節(jié)再?zèng)Q定下載安裝Python的什么版本,很不幸,Subervsion現(xiàn)在提供的Python包(Python bindings)只支持Pythong 2.3,所以,如果你一開始下載安裝的是Python 2.4,就得重新下載安裝了:):
Subversion Python Bindings:
http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91
Python 2.3:
http://www.python.org/ftp/python/2.3.5/Python-2.3.5.exe
pywin32:
http://prdownloads.sourceforge.net/pywin32/pywin32-208.win32-py2.2.exe?download
3. 安裝好這些后,將Python的安裝目錄添加到系統(tǒng)路徑中;
4. 在剛才下載的ViewVC目錄下執(zhí)行:python viewvc-install,第一個(gè)提示后指定ViewVC的安裝目錄,第二個(gè)提示直接回車就行。
三、ViewVC基本配置
由于ViewVC自帶服務(wù)程序,因此,最好是先啟動(dòng)ViewVC服務(wù)程序,如果ViewVC自己運(yùn)行正常的話,那就不用考慮ViewVC的配置問題了,想當(dāng)初俺就沒有充分利用這一點(diǎn),而在IIS和ViewVC之間反復(fù)修改參數(shù),都不知道是怎么死的。
1. ViewVC最簡單配置
打開viewvc.conf,修改下面幾行:
將cvs_roots = cvs: /home/cvsroot注釋掉;
#svn_roots = svn: /home/svnrepos 改成類似于 svn_roots = mytest: C:/svn_repos/mytest,其中mytest是你指定的倉庫名,冒號(hào)后面跟的是倉庫所在的路徑;
default_root = cvs注釋掉,這樣你至少可以看到倉庫列表。
2. 雙擊ViewVC/bin下的standalone.py,就可以啟動(dòng)ViewVC自帶的Web服務(wù),然后在IE中輸入
http://localhost:7467/viewvc
就應(yīng)該可以看到倉庫列表了,到這一步為止,我沒有碰到什么障礙,所以,沒什么可以提示的了;
3. 點(diǎn)擊任何一個(gè)倉庫,就應(yīng)該可以看到倉庫中的目錄或文件了,但是,如果你在IE中看到如下的提示:
ImportError: No module named svn 那說明你沒有安裝Subversion的Python包,或者將其放到了Subversion的目錄下了;
'module' object has no attribute 'SubversionRepository' 那說明你將Subversion的Python包復(fù)制到了viewvc的vclib下,并且覆蓋掉了viewvc自己的文件;那么,要怎樣安裝這個(gè)包呢,ok,將其復(fù)制到ViewVC或者Python的lib目錄下吧,唉,當(dāng)初整這個(gè)也費(fèi)了我不少周折,慚愧,誰叫我是個(gè)Python盲呢:(
四、安裝diff和enscript工具
就這樣看看,也已經(jīng)比Subversion自帶的Web界面好很多了,當(dāng)然我們還應(yīng)該挖掘ViewVC另外兩個(gè)基本功能:比較和語法高亮顯示,這樣才顯得專業(yè)嘛。
1. 到
http://gnuwin32.sourceforge.net
逐一下載以下工具:DiffUtils, enscript, libintl, libiconv, sed將其一股腦全部安裝好,將其bin目錄添加到系統(tǒng)路徑中;
2.打開viewvc.conf,將use_enscript =0改成1,重新啟動(dòng)standalone.py;
3. 然后你就可以比較任意兩個(gè)版本的差別了;
4. 不過,當(dāng)你要瀏覽某個(gè)文件時(shí),你會(huì)看到一個(gè)提示,說:libintl-2.dll或libiconv-2.dll之類的找不到,啊,先在ViewVC自帶的Web服務(wù)下運(yùn)行是多么的明智啊,如果你直接在IIS中調(diào)試,可就看不到這個(gè)提示了,這又是我N天的代價(jià):(;
5. 為什么會(huì)這樣呢,不是安裝了Readme中提到的所有g(shù)nuwin32的包嗎?不過,你是不是象我一樣下的都是最新的版本呢?記得enscript的版本嗎?這個(gè)可是個(gè)老古董,2003年推出的,而其它的基本上是05年、06年的,不兼容啊!安全起見,當(dāng)然是安裝與enscript同時(shí)代的包啦,當(dāng)然,我將gnuwin32/bin目錄下的libiconv2.dll和libintl3.dll直接復(fù)制一份,改名成libintl-2.dll和libiconv-2.dll竟然也ok,看來,老外們僅僅是在文件名上沒有向后兼容,函數(shù)名還是基本上一致的,所以動(dòng)態(tài)鏈接有動(dòng)態(tài)鏈接的好處,而靜態(tài)鏈接也不失為一個(gè)取巧的辦法啊;
行文至此,ViewVC及相應(yīng)工具的安裝告一段落,不要再去考慮ViewVC的安裝配置問題了,ViewVC的Readme也可以關(guān)掉了。接下來就是要在IIS上配置了。
五、IIS6設(shè)置
1. 創(chuàng)建一個(gè)虛擬目錄viewvc,直接指向ViewVC/bin/cgi就可以了,在虛擬目錄訪問權(quán)限步驟勾選執(zhí)行權(quán)限,如下所示;
2. 在剛創(chuàng)建的虛擬目錄上點(diǎn)擊右鍵,選擇屬性,點(diǎn)擊配置按鈕,在應(yīng)用程序配置對(duì)話框中點(diǎn)擊添加,填寫如下所示的內(nèi)容;
3. 切換到文檔頁,將viewvc.cgi設(shè)置為默認(rèn)內(nèi)容文檔。
在Windows 2000下,到這里就可以了;但是在2003下,還要做下面兩步。
4.點(diǎn)擊Web服務(wù)擴(kuò)展,理論上應(yīng)該添加一個(gè)新的Web服務(wù)擴(kuò)展,然后僅允許這個(gè)服務(wù),但我沒有弄出來,所以,直接就允許所有未知cgi了,這也是我一開始說將就著用來著。到這里,基本上可以運(yùn)行ViewVC了,但做比較和語法高亮顯示有問題,如果你想試試,還得
先重啟一下機(jī)器
,這也是讓我花了N天的代價(jià)的地方,如果你真按ViewVC的Readme中的Troubleshooting的建議左改右改的話,估計(jì)最后還是無計(jì)可施。當(dāng)然,在它的Troubleshooting最后有個(gè)表,其中有一項(xiàng)提到如果修改了系統(tǒng)變量的話,需要重啟機(jī)器,我是重啟完后才體會(huì)到這一點(diǎn)的:(;
5. 按默認(rèn)設(shè)置創(chuàng)建一個(gè)新的應(yīng)用程序池,在新建的應(yīng)用程序池上點(diǎn)擊右鍵,選擇屬性,選擇標(biāo)識(shí),在預(yù)定義帳戶中選擇本地系統(tǒng);然后再修改viewvc虛擬目錄的屬性,將應(yīng)用程序池改為剛創(chuàng)建的應(yīng)用程序池,重新啟動(dòng)機(jī)器。
到這里,基本完成ViewVC在IIS6上的安裝,其中辛酸自知??!
六、不足
1. ViewVC for Subversion不提供類似CVSGraph的圖形化版本樹功能;
2. 如果提交的日志中有中文,將顯示亂碼,需要手工設(shè)置瀏覽器編碼,或者修改ViewVC的模版templates/include/header.ezt,在緊挨著<head>的下方添加<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />,因?yàn)镾ubversion使用的是utf-8編碼;
3. 如果你的源代碼中有中文,則日志和源代碼不能兩全,其中必有一個(gè)是亂碼,難不成你源代碼也用utf-8編碼?如果你會(huì)Python,則建議修改一下ViewVC代碼,將日志先由utf-8轉(zhuǎn)換成gb2312,據(jù)說小海龜就是這么做的。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
