Chinaunix首页 | 论坛 | 博客
  • 博客访问: 809000
  • 博文数量: 489
  • 博客积分: 475
  • 博客等级: 下士
  • 技术积分: 3087
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 16:28
文章分类

全部博文(489)

文章存档

2013年(7)

2012年(301)

2011年(181)

分类:

2012-01-12 13:39:19

原文地址:SVN版本库的迁移 作者:sure365

Jacky Xu @ 2010.7.13
 
    刚开始在SVN上建立项目时,把工程代码导入到了版本库的根目录,没有放在trunk里,当时没有多想这个问题。现在项目分支越来越多了,发现没有tag或者branch,真是非常麻烦,所以得想办法把已经使用了近两个月的版本库移动到trunk里。
    首先尝试使用svn客户端的move或者copy命令,发现它不能完全把已有的log拷贝过来,并且增加了额外的版本记录,达不到一个正常使用的版本库的效果。然后,尝试在svn服务器,使用svnadmin的相关命令完成了整个版本库的移动,具体操作如下:
 
1.将需要移动的版本库完整地导出为一个单独文件
命令:svnadmin dump local_old_repositories_path > dumpfile_path
    导出来的文件是二进制格式,一般的非二进制处理方式的文档编辑器打开、保存后,会破坏格式,导致后续导入时某些提交校验出错。如果仅是完整移动版本库,则不需要编辑dump文件,直接在后面load导入即可。但是想修改其中的字段,建议使用WinHex以16进制方式编辑。根据我现在的需求,需要把dump文件里的路径信息都改成trunk/下,直接用替换的方式修改"Node-path: "部分。
 
2.重新创建一个新的版本库
命令:svnadmin create new_repositories_path
    创建时,如果dump文件里已经有创建branch、tag、trunk文件夹动作,那这次就不需要重复创建,否则导入时会冲突。
 
3.将之前的dump文件导入到新的版本库
命令:svnadmin load new_repositories_path < dumpfile_path
    如果dump文件没有问题,那导入会非常顺利。在我们之前的版本库中,有几次删除添加的提交动作,不是以相对路径提交的,load时报路径出错。再次修改dump文件,把涉及到绝对路径的地方,修改成trunk目录下,即可解决该错误。
 
4.其他操作
命令:svndumpfilter
    该命令用于过滤dump文件中的某些文件夹,以得到所需要的工程文件。在我们当前版本库中还不需要这个操作。
 
    经以上操作,已将旧版本库导入到trunk目录下。经对比验证,新库跟旧版本库工程内容完全一致,操作成功!
 
-----------------------------------
  Jacky_Xu @ 2010.7.13
  MSN: 

  E-mail: 
-----------------------------------
阅读(413) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~