由於公司需要建立源碼版本庫,最近一段時間一直和SVN打交道,在配置使用過程中,覺得有一些問題有必要記錄下來,防止忘記。
根據大多數網友的推薦,我選擇了Apache+Subversion+Tortoise這種模式,爲了簡便起見,我選擇了Apache2.2+Subversion1.5.6的集成版本CollabNetSubversion-server-1.5.6-2.win32.exe,這應該是一個比較穩定版本搭配。
安裝過程也很簡單,只有在一處需要配置的地方注意一下:
兩個都勾選
svnserve的配置,因爲我們不使用該方式,所以配置可以略過。
Apache的配置,Host Port是需要設置一個端口(80端口一般是不能用的),而且不能和別的服務使用的端口衝突,不然Apache的服務就啓動不起來;Repository Path是版本庫的路徑,一般我們會設爲D:/SVN。
其他的一般不管,接着就默認下一步,直到安裝完成。
現在可以開始創建版本庫了,打開命令行窗口(DOS窗口),進入d:/svn目錄輸入
svnadmin create --fs-type fsfs proj1
完成後就在d:/svn/proj1創建了一個新的版本庫
然後到Subversion的安裝目錄下修改Apache的配置文件(通常是C:/Program Files/SubversionServer/httpd/conf/httpd.conf),做出如下修改:
去掉以下幾行的註釋(刪除 '#
'標記):
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so
再將以下兩行添加到 LoadModule
節的末尾:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
在最後面有如下幾行:
<Location /svn>
DAV svn
SVNParentPath d:/SVN
</Location>
修改爲:
<Location /svn/>
DAV svn
SVNListParentPath on
SVNParentPath D:/SVN
#SVNIndexXSLT "/svnindex.xsl"
AuthType Basic
AuthName "Fujin Teleway's repositories"
AuthUserFile D:/SVN/passwd
AuthzSVNAccessFile D:/SVN/svnaccessfile
Require valid-user
SVNAutoversioning on
ModMimeUsePathInfo on
</Location>
注意:爲什麼在<Location /svn/>後面多加個“/”呢?如果不多加“/”,那麼在IE輸入URL: http://MyServer/svn/就訪問不了svn的根目錄,但是如果多加上“/”,在IE輸入URL: http://MyServer/svn/ 就可以訪問svn的根目錄了。記住是輸入URL: http://MyServer/svn/ 不是http://MyServer/svn,不然也訪問不了svn的根目錄。但是這個方法在TSVN中訪問版本庫時不適用,一定要加版本庫名,例如http://MyServer/svn/proj1。
有了上面的修改,當然得建立兩個重要的文件:passwd和svnaccessfile
創建passwd文件:打開命令行提示符(DOS窗口),進入CollabNetSubversion的安裝目錄中Apache的bin目錄(我這裏是C:/Program Files/SubversionServer/httpd/bin),通過輸入下面的命令創建文件
htpasswd -c d:/svn/passwd <username>
它將會創建名爲passwd的文件用於認證。用下面的命令增加其它用戶
htpasswd d:/svn/passwd <username>
創建svnaccessfile文件:在d:/svn目錄下新建一個txt文本文件,錄入以下內容:
[groups] admin = john, kate devteam1 = john, rachel, sally devteam2 = kate, peter, mark docs = bob, jane, mike training = zak # Default access rule for ALL repositories # Everyone can read, admins can write, Dan German is excluded. [/] * = r @admin = rw dangerman = # Allow developers complete access to their project repos [proj1:/] @devteam1 = rw [proj2:/] @devteam2 = rw [bigproj:/] @devteam1 = rw @devteam2 = rw trevor = rw # Give the doc people write access to all the docs folders [/trunk/doc] @docs = rw # Give trainees write access in the training repository only [TrainingRepos:/] @training = rw
然後把該txt文件改名爲svnaccessfile,不需要擴展名。
現在可以在IE上輸入http://IP:port/svn/訪問根目錄。
在TSVN客戶端上輸入http://IP:port/svn/Project訪問你所建的項目了。