积土而为山,积水而为海

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

评论

还没有任何评论,你来说两句吧

发表评论

没有什么能够阻挡
你对自由的向往
天马行空的生涯
你的心了无牵挂
穿过幽暗的岁月
也曾感到彷徨
当你低头的瞬间
才发觉脚下的路
心中那自由的世界
如此的清澈高远
盛开着永不凋零…… -

黔ICP备15016215号 Copyright © 2015 - 2025 蓝莲花 All Rights Reserved.