通用技术 windows 下 svn 多版本库迁移至 linux

周小丽 · 2021年03月16日 · 1899 次阅读

多版本仓库建立

在指定目录建立仓库保存总目录,本文示例目录设定为:/usr/local/svn/svnrepos
mkdir -p /usr/local/svn/svnrepos
2、在总目录中创建两个仓库的文件夹,以及使用命令创建版本库
mkdir -p /usr/local/svn/svnrepos/warehouse1
mkdir -p /usr/local/svn/svnrepos/warehouse2
svnadmin create /usr/local/svn/svnrepos/warehouse1
svnadmin create /usr/local/svn/svnrepos/warehouse2
3、进入 warehouse1 目录下的 conf 文件夹。将其中的 authz 与 passwd 文件复制到 svnrepos 目录下
cd /usr/local/svn/svnrepos/warehouse1/conf
cp authz ../../
cp passwd ../../
4、修改 warehouse1/conf 下的 svnserve.conf 文件,将其中的 passwd 文件制定与 authz 文件制定进行修改,其他配置按正常单 svn 配置。(warehouse2 同样设置一遍)

5、修改复制出来的/svnrepos 目录下的 passwd 文件与 authz 文件
passwd 文件:设置账号密码

authz 文件

6、启动 svn 服务
svnserve -d -r /usr/local/svn/svnrepos (这里目录配到总目录,不是仓库目录)
ps -ef|grep svnserve (查看服务端口号)

数据迁移

在 Windows 上我们是用 VisualSVN Server 作 SVN 服务的,Linux 上是编译安装的 subversion 1.7.7。
Windows 的 SVN 仓库在 E:\SVNRepositories,Linux 在 /data/svnrepos

第 1 步,导出 VisualSVN 仓库:svnadmin dump E:\SVNRepositories\repo1 E:\repo1.dump

第 2 步,在 Linux 端 create 相同名称的仓库

第 3 步,在 Linux 端 load Windows 导出的库:
            cd /data/svnrepos
            svnadmin load repo1 < repo1.dump

到此为止,repo1 库就导入到 Linux 的 subversion 中了,但是用户信息、权限信息还没导入(这也是我折腾很久的问题),继续:

第 4 步,把 E:\SVNRepositories\authz 上传到 /data/svnrepos
            把 E:\SVNRepositories\htpasswd 复制为 passwd 并修改后上传到 /data/svnrepos
            修改后的 passwd 格式如下 (其实就是用户名 = 密码):【由于 windows 的用户密码是 mdb 加密方式,需要更改下】
             [users]
             user1 = 123
             user2 = 456

第 5 步,修改仓库的/conf/svnserve.conf,使它指向第 4 步上传的那两个文件:
            [general]
            anon-access = none
            auth-access = write
            password-db = ../../passwd
            authz-db = ../../authz

到这里就完成了,用命令  svnserve -d -r  /data/svnrepos/ 启动 subversion 服务。

增量迁移

有时因版本库数据量大,版本较多时,迁入会报错(svnadmin: E200003: 转存流中内容数据过早结束),因此采用增量迁移方式

①查看当前旧版本库最新的版本号是多少
在命令提示符窗口,打开库所在目录
执行 svnlook youngest F:\Repositories\研发中心
 
例如返回版本为 36000 
②分批增量导出版本库内容
svnadmin dump F:\Repositories\研发中心 -r 0:12000 > F:\repo1.dump
导出第一个文件,版本号从 0 到 12000 的修订版本
 
svnadmin dump F:\Repositories\研发中心 -r 12001:24000 --incremental > F:\repo2.dump
导出第二个文件,版本号从 12001 到 24000 的修订版本
 
svnadmin dump F:\Repositories\研发中心 -r 24001:36000 --incremental > F:\repo3.dump
 
 
注:三个命令中第 2,3 个命令多了一个--incremental 的参数,使其采用了增量的方式导出,
 
③分批导入版本库文件
 
注:打开要导入的版本库所在目录,例如 cd E:\Repositories。
 
首先导入 dumpfile1,然后是 dumpfile2,dumpfile3
依次执行
E:\Repositories\svnadmin load newRepository < dumpfile1
 
E:\Repositories\svnadmin load newRepository < dumpfile2
 
E:\Repositories\svnadmin load newRepository < dumpfile3
 
可能会出现的问题,提示错误:版本库文件已经存在。请确认前边导出时,是否使用了--incremental 参数。
 
说明:这里我们是在命令提示符窗口下进行的。同样的,我们也可以按照方案 1,采用写批处理文件的方式。
 

注:要根据自己的 svn 安装目录,和库目录写命令,例如:
C:\Program Files\VisualSVN Server\bin\svnadmin load D:\Repositories\newRepository < E:\dumpfile1

再记录下禅道迁移的方法

windows 迁移到 linux( xampp 迁移到 zbox)

  1. 新的服务器,安装相同版本的一键安装包,确认可以正常访问:http://服务器 ip:端口/zentao/;停止服务
  2. /xampp/zentao/www/data/upload/1/ 目录下内容拷贝到 /opt/zbox/app/zentao/www/data/upload/1【附件】
  3. /xampp/mysql/data/zentao/ 目录下文件拷贝到 /opt/zbox/data/mysql/zentao/ 下面【数据库物理文件】需要停止服务迁移

    /opt/zbox/zbox stop
    /opt/zbox/zbox -mp 3307
    /opt/zbox/zbox -ap 82
    /opt/zbox/zbox start
    端口号,根据需要变更(mp 是 mysql 端口; ap 是 apache 端口)
    4、配置开机自动重启禅道服务
    把/opt/zbox/zbox restart 命令添加到/etc/rc.d/rc.local 中去

windows 迁移到 windows(xampp 迁移)

  1. 集成面板左上角,服务,卸载服务,退出面板;xampp 重命名为 xampp_bak
  2. 安装相同版本的一键安装包,确认可以正常访问:http://服务器 ip:端口/zentao/ ;停止服务
  3. /xampp_bak/zentao/www/data/upload/1/ 目录下内容拷贝到 /xampp/zentao/www/data/upload/1【附件】
  4. /xampp_bak/mysql/data/zentao/ 目录下文件拷贝到 /xampp/mysql/data/zentao/ 下面【数据库物理文件】
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册