一、安裝
第一步,安裝Apache2.2,下載後直接安裝就可以了,沒有什麼難的。
第二步,安裝Subversion1.6.1(目前最新版本),注意下載時,看是否支持Apache2.2;我使用的是svn-win32-1.6.1.zip,解壓之後即可使用。
二、整合
第一步,打開Apache安裝目錄下的httpd.conf文件
找到下面的語句:
#LoadModule dav_module modules/mod_dav.so
將上面語句前面的#去掉
第二步,在這句後面追加,如下語句:
LoadModule dav_svn_module "{svn安裝目錄}/bin/mod_dav_svn.so"
LoadModule authz_svn_module "{svn安裝目錄}//bin/mod_authz_svn.so"
注:{svn安裝目錄}就是svn-win32-1.6.1.zip解壓後你放的目錄
第三步,在這個文件的最後,追加如下語句:
<Location /svn>
DAV svn
SVNPath d:/svn/repos1
</Location>
如果想要指定多個版本庫,可以用多個 Location 標籤,也可以使用
SVNParentPath 代替 SVNPath,例如在 e:/svn 下有多個版本庫
repos1,repos2 等等,用如下方式指定:
<Location /repository>
DAV svn
SVNParentPath e:/svn
</Location>
可以通過 http://服務器IP/repository/repos1,http://服務器IP/repository/repos2 來訪問。
第四步,創建倉庫
根據apache的配置文件的設置建立目錄:d:/svn,然後用svnadmin create d:/svn/myproject命令創建倉庫,命令執行成功之後,會在d:/svn/myproject下面生成很多的文件和目錄。
我們也可以使用 TortoiseSVN 圖形化的完成這一步:
先建立空目錄 E:/svn/repos1 ,注意一定是要空的。然後在 repos1
文件夾上“右鍵->TortoiseSVN->Create Repository
here...”,然後可以選擇版本庫模式,這裏使用默認的FSFS即可,然後就創建了一系列文件夾和文件,同命令行建立的一樣。
第五步,運行
重新啓動Apache Server
在瀏覽器中輸入網址:
http://localhost/svn/myproject
這時候,看到頁面顯示:
Revision 0: /
Powered by Subversion version 1.6.1 (r).
安裝成功,接下來將進行權限設置。
三、svn權限設置
svn使用apache的權限管理對檔案庫及目錄進行讀寫管理
修改上面第三步的內容爲:
<Location /svn>
DAV svn
#SVNListParentPath on
SVNParentPath d:/svn
### apache auth begin
# how to authenticate a user
AuthType Basic
AuthName "Subversion repository"
AuthUserFile D:/Subversion/apache_authz (保存用戶名和密碼,這個文件需要用Apache的htpasswd工具創建)
Require valid-user
### apache auth end
### svn auth begin
# our access control policy
AuthzSVNAccessFile D:/Subversion/svn_authz (保存用戶訪問的權限策略)
# authentication if necessary
Satisfy Any
### svn auth end
</Location>
用htpasswd工具創建apache_authz 文件,
建立保存用戶名和密碼的文件
htpasswd -cm D:/Subversion/apache_authz username1
-c 表示創建文件,-m表示對密碼用md5加密
然後,會提示輸入兩次密碼,以後再加用戶就不需要用-c了,直接用-m即可。
更改用戶密碼:
htpasswd -m D:/Subversion/apache_authz username1
刪除用戶(要用大寫的 D ):
htpasswd –D D:/Subversion/apache_authz username1
下面建立控制用戶訪問權限的文件svn_authz
在D:/Subversion中新建一個記事本文件,輸入下面的內容:
[groups]
committers = paulex, richard
developers = jimmy, michel, spark, sean
[myproject:/] //這表示,倉庫myproject的根目錄下的訪問權限
@developers = rw
[myproject:/src] //myproject倉庫下src目錄的訪問權限
@developers = rw // 如果在前面加上@符號,則表示這是個羣組權限設置
r 表示讀權限
w 表示寫權限
AuthzSVNAccessFile 指向的是 authz 的策略文件,詳細的權限控制可以在這個策略文件中指定。訪問文件 accesspolicy.conf 的語法與svnserve.conf和 Apache 的配置文件非常相似,以(#)開頭的行會被忽略;在它的簡單形式裏,每一小節命名一個版本庫和一個裏面的路徑;認證用戶名是在每個小節中的選項名;每個選 項的值描述了用戶訪問版本庫的級別:r(只讀)或者rw(讀寫),如果用戶沒有提到或者值留空,訪問是不允許的; * 表示所有用戶,用它控制匿名用戶的訪問權限;@符號區分組和用戶。
好,配置完成,重新啓動Apache server
在瀏覽器地址欄中再次輸入:http://localhost/svn/myproject
這次要輸入密碼才能進入.
基本操作流程
1、取出(check out)
取出版本庫到一個工作拷貝:到任意空目錄下,比如在f分區建立一個空文件夾 f:/work 。“右鍵
-> SVN Checkout”。
在“URL of
repository”中輸入“http://localhost/svn/repo1/guestbook”,這樣我們就得到了一份
guestbook 中內容的工作拷貝。
2、存入(check in)/提交(commit)
在工作拷貝中作出修改並提交:
在 guestbook 工作拷貝中隨便打開一個文件,作出修改,然後“右鍵 ->
SVN Commit...
”。這樣我們就把修改提交到了版本庫,版本庫根據情況存儲我們提交的數據。
在修改過的文件上“右鍵 -> TortoiseSVN -> Show Log”
,可以看到對這個文件所有的提交。在不同的 revision 條目上“右鍵
-> Compare with working copy”,我們可以比較工作拷貝的文件和所選
revision 版本的區別。