一、svn服务的安装
系统环境:Centos7.6
1、通过yum命令安装svnserver
yum -y install subversion
2、创建版本库存放目录(不是版本库,只是目录)
mkdir /data/svnrepos
3、创建版本库(svntest版本库)
svnadmin create /data/svnrepos/svntest
svntest目录下文件信息
drwxr-xr-x 2 root root 4096 Oct 28 14:58 conf drwxr-sr-x 6 root root 4096 Oct 28 15:16 db -r--r--r-- 1 root root 2 Oct 28 14:58 format drwxr-xr-x 2 root root 4096 Oct 28 14:58 hooks drwxr-xr-x 2 root root 4096 Oct 28 14:58 locks -rw-r--r-- 1 root root 229 Oct 28 14:58 README.txt
4、修改配置
进入svntest目录下的conf目录
cd /data/svnrepos/svntest/conf
有如下配置文件:
-rw-r--r-- 1 root root 1080 Oct 28 14:58 authz -rw-r--r-- 1 root root 309 Oct 28 14:58 passwd -rw-r--r-- 1 root root 3090 Oct 28 14:58 svnserve.conf
authz:负责账号读写权限的管理
passwd:负责账号和密码的用户名单管理
svnserve.conf:svn服务器配置文件
新增用户:
打开passwd文件,新增用户和密码(文件最后)
修改用户权限:
打开authz文件,新增用户的权限(文件最后)
[/]:表示根目录,即 /var/svnrepos
yanglp = rw:表示用户yanglp对根目录具有读写权限。
修改服务器配置文件:
编辑 svnserve.conf 文件
anon-access = none:表示禁止匿名用户访问。
auth-access = write:表示授权用户拥有读写权限。
password-db = passswd:指定用户名口令文件,即 passwd 文件。
authz-db = authz:指定权限配置文件,即 authz 文件。
realm = /var/svnrepos:指定认证域,即 /var/svnrepos 目录。
5、启动svn服务
svnserve -d -r /var/svnrepos
启动成功后,可用ps -aux查看服务启动是否成功
二、svn版本库的迁移
官方推荐:
关闭所有运行的进程,并确认没有程序在访问存储库(如 httpd、svnserve 或本地用户在直接访问)。
备份版本库
svnadmin dump 版本库地址 > 备份文件
恢复版本库
svnadmin create 版本库名称
导入版本库数据
svnadmin load 版本库名称 < 备份文件
方法一:全库操作即官方推荐的方案
方法二:增量备份或批次备份,批次恢复,特定reversion导出
svnadmin dump repos –r 23 --incremental > rev-23.dumpfile //将version23导出 svnadmin dump repos –r 100:200 --incremental > rev-100-200.dumpfile //将version100~200导出
批次导入,将这几个备份文件装载到一个新的版本库中
svnadmin load newrepos < rev-100-200.dumpfile
最后切换客户端版本库
svn switch --relocate svn://a.com/newRepo/ps svn://b.com/newRepo/ps
在我们完成服务器端的版本迁移之后,必须通知客户端运行切换分支的命令,否则客户端的提交还是提交到旧的版本库去。SVN也为我们准备了这样的命令:svn switch。
svn switch命令语法svn switch URL [PATH]
switch --relocate FROM TO [PATH]svn switch命令用于更新工作副本的URL。意即指向新的版本库位置。首先要注意的一点是我们即可以将整个工作副本指向新的URL,也可将工作副本下的某个目录指向新的URL。
另外一个重要的参数就是--relocate。这个参数是否使用对于结果如何有很大影响,使用不当甚至可能会造成版本库不可用。其中有两条重要的规则:
A.假如工作副本只是映射到同一个版本库内的不同位置,那么使用svn switch即可
B.假如工作副本已是映射到不同的版本库,那么必须使用svn switch --relocate
上面第二条规则通常发生在我们需要将整个版本库迁移到另外一台机,或者同一台机的不同版本库时。这个时候使用--relocate会刷新原有工作副本中每个文件的URL头部。