<<svn服務配置和維護常用命令>>

                <<svn服務配置和維護常用命令>>

~/bin/svn-create-repos.sh

1. Svn獨立服務安裝

操作系統: Redhat Linux AS3  AS 4   ContOS AS 4
安裝包獲取:

下載:
http://subversion.tigris.org/downloads/subversion-1.4.0.tar.gz
http://subversion.tigris.org/downloads/subversion-deps-1.4.0.tar.gz

編譯:
以root用戶登錄.
將subversion-1.4.0.tar.gz和subversion-deps-1.4.0.tar.gz傳到服務器.
$ tar xfvz subversion-1.4.0.tar.gz
$ tar xfvz subversion-deps-1.4.0.tar.gz
subversion-deps包有四個目錄zlib apr apr-util neon這四個目錄都是依賴包, 編譯subversion所必須的代碼
$ cd subversion-1.4.0
$ ./configure -prefix=/opt/svn -without-berkeley-db -with-zlib
(注: 以svnserve方式運行, 不加apache編譯參數. 以fsfs格式存儲版本庫, 不編譯berkeley-db)
$ make clean
$ make
$ make install

$ vi /etc/profile,在/etc/profile
# 加入:
PATH=$PATH:/opt/svn/bin
export PATH

測試:
$ svnserve -version
# 如果顯示如下, 安裝成功:
svnserve, version 1.4.0 (r21228)
compiled Oct 12 2006, 10:18:56
Copyright (C) 2000-2006 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).
The following repository back-end (FS) modules are available:
* fs_fs : Module for working with a plain file (FSFS) repository.


2. svn配置

2.1 建立版本庫目錄

建立版本庫目錄, 可建多個:
$ mkdir -p /opt/svndata/repos1
$ mkdir -p /opt/svndata/repos2

建立版本庫:
$ svnadmin create /opt/svndata/repos1
$ svnadmin create /opt/svndata/repos2

2.2 修改版本庫配置文件:

2.2.1 版本庫1:

$ vi /opt/svndata/repos1/conf/svnserve.conf
# 內容修改爲:
[general]
anon-access = none
auth-access = write
password-db = /opt/svn/conf/pwd.conf
authz-db = /opt/svn/conf/authz.conf
realm = repos1

2.2.2 版本庫2:

$ vi /opt/svndata/repos2/conf/svnserve.conf
# 內容修改爲:
[general]
anon-access = none
auth-access = write
password-db = /opt/svn/conf/pwd.conf
authz-db = /opt/svn/conf/authz.conf
realm = repos2

# 即除realm = repos2外, 其他與版本庫1配置文件完全相同. 如果有更多的版本庫, 依此類推.


2.3 配置允許訪問的用戶:

爲了簡化配置, 2個版本庫共用1個用戶配置文件. 如有必要, 也可以分開.
注意: 對用戶配置文件的修改立即生效, 不必重啓svn.
文件格式如下:
[users]
<用戶1> = <密碼1>
<用戶2> = <密碼2>
其中, [users]是必須的. 下面列出要訪問svn的用戶, 每個用戶一行.

$ vi /opt/svn/conf/pwd.conf
[users]
alan = password
king = hello

2.4 配置用戶訪問權限:

爲了簡化配置, 3個版本庫共用1個權限配置文件/opt/svn/conf/authz.conf. 如有必要,
也可以分開. 文件中定義用戶組和版本庫目錄權限.
注意:
    * 權限配置文件中出現的用戶名必須已在用戶配置文件中定義.
    * 對權限配置文件的修改立即生效, 不必重啓svn.

2.4.1 用戶組格式:

[groups]
<用戶組名> = <用戶1>,<用戶2>
其中, 1個用戶組可以包含1個或多個用戶, 用戶間以逗號分隔.

2.4.2 版本庫目錄格式:

[<版本庫>:/項目/目錄]
@<用戶組名> = <權限>
<用戶名> = <權限>

