在指定目录建立仓库保存总目录,本文示例目录设定为:/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)
/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 迁移)