subversion在实际项目研发中被大量的应用,但是往往在实际的环境中大多数的人还仅仅把SVN仅用于创建一个SVN库,当然在subversion也是支持一个SVN服务多个版本库的,最近刚刚好在做SVN的跨系统平台迁移工作,就此就简单的说一说SVN的跨平台系统迁移。

   首先需要说的的SVN无论是在哪个系统平台上,无非就2种,分别是VisualSVN和subversion,当然无论是使用哪种SVN的版本控制工具在实际上我们还是使用二者的二进制文件,无非是二者的二进制文件的使用参数不同而已。二者之间唯一的区别是VisualSVN多应用于Windows系统中,因为VisualSVN中已经封装相应https,所以在Windows下大家多用于VisualSVN以便于管理,而在Unix系统下,尤其是开源系统中则多用于subversion,则是因为开源系统中的镜像中都有相应的安装包,安装使用方便快捷,所以无论使用哪种本质上都是一样的,要注意的是在DOS系统中如果没有加环境变量,需要到二进制文件的目录下执行,且在DOS中二进制文件多为*.exe,所以SVN的版本导入及版本导出也很简单:

DOS:
svnadmin.exe dump D:\svndata\myrepos1 > D:\backup.dump
#从版本库中导出
svnadmin.exe load D:\svndata\myrepos1 < D:\backup.dump
#导入版本库
Unix:
svnadmin dump /data/svndata/myrepos1 > /data/backup/backup.dump
#从版本库中导出
svnadmin load /data/svndata/myrepos1 < /data/backup/backup.dump
#导入版本库

注意的一点,通常SVN导出的资源很大,二者的导出的版本库文件是可以通用的,但是在跨平台传输的时候建议使用ftp的非二进制模式进行传输,以免造成数据的丢失。

   SVN的多版本库其实和单版本库是一样无非是在创建版本库时多创建一个版本库,多个版本库可以使用不同的配置文件,如果是使用https就是在Apache下使用共同的密码文件,关于如何创建SVN的版本库以前有写过,在此就不做过多的篇幅来说明,需要可以参看:http://jim123.blog.51cto.com/4763600/1943305,在单SVN多版本库下其他区别中首先需要修改每个版本库的svnserve.conf配置文件,在配置文件中需要写上realm变量的路径写上在系统中实际路径,如:

…略…
realm=/data/svndata/myrepos1
…略…
-----------------------------------------
…略…
realm=/data/svndata/myrepos2
…略…

为便于管理建议把SVN的版本库建在同一个目录中,如:

svnadmin create /data/svndata/myrepos1
svnadmin create /data/svndata/myrepos2

最后在启动的时候只要启动最外一层目录就可以了:

svnserve -d -r /data/svndata

这样svn的2个URL就是

svn://IP/myrepos1
svn://IP/myrepos2