1 下載相關的軟件
本文中apache的版本為 Apache/2.2.4 (Unix)
Subversion 版本:svnserve 1.4.3 (r23084)
2 安裝相關軟件
2.1 安裝apache
1)./configure –prefix=/usr/local/apache(安裝目錄)–enable-so –enable-proxy –enable-ssl –enable-vhost-alias –enable-mods-shared=most –enable-dav –enable-maintainer-mode
說明:其中—enable-dav 和—enable-maintainer-mode是為了能在apache下集成subversion才加進去的編譯參數。
–with-mpm=worker(這個參數,要詳細閱讀apache的相關文檔來做決定用哪種mpm,待定)
2)make (編譯)
3)make install (安裝)
4)make clean(清理源代碼目錄)
3 創建倉庫
2.2 安裝subversion
1)配置
./configure –prefix=/home/svn –enable-maintainer-mode –with-apr=/usr/local/apache2/bin/apr-1-config –with-apxs=/usr/local/apache2/bin/apxs –with-apr-util=/usr/local/apache2/bin/apu-1-config
其中:/usr/local/apache2為apache的安裝目錄,而不是源代碼目錄。
2)make
3)make install
4)make clean
倉庫的規劃一般是有一個倉庫,其中存放一個或者多個項目根目錄,在每個項目根目錄下面有/trunk, /branches, and /tags三個子目錄,或者另外的規劃。
/
utils/
calc/
trunk/
tags/
branches/
calendar/
trunk/
tags/
branches/
…
office/
spreadsheet/
trunk/
tags/
branches/
…
無論哪種規劃,但是都必須遵循的一個原則就是必須符合你的項目的設計。
3.2 創建倉庫
根據上面一節的規劃來創建你的倉庫。
1) 創建倉庫
$ svnadmin create /path/to/repos
觀察repos目錄結構
2) 根據倉庫規劃,創建臨時目錄:
$mkdir tmpdir
$cd tmpdir
$mkdir boss (boss在這里是project name)
$mkdir boss/trunk
$mkdir boss/tags
$mkdir boss/branches
3) 添加上面創建的目錄結構到1)中創建的倉庫中去
$svn import . file:///path/to/repos –message ‘Initial repository layout’
.:代表當前目錄
file段:代表1)中創建的倉庫
4 subversion服務器配置
Subversion 的服務器運行方式分為兩種:http方式和tcp(以svnserve)方式。
4.1 http方式配置
結合apache的dav模塊來是實現。
在apache的安裝目錄下面找到配置文件httpd.conf,修改配置文件。
<Location /svn>
DAV svn
SVNPath /home/svn/repos
</Location>
4.2 svn方式配置
Subversion以svnserve方式運行
1) standalone mode
直接運行:#svnserve –d運行 lsof -i :3690可以看到SVN服務器已經在運行
2) xinetd mode在/etc/xinetd.d/下生成svnserve文件,內容如下
service svnserve
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
server = /home/svn/bin/svnserve
server_args = -i
}
編輯 /etc/services 檔,加入底下兩行:
svnserve 3690/tcp # Subversion svnserve
svnserve 3690/udp # Subversion svnserve
重啟xinetd服務/usr/sbin/xinetd –restart
運行 lsof -i :3690可以看到SVN服務器已經在運行
5 服務器配置
5.1 服務器配置
Subversion的配置文件存放在$SVN_HOME/your repository/conf目錄下面,配置文件名:svnserve.conf。
1) 基本權限管理
svnserve.conf的配置風格跟mysql的配置文件的風格相似。基于linux下的配置文件風格如下:
[xxx] section:配置段
配置段下面的配置區域,一般是:變量 = 值
在svnserve.conf中[general]段,訪問權限分為三種:read,write,none
anon-access = none (對匿名用戶)
auth-access = write (授權用戶)
2) 基于svn自己權限管理
Svn本身通過password-db = userfile和realm = my first實現了權限管理。
Password-db是權限文件放置位置。
Realm是加密的key
權限文件的格式類似如下:
[users]
A=123456 (其中a為用戶名,123456為密碼)
3)基于svn+ssh權限管理(略)
附錄:
命令列表
具體用法可參考 Subversion 命令參考手冊
Subversion 命令列客戶端: svn
svn add
svn cat
svn checkout
svn cleanup
svn commit
svn copy
svn delete
svn diff
svn export
svn help
svn import
svn info
svn list
svn log
svn merge
svn mkdir
svn move
svn propdel
svn propedit
svn propget
svn proplist
svn propset
svn resolved
svn revert
svn status
svn switch
svn update
Subversion 命令列服務端:
svnadmin list-unused-dblogs
svnadmin create
svnadmin dump
svnadmin help
svnadmin load
svnadmin lstxns
svnadmin recover
svnadmin rmtxns
svnadmin setlog
svnlook author
svnlook cat
svnlook changed
svnlook date
svnlook diff
svnlook dirs-changed
svnlook help
svnlook history
svnlook info
svnlook log
svnlook proplist
svnlook tree
svnlook youngest
bash-3.2# ls -al /usr/local/lib/libexpat.* /usr/local/include/expat.h
-rw-r--r-- 1 root wheel 40339 Jan 14 02:43 /usr/local/include/expat.h
-rw-r--r-- 1 root wheel 444628 Jan 14 02:43 /usr/local/lib/libexpat.a
-rwxr-xr-x 1 root wheel 793 Jan 14 02:43 /usr/local/lib/libexpat.la
lrwxr-xr-x 1 root wheel 13 Jan 14 02:43
/usr/local/lib/libexpat.so -> libexpat.so.6
-rwxr-xr-x 1 root wheel 265921 Jan 14 02:43 /usr/local/lib/libexpat.so.6
bash-3.2#