最近因公司测试环境需要做迁移,除了应用需要迁移外,项目中平时用到的软件都得迁,涉及到nginx,redis , active MQ
,jenkins
以及SVN。SVN的迁移涉及到了代码的同步,在网上搜了很多SVN迁移相关的文章,发现杂而乱,最终还是完成了测试环境的SVN迁移。迁移完成后,发现整个过程是非常清晰以及有序的,遂记之。
步骤:将SVN从一台服务器(源服务器)迁移到另一台服务器(新服务器)上,操作分为两步:
1 ) 按照源服务器的版本,在新服务器安装同样的版本的SVN;
2 ) 同步源服务器的SVN库到新服务器上;
SVN安装:(以1.6.11版本为例)
1 ) 下载 subversion-1.6.11.tar.bz2
subversion-deps-1.6.11.tar.bz2 这两个文件
wget
http://subversion.tigris.org/downloads/subversion-1.6.11.tar.bz2
wget
http://subversion.tigris.org/downloads/subversion-deps-1.6.11.tar.bz2
2) 解压
tar jxvf subversion-1.6.11.tar.bz2
tar jxvf subversion-deps-1.6.11.tar.bz2
解压完成后,会出现一个名为 subversion-1.6.11的文件夹 如下图:
3 ) 安装:( 分为三个操作 配置安装路径 编译 安装 )
进入到 subversion-1.6.11 这个目录下,( PS : 三个操作都在此目录下操作 )
配置安装路径: ./configure --prefix=/home/yst/svn (
/home/yst/svn 这个是指定安装到哪个目录 )
编译: make
安装: make install
( PS : 编译 和 安装 也可以 合并成一句命令 make && make install )
至此 新服务SVN服务的 安装已经完成了。这里再推荐下另外的方式( 需要 root权限 ):
1) 万能的 yum
yum install subversion
2 ) apt-get
apt-get install subversion
接下来,检查SVN 是否安装成功。
svn --version ( 出现version,表示安装成功 )
如果 svn 命令找不到的话:( 就用 svn命令的全路径去执行 svn命令在 安装目录(home/yst/svn)的
bin目录下 )
SVN的迁移: ( 建议迁移的时候,将所有源库SVN所有账号的权限改成只读,或者停掉SVN服务器 )
SVN的迁移有两种方式:
1) dump出源机器SVN的代码库,然后load到新服务器上去。
2) 使用 svnsync 直接同步源机器代码库。
比较这两种迁移的方式,我比较推荐第二种——使用svnsync进行迁移。第一种使用dump出源机器代码库,
dump完,看了一下dump文件,几十个G,太大了。两种操作的方式具体操作如下:
一、采用dump迁移SVN代码库:
1) dump 出源机器的SVN代码库: ( 依照SVN数据量的大小,时间可能会很长 )
svnadmin dump repos/ > 2414.dump (dum出文件)
repos/ 源机器上SVN代码库目录
2)使用 scp(secure copy)命令,将dump出来的文件传到 新机器上。
scp -r /home/svn-admin/repos
[email protected]:/home/yst/svn/svn-admin
scp -r 源机器SVN仓库目录 新机器用户名@新机器IP地址:传到新机器的指定目录
然后输入新机器 linux用户名的密码,就在传dump文件了。
3 ) 在 新机器上建立 仓库
svnadmin create /home/yst/svn/svn-admin/repos4
4) 将 dump 文件 load 进 新服务的仓库中:
/home/yst/svn/bin/svnadmin load
/home/yst/svn/svn-admin/repos4 < 2414.dump
将 2414.dump < ( 写入 ) 到 新服务器上刚刚新建的仓库中去。
5) 启动新机器的SVN服务:
svnserve -d -r repos4
6)查看 SVN服务是否 启动:
ps -ef | grep svn ( 如下图 )
PS : SVN服务的默认启动端口是 3690, 可以通过 svnserve --listen-port
8899 -d -r repos4(SVN仓库路径)指定端口启动。
二、使用 svnsync 迁移SVN代码库 ( 推荐使用这种方式 )
1)在新服务器上创建 代码仓库
svnadmin create /home/yst/svn/svn-admin/repos5
2)修改新建仓库中hooks 下的 名为 pre-revprop-change 的文件:
cp pre-revprop-change.tmpl pre-revprop-change
chmod 777 pre-revprop-change ( 给pre-revprop-change文件
赋执行权限 )
修改 pre-revprop-change 脚本最后一行 为 exit 0
3)svnsync init file:///home/yst/svn/svn-admin/repos5
svn://xx.xx.xx.xx ( 初始化 )
svnsync init file:// 新机器仓库目录路径 源服务器的IP(可以通过 http
协议,还可以通过svn协议)
(PS : 这块需要输入密码验证,新服务器的密码
源服务器SVN的账号密码,此账号应该有仓库所有代码的读取权限)
4) svnsync sync file:///home/yst/svn/svn-admin/repos5 ( 同步 )
5) 等待同步完成,启动SVN服务器即可。至此,SVN服务就已经迁移完了。
迁移完成之后,发现提交代码有问题,报错如下:
解决方式是: 将原仓库的 uuid 复制过来,覆盖新服务器上的UUID
参考链接:
SVN权限控制
https://blog.csdn.net/cuiyaoqiang/article/details/51784391
SVN sync同步:
http://blog.chinaunix.net/uid-25266990-id-2953695.html
SVN 实时同步:
http://blog.51cto.com/php2012web/1852311
https://blog.csdn.net/xyw591238/article/details/51914908
热门工具 换一换