其中, 方框號內部分可以有多種寫法:
    /                表示根目錄及以下. 根目錄是svnserve啓動時指定的, 我們指定爲
                       /opt/svndata.這樣, / 就是表示對全部版本庫設置權限
    repos1:/         表示對版本庫1設置權限
    repos2:/abc      表示對版本庫2中的abc項目設置權限
    repos2:/abc/aaa  示對版本庫2中的abc項目的aaa目錄設置權限

權限主體可以是用戶組,用戶或*, 前面加@表示用戶組, *表示全部用戶. 權限可以是
w,r,wr和空, 空表示沒有任何權限.

$ vi /opt/svn/conf/authz.conf
# 示例:
[groups]
admin = alan
[/]
@admin = rw
[repos1:/abc/aaa]
king = rw
[repos2:/pass]
king =

刪除無用文件:
$ rm /opt/svndata/repos1/conf/authz
$ rm /opt/svndata/repos1/conf/passwd
$ rm /opt/svndata/repos2/conf/authz
$ rm /opt/svndata/repos2/conf/passwd

3. 啓動svn

建立啓動svn的用戶:
$ useradd svn
$ passwd svn
# 根據提示爲用戶svn設置密碼

允許用戶svn訪問版本庫:
$ chown -R svn:svn /opt/svndata
$ chown -R svn:svn /opt/data

// 啓動svn:
$ su - svn -c "svnserve -d -listen-port 9999 -r /opt/svndata"
其中:
su  svn表示以用戶svn的身份啓動svn
-d  表示以daemon方式(後臺運行)運行
-listen-port 9999   表示使用9999端口, 可以換成你需要的端口. 但注意, 使用1024以下的端口需要root權限
-r /opt/svndata     指定根目錄是/opt/svndata

// 檢查:
$ ps -ef | grep svnserve
如果顯示如下, 即爲啓動成功:
svn       6941     1  0 15:07 ?        00:00:00 svnserve -d -listen-port 9999 -r /opt/svndata


4. svn服務與apache 整合

Subversion存儲方式, 一是Berkeley DB伯克利存儲方式, 二是fsfs存儲方式.

1,安裝APR-1.2.7和APR-util-1.2.7

    下載地址: http://apr.apache.org/

    tar zxvf  apr-1.2.7.tar.gz

   ./configure

    make

    make install

    tar zxvf apr-util-1.2.7.tar.gz

    ./configure --with-apr=/usr/local/apr/

     make

     make install

2,編譯安裝APACHE.

    tar zxvf httpd-2.2.3.tar.gz
    cd httpd-2.2.3
   ./configure --prefix=/opt/apache --enable-dav --enable-so --enable-maintainer-mode --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config

     make
     make install

3,安裝subversion-1.4.0

     tar zxvf subversion-1.4.0.tar.gz

./configure --with-apxs=/opt/apache/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr
問題: 有關共享庫錯誤
方法:   echo "/usr/local/apr-util/lib" >> /etc/ld.so.c
            ldconfig      echo $?


make
    make install
   設置環境變量(可做可不做)
vi /etc/profile,在/etc/profile最後加入:
PATH=$PATH:/opt/svn/bin
export PATH

4,查看subversion兩個動態庫有沒有安裝成功

     vi /opt/apache/conf/httpd.conf

    看到下面兩個模塊說明安裝成功

     LoadModule dav_svn_module     modules/mod_dav_svn.so
     LoadModule authz_svn_module   modules/mod_authz_svn.so

5,配置SVN

    vi /opt/apache/conf/httpd.conf

     配置:

    <Location /svn>
       DAV svn
        SVNParentPath /data/svn/repos //svn父目錄
        AuthType Basic //連接類型設置
        AuthName "Subversion repository" //連接框提示
        AuthUserFile /data/svn/passwd //用戶配置文件
        AuthzSVNAccessFile /data/svn/auth
        Require valid-user //passwd所有的用戶都可以訪問
  </Location>

6,建立SVN存儲倉庫

     #mkdir -p /opt/svndata/repos

    #svnadmin create -fs-type fsfs /opt/svndata/repos

備份以前的SVN庫

#svnadmin dump /opt/svndata/repos > /root/repos20080328

把備份出來的數據恢復到本地

#svnadmin load /opt/svndata/repos/ < /root/repos20080328

