<p>首先,VisualSVN Server Manager,包含两个路径,一个是安装路径,例如本机:C:\Program Files\VisualSVN Server,一个是库路径,例如本机:C:\Repositories,其中,Repositories中包括各项目文件及项目信息文件,重要的项目信息文件有authz和htpasswd,authz是目录访问权限控制文件,htpasswd是VisualSVN Server Manager用户和密码记录文件现,对VisualSVN Server Manager进行迁移,方法如下:</p><p>例如:</p><p>原服务器A,VisualSVN Server Manager</p><p>现服务器B,VisualSVN Server Manager</p><p>步骤:</p><p>1。拷贝A上Repositories文件夹到B上</p><p>2。打开B上VisualSVN Server Manager</p><p>3。右击Repositories,所有任务中选择import existing repository</p><p>4.选择步骤1中的项目文件夹进行导入,直到所有项目导入完成</p><p>5。替换authz和htpasswd文件,使得服务器B上VisualSVN Server Manager中的用户及用户权限跟之前的一致</p><p>第一次迁移时,没有找到用户和用户权限的文件,然后一个个添加用户和分配权限,浪费了不少时间,后来,服务器再次更改,被迫进行第二次迁移,此时,不想再一个个添加用户和分配权限,也觉得不可能没有其他办法的,于是,先查看并记录了所有文件的大小,然后添加用户,查看哪个文件发现了变化,后来得知authz和htpasswd文件的作用,呵呵</p><p>VisualSVN Server仓库迁移到Linux(包含所有版本, 权限,用户信息)</p><p>Windows服务器深度中毒,从Windows换成CentOS,所以要把原服务都转移到Linux下,SVN的转移却遇到了些问题,花费了三天时间,走了不少弯路,现在总算解决了SVN迁移问题,记录下:</p><p>在Windows上我们是用VisualSVN Server作SVN服务的,Linux上是编译安装的subversion 1.7.7。</p><p>Windows 的SVN仓库在E:\SVNRepositories,Linux在 /data/svnrepos</p><p>第1步,导出VisualSVN仓库:svnadmin dump E:\SVNRepositories\repo1 E:\repo1.dump</p><p>第2步,在Linux端create相同名称的仓库: svnadmin create /data/svnrepos/repo1</p><p>第3步,在Linux端load Windows导出的库:</p><p> cd /data/svnrepos</p><p> svnadmin load repo1 < repo1.dump</p><p>到此为止,repo1库就导入到Linux的subversion中了,但是用户信息、权限信息还没导入(这也是我折腾很久的问题),继续:</p><p>第4步,把E:\SVNRepositories\authz 上传到 /data/svnrepos</p><p> 把E:\SVNRepositories\htpasswd 复制为 passwd 并修改后上传到 /data/svnrepos</p><p> 修改后的passwd格式如下(其实就是用户名 = 密码):</p><p> [users]</p><p> user1 = 123</p><p> user2 = 456</p><p>第5步,修改仓库的/conf/svnserve.conf,使它指向第4步上传的那两个文件:</p><p> [general]</p><p> anon-access = none</p><p> auth-access = write</p><p> password-db = ../../passwd</p><p> authz-db = ../../authz</p><p>到这里就完成了,用命令 svnserve -d -r /data/svnrepos/ 启动subversion服务。</p><p>这样做还有个问题是passwd文件原密码信息全丢失了,由于windows下使用的apache的密码文件,密码使用的MD5加密的,而在Linux下svn的passwd文件的密码是明文形式保存的。所以原来的MD5密码将不可使用。</p><p>我只用了repo1这个仓库,如果有多个仓库一样步骤,分别导出导入,并修改仓库的/conf/svnserve.conf</p><p>如果按照上述方法操作还是不行,启动svnserve时用 --log-file ./log.txt参数查看错误信息</p>