1、軟體下載
下載Subversion伺服器程式。
到http://subversion.tigris.org/ 的下載二進位安裝檔案,Windows部分下載,http://www.collab.net/downloads/subversion/ 。
我下載的是CollabNetSubversion-server-1.5.4-1.win32.exe。
2、伺服器和用戶端安裝
Subversion1.5版本的安裝包內建了Apache2.2.8,所以無需額外安裝Apache伺服器。
一路預設安裝,如果需要修改倉庫根目錄或者Apache2.2.8連接埠可以自行修改為自己的資訊,Apache預設連接埠為80,Subversion預設倉庫儲存路徑為C:svn_repository可自由設定倉庫儲存路徑(E:\svn_repository)。
安裝的過程中會自動將Subversion和Apache註冊成服務,安裝完成後重啟一下電腦,運行services.msc查看服務,可以看到 “Apache2.2”和“Subversion Server”兩個服務已經自動啟動,如果不想讓他們自動啟動,可以修改為手動啟動。
3、建立版本庫(Repository)
資料存放區格式:Berkeley DB 和FSFS。
運行Subversion伺服器需要首先要建立一個版本庫(Repository),可以看作伺服器上存放資料的資料庫,在安裝了Subversion伺服器之後,可以直接運行,如:
svnadmin create E:\svn_repository\svndemo
(預設的資料存放區方式FSFS,也可以通過--fs-type參數明確地制定檔案系統類型,可選的值包括fsfs和dbd)。
就會在目錄E:\svndemo\repository下建立一個版本庫。
我們也可以使用TortoiseSVN圖形化的完成這一步:
在目錄E:\svndemo\repository下"右鍵->TortoiseSVN->Create Repository here...“, 然後可以選擇版本庫模式, 這裡使用預設即可, 然後就建立了一系列目錄和檔案。
4,配置使用者和許可權
配置subversion
修改E:\svndemo\repository\conf目錄下的檔案svnserve.conf:
#沒通過驗證,則無任何許可權
#anon-access = none
#通過驗證,最多可獲得寫入權限
#auth-access = write
#驗證檔案的位置
#password-db = passwd
#許可權設定檔的位置
#authz-db = authz
去除行開頭的注釋關鍵字,並設定為:
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
建立權限原則檔案authz:(在svnserver.conf同目錄下有authz檔案,修改anthz)
[groups]
admin = admin,root
#關鍵字“@”代表組
[svndemo:/]
@admin = r
guest = rw
[/svndemo:/Trunk]
@admin = r
如果使用svn://localhost/方式串連版本庫,則設定如下內容:
然後修改同目錄的passwd檔案,去掉下面三行的注釋:
# [users]
# harry = harryssecret
# sally = sallyssecret
最後變成:
[users]
harry = harryssecret
sally = sallyssecret
在passwd檔案中,“=”前的字元就是使用者名稱,後面的就是密碼。還要注意“[users]”前面的注釋“#”一定要刪除掉
如果使用http://localhost/svn/svndemo方式串連版本庫,則設定如下內容:
用apache htpasswd 建立使用者密碼檔案,並添加使用者密碼到密碼檔案中:
首次建立一個新的認證檔案並在其中添加一條使用者aa的記錄,密碼將被提示輸入。
htpasswd -c E:\svn_repository\svndemo\.htpasswd aa
(在E:\svn_repository\svndemo目錄下會產生一個.htpasswd檔案,存放使用者aa和aa的密碼)
添加或修改使用者aa的密碼。密碼將被提示輸入。在Windows平台上,密碼將使用Apache修改過的MD5演算法進行加密;在其它平台上將使用crypt()進行加密。如果指定的檔案不存在,htpasswd將只返回一個錯誤碼,而不做其它任何事:
htpasswd E:\svn_repository\svndemo\.htpasswd aa
在Apache/conf/httpd.conf中註冊Subversion瀏覽庫和許可權控制moudle:
LoadModule
dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
注意:mod_dav_fs.so 和mod_dav.so必須被開啟(去掉開頭的注釋關鍵字“#”),且必須在mod_dav_svn.so
和mod_authz_svn.so之前
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so
在Apache/conf/httpd.conf中添加Location:
#表示訪問配置庫的url為:http://xxx.xxx.xxx/SVN
<Location /svn>
#告訴Apache哪個模組負責服務像那樣的URL
DAV svn
#配置庫路徑:
SVNParentPath E:\svn_repository
#啟用基本的驗證,使用者名稱/密碼驗證
AuthType Basic
#當一個驗證對話方塊彈出時,告訴使用者這個驗證是用來做什麼的
AuthName "svn repos"
#身分識別驗證檔案的路徑
AuthUserFile E:\svn_repository\svndemo\.htpasswd
#指定authz來限定各個使用者或組在版本庫中目錄的存取權限
AuthzSVNAccessFile E:\svn_repository\svndemo\conf\authz
#只允許https方式訪問
#SSLRequireSSL
#Subersion內建的XSLT樣式表
#SVNIndexXSLT "/svnindex.xsl"
#允許匿名訪問
#Satisfy Any
#禁止匿名訪問
Require valid-user
#允許訪問/svn目錄
SVNListParentPath on
</Location>
5,運行獨立伺服器
運行apache伺服器,使用http://svn伺服器IP/svn/svndemo 串連伺服器。
單獨運行svn服務的話在任意目錄下運行: svnserve -d -r E:\svndemo\repository 我們的伺服器程式就已經啟動了。注意不要關閉命令列視窗,關閉視窗也會把svnserve停止。
6、Subversion控制中文目錄的存取權限
方法很簡單,就是將你的許可權控制檔案的格式轉換為無BOM的UTF-8格式,
將許可權檔案改成UTF-8格式,我使用的是UltraEdit的菜單"ASCII to UTF-8 (Unicode
Editing)"。