7,建立本地訪問控制文件
#/opt/apache/bin/htpasswd [-c] /opt/passwd north
//第一次設置用戶時使用-c表示新建一個用戶文件. #/opt/apache/bin/htpasswd passwd 用戶名(加入新的用戶)


8,建立本地項目控制文件

    touch /opt/svndata/auth

    文件內容爲:

[groups]
[repos1:/]
#wxy = rw
north = rw
tom = rw


[repos2:/]
repos2 = rw


9,安裝客戶端, 訪問服務器

   http://192.168.0.180:/svn/jishu
   注意: SVN是APACHE配置的時候加上去的.

10,到此安裝基本結束

     修改一下/data/svn/repos屬性, 否則會導致文件上傳失敗.

     chmod -R apache.apache repos

三,日常維護命令和參數

啓動svn服務
svnserve -d --listen-port 20000 -r /opt/svndata


創建版本庫
svnadmin create fs-type fsfs /opt/svndata/mark


查看版本庫的信息
svn list  file:///opt/svndata/mark
svn list --verbose file:///opt/svndata/mark

導入庫的目錄結構
svn import /tmp/mark/ file:///opt/svndata/mark/ --message "init" (文件夾mark下有bo)


刪除版本庫mark下文件夾bo
svn delete svn://192.168.0.180:20000/opt/svndata/mark/bo -m "delete "


//導出
$svnlook youngest oldrepo
$svnadmin dump oldrepo >; dumpfile

//還原
$svnadmin load newrepo < dumpfile

停止subversion服務
ps -aux | grep svnserve
kill -9 ID號

作者:options-future
本文出自 "bo" 博客, 請務必保留此出處http://future.blog.51cto.com/26959/95178




















100. FAQ

100.1 subversion 中修改 log message

有兩個命令可以完成:

    * 客戶端:
[~]$ svn propset svn:log "message text" -r 48 URL --revprop
[~]$ svn propset svn:log '使得當參數不匹配時, 其能夠正常打印幫助信息然後退出' -r 33 --revprop

    * 服務端:
[~]$ svnadmin setlog REPOS_PATH -r REVISION FILE

NOTE:
但是, 兩者都需要設定 pre-revprop-change, 倉庫下 svn/hook 目錄裏有
pre-revprop-change.tmpl 模板, 複製一份到文件 pre-revprop-change 並 chmod a+x
就可以了.


100.2 svn 查看資源歷史記錄失敗; 並提示"Item is not readable"

問題: svn 查看資源歷史記錄失敗 , 並提示"Item is not readable"

solution:
在svnserve.conf 文件中,設置 anon-access = none 就可以了

100.3 SVN服務器搬家

內部服務器裝上2T硬盤後, 打算把SVN服務器也搬到那臺機器上. 原理就是dump一下現有
的全部數據, 再在另外一臺機器上load. 過程:    在本地VisualSVN Server安裝路徑的
bin目錄下執行:

// g:\svn\new爲當前SVN庫存放的位置
$ svnadmin dump g:\svn\new > g:\transfer.dmp

13個G的庫, dump後有35G, 傳到新機器上. 在該機器上執行:

$ svnadmin create g:\svn\new
$ svnadmin load g:\svn\new < g:\transfer.dmp

賬號及授權配置文件就是g:\svn下的 authz,htpasswd, 拷到新機器庫目錄下即可. 版本
號爲1100左右, 整個搬家過程用了近6個小時.

查看原文: http://rico.zhyh.org/?p=3368

100.4 set proxy for svn

公司上網需要用通過代理, 不能直接訪問外部網絡, SVN中可以通過配置文件配置代理來
下載代碼, 在安裝完SubVersion之後, 在 C:\Documents and
Settings\[username]\Application Data\Subversion目錄下有一個servers文件(in
linux, it's ~/.subversion/servers), 其中有一些說明, 直接在最後一行加入如下配置
即可:

 http-proxy-host = [代理服務器的域名或者IP]
 http-proxy-port = [代理服務器的端口]
 http-proxy-username = [username]
 http-proxy-password = [password]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章