天天看點

SVN+Apache安裝、配置與使用[For Windows]

Subversion安裝、配置與使用

一、Subversion的安裝與測試

Subversion的配置方式有很多種,同時也可以配置不同的作業系統之上,本文我講解的是Subversion 1.6.15 for Apache2.2.17在Windows下的安裝,通過與Apache的內建,Subversion可以采用Web Http的方式提供服務,這樣便于在網際網路的環境下使用,提供目錄及其版本控制。這裡值得注意的是Subversion對不同版本的Apache支援有所不同,下載下傳Apache的版本一定要和Subversion提供支援的Apache版本相比對,否則将不能配置其進行正常工作,個體的請查閱Subversion官方網站(http://subversion.tigris.org/)。

  安裝Apache2.2

關于安裝Apache2.2,你可以先到官方網站上下載下傳其軟體http://httpd.apache.org/,下載下傳完後,先不要安裝,首先要做的就是停掉IIS(如果你已經安裝了的話),因為Apache2.2的安裝預設要占用IIS的80端口,而這與IIS相沖突,在停了IIS之後,我們就可以點選進行安裝,安裝過程中一直點選下一步即可(可以設定其要安裝的路徑),直到安裝完成。

因為Apach安裝預設是80端口,如果它使用了80端口話,那IIS現在就無法使用了,那麼我們可以給Apache更換一個端口号,方法是打開Apache安裝路徑下的conf檔案夾下的httpd.conf檔案,在其中找到Listen 80這一行,将後面的80改成你相使用的端口号,如8000。下圖所示是apache正常啟動(沒內建SVN):

Apache是已經啟動了,那麼我們怎麼知道我們的設定是正常的呢?下面我們就找開IE,在其中輸入http://localhost/,如果你能夠看到哪下界面,那麼說明其已正常工作了。

安裝Subversion

先到Subversion官方網站上一載Subversion 1.6.15,安裝到你所指定的目錄。如本人将其指定在C:\Program Files\Subversion。

拷貝檔案如下:

把這個Subversion的安裝目錄bin裡的mod_authz_svn.so和mod_dav_svn.so檔案拷貝到Apache2.2安裝路徑下的modules 目錄裡(如本人安裝路徑的C:\Program Files\Apache Software Foundation\Apache2.2\modules)。

所Subversion目錄裡所有的*.dll檔案及svnadmin.exe檔案拷貝到Apache2.2安裝路徑下的bin目錄裡(如本人安裝路徑的C:\Program Files\Apache Software Foundation\Apache2.2\modules\bin)。

配置Apache

打開Apache安裝路徑下的conf檔案夾下的httpd.conf檔案,找到下面兩行,并把前面的#号删除(說明:#号在此檔案中作為注釋使用)。

#LoadModule dav_module modules/mod_dav.so

#LoadModule dav_fs_module modules/mod_dav_fs.so
           

然後在所有LoadModule的最下行增加如下兩行:

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so
           

具體位置如下圖所示:

重新啟動Apache,這時其實已經将Subversion與Apache進行了初步的內建,如下圖所示:

下面要做的事就是為Subversion建立一個用來存放檔案的目錄,比如說我們将其設定為D:/SvnServer,那麼我們如何來通知Apache我們的資源路徑在什麼地方呢?可以通過在httpd.conf檔案的最後加入Location标簽來進行設定,如下所示:

   #Subversion的版本庫的URL是http://server/svn/

DAV svn 

    SVNListParentPath on    #顯示所有SVNParentPath下的版本庫

    SVNParentPath D:\svn    #告訴SVN需要檢視的版本庫位于D:/SVN下

    AuthType Basic               #記過基本認證(使用者名、密碼)

    AuthName "Subversion repositories" 

    AuthUserFile D:\SvnServer\passwd           #使用的密碼檔案。 

    AuthzSVNAccessFile D:\SvnServer\svnaccessfile       #設定權限檔案

    Require valid-user                     #指明使用者名、密碼認證通過才能通路
           

這個時候我們的資源目錄已經設計好了,下面我們就來為此建立一個項目資源檔案。

在開始菜單運作中輸入cmd,然後把目錄轉換到Apache的bin目錄下;通過輸入如下指令來建立一個項目資源檔案root

 

svnadmin create D\:SvnServer\root
           

這個時候我們的項目檔案已經建立好了,我們可以通過下面的Http網址進行通路了http://localhost:80/svn/root,這個時候沒有對此通路加任何通路權限控制。下面我們就來說一下如何建立使用者。

使用者建立

在開始菜單運作中輸入cmd,然後把目錄轉換到Apache的bin目錄下;

通過輸入如下圖的指令來建立一個使用者:

這個時候,你在D:SvnServer目錄下面就會看到一個svn_auth_passwd,這個說明使用者檔案已經建立,這裡要加以說的是,-c用于第一次建立檔案使用,如果以後要加使用者就不能再使用-c了,要使用-m。

接下來你用http://localhost:8000/svn/testproject 去通路的時候,他就會叫你輸入使用者名和密碼去驗證了。

  用戶端的使用

上面我們已經配置好了Subversion的目錄,即Server,那麼我們對于每一個開發的程式員來說,如何Get Source Code呢?下面我們就來談談這個問題?

我們現在可以安裝一個TortoiseSVN,可以到官方網站(http://tortoisesvn.tigris.org/)上面下載下傳,這是一個非常好用的Subversion用戶端軟體,安裝步驟非常簡單,這裡不在說明了。在安裝好這個軟體後,我們點選滑鼠右鍵,你會發現多了幾個菜單,如下所示:

用戶端使用的時候,我們除了上面所說網頁看的那種方式,我們可以點選SVN CheckOut從SVN Server從指定的目錄去下載下傳要使用的項目,會彈出一個配置框,在下載下傳位址中輸入http://localhost:8000/svn/testproject,點選OK,就會出現如下圖的驗證方式,輸入在上面建立的使用者名和密碼,你就可以從SVN上面下載下傳testproject的内容到本地了。

下面再和大家共享一下TortoiseSVN的一些簡單用法:

增加檔案

假設我們上面在一個叫GetTestProjectSource的檔案夾上點選了SVN CheckOut,那麼我們現在就在GetTestProjectSource裡建立一個檔案叫test.txt的檔案,然後又擊這個檔案到這個檔案上,在TortoiseSVN中點選Add,點選OK,加完後,你會發現檔案的圖示發生的改變,就說明我們已經把檔案加到SVN Server上了,這隻是加上,還沒有送出,你需要再點右擊這個檔案,你會發現多了一個SVN Commit項目,點選這個,把這個檔案commit上去,這裡你的檔案才是正确到Server上了,同時檔案圖示也發生了改變。

這個時候如果有人同樣的在來獲得這個http://localhost:8000/svn/testproject 路徑上的内容的時間就會看到這個檔案被下載下傳了。

修改檔案

可能我們會在本地進行修改,就是我們一開始說的,昨天我把修改完的代碼Commit上去了,那麼今天我可能對這些代碼做了修改, 修改完後我們應該怎麼做呢?

我們現在就打開test.txt檔案并在其中輸入test,然後點選儲存,這時你會發現圖示會變給,就說明這個檔案已經在你的本地修改過,與SvnServer伺服器上的版本已經不統一了,現在你伺服器上的是昨天的代碼,你這個是你剛修改的代碼。我們需要所這兩個代碼進行同步。

點選這個檔案右鍵,再次選擇 SvnCommit,代碼就上去了。這個時候說明現在伺服器上的代碼都是最新的了。

上面我們把檔案加上去後,或者更新了,那麼假設現在有兩個使用者在進行開發,另外一個使用者怎麼知道我做了哪些修改呢,又如何獲得這些代碼呢?我們可以通過右鍵點選這個檔案夾,然後選擇Update來更新目前的檔案夾,就是他就可以獲得我所修改的代碼了,具體的我就裡就不說你了,自己做一下測試吧。

檢視修改過的版本及比較版本

我們剛才對test.txt檔案做了修改,并且更新到了SVN Server上,那麼現在我們對這個檔案再次做修改,在原來内容的test後面加上 by Xiong Wei,然後儲存,這時我們先不要進行SVN Commit,我們點選,選擇如下圖所示的Diff。

我們将會看到本次修改與上次的修改有什麼不同了,如下圖所示:

現在我們将這個檔案Commit上去。

比較說我們想知道這個檔案被更新過多少次,每次之間代碼的修改有什麼差別,應該怎麼辦呢?

不用急,TortoiseSVN也為我們提供了這樣的功能。我們可以左擊這個檔案,選擇TortoiseSVN下的Show log,這個時候我們就可以看到整個被修改過的記錄了,如下圖所示。

我們可以從中任意選擇兩個條想要比較的記錄(按Ctrl鍵選中),然後點選左鍵,選擇Compare revisions。

我們還可以将我們本地的代碼恢複到一個較早的版本,隻要選擇上面記錄點的一條後,右擊此記錄,選擇Revert to this revision,就是可将你本地的代碼恢複到較早的版本了。

需要注意的是假設UserA和UserB都獲得了現在的版本Revision顯示為3,當UserA再次修改後Commit,那麼Revision就是4了,那就UserB就不能再更新了,會被提示一個更新錯誤資訊,隻有把目前的版本更新到4後,在4上做操作才能被允許Commit。