SVN迁移
服务器环境:CentOS 7.5 64位
SVN安装:yum -y install subversion
SVN仓库建立:
[root@localhost /]# cd /home
[root@localhost home]# mkdir data
[root@localhost home]# cd data
[root@localhost data]# mkdir repos
[root@localhost data]# cd repos
[root@localhost repos]# mkdir link
[root@localhost repos]# cd link
[root@localhost link]# svnadmin create /home/data/repos/link
[root@localhost link]# ls link
conf db format hooks locks README.txt
SVN仓库目录:/home/data/repos/link
SVN 启动命令:
svnserve –daemon –pid-file=/run/svnserve/svnserve.pid -r /home/data/repos/link
注:记得配置云服务器的安全组,让SVN端口通过,实例里面添加对应云服务器。
安装好 svn 服务后,默认是没有随系统启动自动启动的, CentOS 7 的 /etc/rc.d/rc.local 是没有执行权限的, 系统建议创建 systemd service 启动服务
于是查看 systemd 里 svn 的配置文件 /lib/systemd/system/svnserve.service
[Unit]
Description=Subversion protocol daemon
After=syslog.target network.target
[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/svnserve
ExecStart=/usr/bin/svnserve –daemon –pid-file=/run/svnserve/svnserve.pid $OPTIONS
[Install]
WantedBy=multi-user.target
找到 svn 的 service 配置文件 /etc/sysconfig/svnserve 编辑配置文件
vi /etc/sysconfig/svnserve
将 OPTIONS=”-r /var/svn” 改为 svn 版本库存放的目录,:wq 保存退出
这里改为
OPTIONS=”-r /home/data/repos”
在提示符下输入
systemctl
enable
svnserve.service
重启服务器,输入
Centos 7.4上搭建SVN服务器
① 安装svn
#删除自带svn
yum -y remove subversion
#安装svn服务
yum -y install subversion mod_dav_svn
② 查看svn版本信息
svnserve –version
③ 创建svn存储库
#创建svn数据存储目录
mkdir -p /var/svn
④ 创建svn代码库
#切换至svn主目录
cd /var/svn
#创建代码库jenkins_repo
svnadmin create jenkins_repo
# 查看代码库目录信息
cd jenkins_repo && ll
⑤ 代码库目录/文件说明
目录/文件 |
说明 |
db目录 |
就是所有版本控制的数据存放文件。 |
hooks目录 |
放置hook脚本文件的目录。 |
locks目录 |
用来放置subversion艰苦锁定数据的目录,用来追踪存取文件库的客户端。 |
format文件 |
是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号。 |
conf目录 |
是这个仓库的配置文件(仓库的用户访问账号、权限等) |
⑥ 开启jenkins_repo档案库权限信息
#切换目录
cd /var/svn/jenkins_repo/conf
vim svnserve.conf
#匿名用户可读
anon-access = read
#授权用户可写
auth-access = write
#使用哪个文件作为账号文件
password-db = passwd
#使用哪个文件作为权限文件
authz-db = authz
# 认证空间名,版本库所在目录
realm = /var/svn
⑦ 添加新用户hf_svn
#切换目录
cd /var/svn/jenkins_repo/conf
#编辑账号文件
vim passwd
#添加用户
hf_svn=123456
⑧ 编辑hf_svn用户权限
#切换目录
cd /var/svn/jenkins_repo/conf
#编辑权限文件
vi authz
#设置用户权限
[/]
hf_svn=rw
*=
⑨ 启动svn服务
#启动svn服务
svnserve -d -r /var/svn
⑩ 测试连接
#链接命令
svn://IP/代码库名称
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 yst@10.213.34.88:/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
发表评论