郎行天下

要么就别做,要做就做好。

VisualSVN Server迁移到Linux系统

VisualSVN Server 仓库迁移到 Linux,包含所有版本, 权限,用户信息。

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

安装 svn 服务器:

sudo apt-get install subversion

第一步,导出 VisualSVN 仓库:

svnadmin dump E:\SVNRepositories\repo1 E:\repo1.dump

注意:在执行该命令之前,先确定 dump 是否安装,如果没有安装,则安装命令:

sudo apt-get install dump

注意:repo1 目录,是一个含有 format 文件的目录,也就是一个 a Subversion repository,如果有多个repository,就压缩多个。

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

svnadmin create /data/svnrepos/repo1

注意:执行该命令,在文件目录下的效果就是一个 repository,并创建相应的文件。

第三步,在 Linux 端 load Windows 导出的库:

cd /data/svnrepos

svnadmin load repo1 < repo1.dump

到此为止,repo1 库就导入到 Linux 的 subversion 中了,但是用户信息、权限信息还没导入。

第四步,把 E:\SVNRepositories\authz 上传到 /data/svnrepos,把 E:\SVNRepositories\htpasswd 复制为 passwd 并修改后上传到 /data/svnrepos,修改后的 passwd 格式如下(其实就是用户名 = 密码):
[users]

user1 = 123

user2 = 456

第五步,修改仓库的 /conf/svnserve.conf,使它指向第四步上传的那两个文件:
[general]

anon-access = none

auth-access = write

password-db = ../../passwd

authz-db = ../../authz

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

这样做还有个问题是 passwd 文件原密码信息全丢失了,由于 windows 下使用的 apache 的密码文件,密码使用的 MD5 加密的,而在 Linux 下 svn 的 passwd 文件的密码是明文形式保存的。所以原来的 MD5 密码将不可使用。

我只用了 repo1 这个仓库,如果有多个仓库一样步骤,分别导出导入,并修改仓库的 /conf/svnserve.conf 如果按照上述方法操作还是不行,启动 svnserve 时用 --log-file ./log.txt 参数查看错误信息。

测试:在浏览器里打开:127.0.0.1:3690,如果出现:
( success ( 2 2 ( ) ( edit-pipeline svndiff1 absent-entries commit-revprops depth log-revprops atomic-revprops partial-replay inherited-props ephemeral-txnprops file-revs-reverse ) ) )

说明服务开启成功!

 

评论

©郎行天下 | Powered by LOFTER