<<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]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值