1. 程式人生 > >在Visual Studio中使用SVN進行原始碼管理

在Visual Studio中使用SVN進行原始碼管理

    對於稍微大一點的專案我想都有必要用到原始碼管理工具,今天我們就逐步說一下SVN的使用。

SubVersion+TortoiesSVN的配置

2.安裝TortoiseSVN。(下載地址:http://tortoisesvn.net/downloads),這是一個SubVersion的影象化管理工具,沒有它也可以,但是管理SubVersion需要使用命令列的形式,安裝過TortoiseSVN可以在右鍵選單出現相應的選項。例如我安裝到了D:/SVN/TortoiseSVN

3.建立版本庫(repository)。這點和VSS一樣,我們需要一個庫來存放版本資訊。建立方式有兩種通過SubVersion的命令列或者通過TortoiseSVN的圖形介面來建立。我們就直接通過TortoiseSVN建立,例如我想在D盤建立一個資料夾SVNServices用來放版本庫,然後在其中建立一個EMIData的資料夾作為我的專案EMI的版本庫,這是我對EMIData點選右鍵--TortoiseSVN—Create Repository here

即可將EMIData最為一個版本庫,這是你會發現EMIData資料夾中多了很多的檔案。

4.啟動SVN服務。到這裡我們的SubVersion其實還沒有啟動,我們在cmd命令列輸入:svnserve –-daemon –-root D:/SVNServices 這樣我們就可以啟動SVN並且以D:/SVNServices作為根目錄。這裡我要指明幾點,第一就是輸入的命令中兩處都是兩個‘-’,也就是‘--’而不是‘-’;第二點就是啟動後cmd視窗使不能關閉的,這點類似於tomcat的命令視窗,但是和tomcat一樣我們後面會講到有更好的辦法不需要一直開著這個視窗。

到了這裡我麼來檢測一下剛才建立的版本庫是否正確,右擊開啟TortoiseSVN--Repo-browser

在url處輸入svn://Localhost/EMIData 如果你看到了EMIData這個空的庫就說明你已經成功建立了版本庫。

5.分配使用者許可權。我們的SVN伺服器不是誰都可以訪問的,肯定需要配置許可權。用文字編輯器開啟D:/SVNService/EMIData/conf/svnserve.conf 我們將# password-db = passwd   改為: password-db =passwd 也就是說我們使用密碼驗證,這裡說明一點就是#後面的空格也要刪除。接著我們修改同目錄下的passwd檔案,增加一個jianxin160帳號,在[users]這個節下面新增jianxin160=123456即可,即使用者名稱,密碼都是123456。

6.將專案匯入到版本庫。例如我的專案EMI在F:/EMI這個資料夾,我通過右鍵TortoiseSVN—Import…在彈出對話方塊的url處輸入“svn://Localhost/EMIData/EMI”,點選OK後輸入上面我們的使用者名稱和密碼(jianxin160和123456)。

Apache架設SVN服務

    通過上面的操作其實我們已經可以管理專案了,你已經發現我們通過輸入svn://Localhost/EMIData/EMI其實就可以在TortoiseSVN的Repo-Browser中檢視專案檔案,事實上SVN本省自帶的伺服器就可以進行版本管理。但是如果我們在Visual Studio中通過輸入svn://…來匯入和管理我們的專案未免有些不足,而且平時檢視還要靠TortoiseSVN的Repo-Browser,況且還要一直開著cmd視窗多麻煩。有沒有更好的辦法,是有的,那就是我們通過Apache伺服器來做。

7.安裝Apache。(到這裡下載:http://httpd.apache.org/download.cgi)例如我的安裝到了D:/SVN/Apache下,安裝過程比較簡單我就不再說了。

8.關聯Apache和SVN。Apache是不知道SVN的,肯定也是不能管理它的。將SubVersion安裝目錄中bin目錄下的intl3_svn.dll,libdb44.dll,mod_authz_svn.so,mod_dav_svn.so複製到Apache安裝目錄Modules中;在Apache的conf資料夾中找到httpd.conf檔案,將#LoadModule dav_module modules/mod_dav.so前面的”#”號去掉,然後在後面新增:LoadModule dav_svn_module modules/mod_dav_svn.so 注意它一定要放在緊跟其後的一行的後面。但是此時Apache還不知道如何處理,我們在httpd.conf最後面新增

DAV svn

SVNPath D:/SVNServices/EMIData

這是我們就可以通過在瀏覽器中輸入:http://127.0.0.1/repository/EMI 來瀏覽我們的專案了。可以看出通過使用apache我們將路徑做了相應的對映。

9.配置Apache認證方式。我們到上一步為止誰都可以輸入http://127.0.0.1/repository/EMI來訪問我們的專案,當然不行了。我們這裡通過apache的基本http認證來對專案進行保護。在apache的bin目錄有一個htpasswd工具,通過它我們來建立使用者資訊。例如:通過命令列 htpasswd -c D:/SVNServices/EMIData/MyApacheUser/passwd.conf  jianxin160 然後提示輸入密碼,我輸入123456 再次輸入,就會在D:/SVNServices/EMIData/MyApacheUser(之前建立好MyApacheUser這個目錄)建立一個檔案passwd.conf 裡面包含用MD5加密的密碼。通過 htpasswd -m D:/SVNServices/EMIData/MyApacheUser/passwd.conf  miaoer1987再建立一個使用者。關於htpasswd操作我就不再細說。然後修改apache的httpd.conf,在Location標籤(上面我們新增的)中加入以下內容:

AuthType Basic
AuthName "svn repos"
AuthUserFile D:/SVNServices/EMIData/MyApacheUser/passwd.conf
Require valid-user

10.安裝AnkhSVN。(下載地址:http://ankhsvn.open.collab.net/downloads)這是一個Visual Studio的外掛,有了它SVN和Visual Studio結合就更天衣無縫了。安裝之後我麼發現在VS中File-Open就多了一個選項“SubVersion Project”,我們在這裡輸入http://127.0.0.1/repository/EMI就可以看到我們的解決方案檔案(我第一輸入後只有http://127.0.0.1/repository,關閉VS又開啟才看到http://127.0.0.1/repository/EMI)EMI.sln開啟就可以將整個工程下載到本地,這時注意要在Location中輸入你要將副本儲存在哪個位置。好了到此位置整個SVN的配置結束了。

補充一點東西

SVN配置注意

1.按照上面做過後,其他人還是不能用,原因很簡單,127.0.0.1這樣的IP找不到你的SVN伺服器。解決方法:如果你是在區域網就換成你在區域網的IP,如果是靜態IP(很少吧)只需要換成你的靜態IP,如果你是在廣域網又沒有靜態IP那麼可以通過域名(這種情況需要有個虛擬主機),如果你沒有虛擬主機又沒有靜態IP又需要在廣域網使用可以利用動態域名繫結工具來實現。

2.區域網中使用一定要關閉SVN所在機器的防火牆。(在客戶機連線SVN伺服器時最好先ping一下然後在瀏覽器中輸入對應地址試試,如果發現ping不通對方主機很可能是防火牆問題,注意包括各種防火牆)

SVN的使用

1.使用SVN,在VS中新增專案後,以後不需要每次都從File--Open—SubVersion Project來開啟,而只需要直接開啟副本中對應的解決方案檔案。

2.對一個檔案編輯時SVN會自動加鎖,編輯之後記得Commit。

3.關閉VS時如果有沒有Commit的檔案,下次開啟還可以Commit。

4.每次開啟VS時建議獲得新版本。