Linux 下安裝subversion 詳細指南

zm_21發表於2014-05-16
1 下載相關的軟體
Apache-2.x   http://httpd.apache.org  下載原始碼包
Subersion    http://subversion.tigris.org/  下載原始碼包
本文中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#

相關文章