<<svn服务配置和维护常用命令>>
2012-04-16 17:01
726 查看
<<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" 博客, 请务必保留此出处/article/4500420.html
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]
~/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" 博客, 请务必保留此出处/article/4500420.html
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]
相关文章推荐
- Svn 服务配置和维护常用命令
- Svn 服务配置和维护常用命令
- Svn 服务配置和维护常用命令
- Redis Hash类型数据常用命令总结<转>
- <转>struts2中Convention中的basePackage与locators配置种种
- Redis常用命令速查 <第二篇>
- 关于Spring中的<context:annotation-config/>配置
- ubuntu下配置nfs服务<自己有一定的修改>
- logback logback.xml常用配置详解(三) <filter>
- logback logback.xml常用配置详解(三) <filter>
- Cassandra<一>安装配置及常用命令
- logback 常用配置详解(二) <appender>
- svn服务配置和日常维护命令
- <java——常用对象API、其他对象>
- logback 常用配置详解(二) <appender>
- logback 常用配置详解(二) <appender>
- <input> 文本框几种常用属性
- Linux的常用命令<1>
- <Action>和<result>配置中的各项默认值
- logback 常用配置之<appender>