说明:本次迁移是将svn从windows平台迁移到linux平台。windows使用的是visualSvn,linux使用的是svnserv。目标是能够保留现有的仓库、用户、权限,并且让客户端最小化的更改配置。本次要迁移的仓库位于D:\repo\first,目标是/data/svn/first。默认linux上已经装好svnserv,没装好的先把软件安装好。
方案:通过svnadmin内置的dump工具导出所有数据。linux平台直接导入对应的仓库,修改对应的配置文件使得svnserv能够正常提供服务。网关机做端口转发使得外网可以访问到仓库。
操作流程:
①:在windows上命令行模式下通过svnadmin命令导出仓库
svnadmin dump D:\repo\first -F D:repofirst.dump
②:使用linux上rz命令将导出的文件传输到linux系统
rz -be
然后选择对应文件
如果提示 command not found 表示没有安装lrzsz工具,使用下面命令进行安装。
yum install -y lrzsz
③:创建与windows端名称相同的仓库
svnadmin create /data/svn/first
④:导入仓库
切换到与新建的仓库同级目录,执行load命令
cd /data/svn
svnadmin load first < /data/repofirst.dump
⑤:导入用户和用户组信息
D:\repo\htpasswd //用户账号和密码
D:\repo\first\conf\VisualSVN-SvnAuthz.ini //仓库目录的权限信息
D:\repo\groups.conf //用户组
用户迁移
将 D:\repo\htpasswd 内容 拷贝到 /data/svn/first/conf/passwd中,问题是windows中的密码是加密的,这个就没办法只能重置了。
用户组迁移
将 D:\repo\groups.conf 内容拷贝到/data/svn/first/conf/authz对应的【groups】下。
仓库目录权限迁移
将 D:\repo\first\conf\VisualSVN-SvnAuthz.ini 内容拷贝到/data/svn/first/conf/authz用户组内容后面。
⑥:修改配置文件并重启服务
vim /data/svn/first/conf/svnserve.conf
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
force-username-case = none
保存文件并重启
svnserve -d -r /data/svn/
⑦:测试使用
cd /data
svn co svn://127.0.0.1/first/dir1 --username=lee --password==lee
一般情况下是能够正常使用了,如果出现svn: E170001: Authorization failed请核对下目录有没有错误。svn的权限是根据目录来分配的,然后去找找看配置文件有没有把权限正确配置。还不行的话就检查下配置项前面是不是有空格。