最近發(fā)現(xiàn)團隊的代碼版本管理比較混亂,甚至是根本就沒有版本管理的意識,一個項目的源碼有時候找個2、3次才找到正確的版本。以前我對這塊沒做什么特別的要求,只要是大家自己用的順手,VSS、SVN、TFS都無所謂?紤]到離線工作和以后的非微軟開發(fā)環(huán)境,于是打算用Git來規(guī)范統(tǒng)一團隊內(nèi)的版本管理。說到Git,其實GitHub是不錯的選擇,只不過我們的源碼和開發(fā)文檔與運營商的不少系統(tǒng)都有或多或少的關(guān)聯(lián),將其放置于互聯(lián)網(wǎng)上的風(fēng)險度還是比較高的;基于此,我還是選擇搭建自己的Git服務(wù)器,將代碼、文檔、版本信息等存放在自己的內(nèi)網(wǎng)服務(wù)器上,那是最好不過的了。
Dudu的 用開源ASP.NET MVC 程序 Bonobo Git Server 搭建 Git 服務(wù)器 ,豁然開朗。恩,這下有戲了,就用它了。這個開源的解決方案現(xiàn)在是V1.1版,已經(jīng)加入了中文資源文件。
我用的是一臺Windows Server 2003,IIS 6 + WebDAV + ASP.Net MVC 3;旧现灰凑詹渴餉SP.NET MVC站點的步驟模式一路走下來,就不會有什么大問題。具體的安裝步驟和Git客戶端的使用介紹就不多說了,Dudu已經(jīng)寫的很詳細了,網(wǎng)上也有大把的TortoiseGit使用教程。我這里只記錄下我在配置和使用過程中遇到的一些問題。站點部署完了之后,注意需要給App_Data文件夾賦予寫權(quán)限,因為SQLite數(shù)據(jù)庫文件、站點的全局配置信息以及錯誤日志都在這個文件夾下。Bonobo.Git.Server站點能正常運行之后,我們就可以通過Git客戶端像使用GitHub一樣clone、commit、pull、merge、push等操作自己的版本庫了。
在這個過程中,遇到的最大問題是本地版本庫無法提交到Git服務(wù)器。代碼提交到本地沒什么問題,但是當(dāng)Push到服務(wù)端的時候,總是提示:fatal: authentication failed:
心想肯定是哪里配置或者設(shè)置不對,因為當(dāng)把版本庫勾選中"匿名"的時候,是可以不用輸入用戶名和密碼而能夠正確提交到服務(wù)端的,但這樣一來就無法有效的通過權(quán)限和用戶名來管理和查看版本信息了。最后終于找到解決方法:在IIS中,把目錄安然性 -> 編輯-> 身份驗證方法 -> 集成Windows身份驗證 去掉,整個上傳過程就暢通無阻了;如果不做這樣設(shè)置的話,我們則需要把每個在Git服務(wù)端站點中添加的用戶也設(shè)置成Window系統(tǒng)的用戶(http://forum.chodounsky.net/viewtopic.php?f=11&t=92)。
在登錄后的服務(wù)端網(wǎng)站中,瀏覽上傳的文件時,會報404錯誤;在本地開發(fā)環(huán)境中,瀏覽及下載文件都很正常。這種情況,我們只要知道它定義的后綴名就很好解決了。Bonobo.Git.Server中瀏覽文件、下載文件分別定義的是.browse、.download后綴名,于是在 IIS的 主目錄 -> 配置 -> 添加 對應(yīng)的擴展名就可以了:
在使用過程中,我還發(fā)現(xiàn)如果版本庫的名稱中包含中文或者小數(shù)點時,會有問題(暫未測試其它特殊字符)。如果包含中文,提交到服務(wù)端時會失;如果包含小數(shù)點,連打開這個庫的信息頁面都會404。。。這些小問題也很好處理,我們可以把包含中文的Git庫位置自動轉(zhuǎn)換成HTML編碼,可以在新增和修改版本庫時自動替換小數(shù)點或者其它特殊字符等等
好了,我們終于可以像使用GitHub一樣,使用我們自己的Git服務(wù)器Bonobo.Git.Server了!團隊內(nèi)測試試運行了2周,運行情況還比較穩(wěn)定。