结论

迁移前后,svn仓库id不变

过程

旧代码库备份

  1. 创建一个svn仓库 svnadmin create D:\Repositories\testSvnRepo
  2. 检出目录 svn checkout 【svn服务路径】 【本地目录全路径】
  3. 在检出的目录,查看这个svn仓库的信息(主要查看svn的uuid)svn info

这里代码块的id为lqqsgdsb-1234-1a3e-96ca-d0117d906e9b

  1. 备份这个svn仓库 svnadmin dump D:\Repositories\testSvnRepo>D:\svn_bak.dump

新代码库导入

  1. 创建一个svn仓库 svnadmin create D:\Repositories\testSvnRepoNew
  2. 检出目录 svn checkout 【svn服务路径】 【本地目录全路径】
  3. 在检出的目录,查看这个svn仓库的信息(主要查看svn的guid)svn info

这里代码块的id为zzszzs94-e8e5-2547-9f39-960117efc803

  1. 加载svn备份文件 svnadmin load D:\Repositories\testSvnRepoNew < D:\svn_bak.dump
  2. 再次查看svn代码库的id svn info

这里代码块的id仍为zzszzs94-e8e5-2547-9f39-960117efc803

  1. 到检出目录执行更新文件目录,发现uuid报错
  2. 使用svn命令查看代码库uuid svnlook uuid testSvnRepoNew

这里代码块的id为lqqsgdsb-1234-1a3e-96ca-d0117d906e9b

结论

综上所述, svnadmin load 备份文件时,代码库的uuid已修改为旧代码库的uuid,但是本地检出目录的svn信息仍为旧的,所以,无法执行svn update

本地检出目录解决方法

删掉原目录,重新检出

拓展

判断两个svn代码库的关系

目的:判断两个url的svn代码库的关系
方法:修改前校验svn信息,同时对比路径下文件差异

  1. uuid不一致或相对路径不一致 => 提示“修改代码库svn地址失败,新旧代码库信息不一致”
  2. 旧代码库版本号比新代码库版本号新 => 提示“修改代码库svn地址失败,新旧代码库版本不一致或新代码库版本落后”
  3. 旧代码库版本号和新代码库一致,但是最后提交人信息不一致 => 提示“修改代码库svn地址失败,新旧代码库版本不一致或新代码库版本落后”
  4. 对比文件差异 =>提示“修改代码库svn地址失败,新旧代码库存在文件差异”

对比svn代码库迁移前后信息是否一致

迁移前后,代码库信息一致,主要对比以下信息

  1. Repository UUID 保证代码库一致性
  2. Relative URL 相对代码库根路径的url
  3. Revision 整个Repository的最新revision
  4. Last Changed Rev 最后提交的版本号
  5. Last Changed Date 当前Path最后一次更改的revision