首页 > 代码库 > 将svn的项目从一台服务器转移到另外一台服务器
将svn的项目从一台服务器转移到另外一台服务器
前几天在做一个项目的时候,因为需要,需要将Server A 上SVN仓库 repos1中的项目pro1迁移到Server B 上的SVN仓库中,首先想到的是:通过复制,但是仔细一想,这样是不可能的;然后想到的是先把项目pro1 checkout到本地,然后再 将本地的项目 import 到 ServerB的svn仓库中,但这样一来,ServerB上的SVN仓库中 就好比完全是一个新的pro1项目了,也就失去了svn管理的意义了。下面有一种方法可以解决:
(在进行下面的操作时,请注意备份仓库数据,以免操作出错,损坏数据;同时保证需要迁移的项目,都已经commit,以免丢失修改)
1.首先关闭两台服务器的svn所有服务,比如(apache、svn),(以避免在进行迁移时又有其他的用户访问提交,更新什么的...
关闭svn
killall svnserve
2.将ServerA上的 项目pro1所在的仓库进行备份,使用命令:
svnadmin dump oldrepos > reposdumpfile
如:svnadmin dump javaweb > javaweb2
上面的 oldrepos 表示服务器Server1上需要备份的仓库,如:E:\svn_root\repos1;
reposdumpfile表示一个中转的文件,文件名随意;
运行完上面的命名后,文件reposdumpfile就存储了仓库oldrepos的信息和所有项目;
3.如果需要将Server A上repos1中的所有项目迁移到Server2上,则将reposdumpfile文件直接拷贝到Server2上,然后转到 步骤5;
【可用一个软件直接拷贝到本地,然后用软件拷贝到新的服务器上】
4.如果我们只需要repos1仓库中的pro1则我们需还要对reposdumpfile文件进行过滤,命令如下:
svndumpfilter include pro1 < reposdumpfile< pro1dumpfile
上面的 include 表示 包含的意思,也就是说,将reposdumpfile中的 pro1 的项目取来放到文件 pro1dumpfile 中;如果使用 exclude 这表示相反的意思,将不是项目pro1的项目存放到文件中去;然后将pro1dumpfile文件拷贝到Server2上;
5.在Server2上运行如下命令,则完成了项目的迁移;
svnadmin load newrepos < pro1dumpfile
如:svnadmin load javaweb < javaweb2
上面的newrepos表示:Server2电脑上的 svn仓库的路径 如:F:\svn_root\repos2;
6.最后打开svn服务,这样就成功的将项目迁移到了其他仓库中
如:svnserve -d -r /opt/svndata启动
-------------------------------------------------------
亲测成功