结论
迁移前后,svn仓库id不变
过程
旧代码库备份
- 创建一个svn仓库
svnadmin create D:\Repositories\testSvnRepo
- 检出目录
svn checkout 【svn服务路径】 【本地目录全路径】
- 在检出的目录,查看这个svn仓库的信息(主要查看svn的uuid)
svn info
这里代码块的id为lqqsgdsb-1234-1a3e-96ca-d0117d906e9b
- 备份这个svn仓库
svnadmin dump D:\Repositories\testSvnRepo>D:\svn_bak.dump
新代码库导入
- 创建一个svn仓库
svnadmin create D:\Repositories\testSvnRepoNew
- 检出目录
svn checkout 【svn服务路径】 【本地目录全路径】
- 在检出的目录,查看这个svn仓库的信息(主要查看svn的guid)
svn info
这里代码块的id为zzszzs94-e8e5-2547-9f39-960117efc803
- 加载svn备份文件
svnadmin load D:\Repositories\testSvnRepoNew < D:\svn_bak.dump
- 再次查看svn代码库的id svn info
这里代码块的id仍为zzszzs94-e8e5-2547-9f39-960117efc803
- 到检出目录执行更新文件目录,发现uuid报错
- 使用svn命令查看代码库uuid svnlook uuid testSvnRepoNew
这里代码块的id为lqqsgdsb-1234-1a3e-96ca-d0117d906e9b
结论
综上所述, svnadmin load 备份文件时,代码库的uuid已修改为旧代码库的uuid,但是本地检出目录的svn信息仍为旧的,所以,无法执行svn update
本地检出目录解决方法
删掉原目录,重新检出
拓展
判断两个svn代码库的关系
目的:判断两个url的svn代码库的关系
方法:修改前校验svn信息,同时对比路径下文件差异
- uuid不一致或相对路径不一致 => 提示“修改代码库svn地址失败,新旧代码库信息不一致”
- 旧代码库版本号比新代码库版本号新 => 提示“修改代码库svn地址失败,新旧代码库版本不一致或新代码库版本落后”
- 旧代码库版本号和新代码库一致,但是最后提交人信息不一致 => 提示“修改代码库svn地址失败,新旧代码库版本不一致或新代码库版本落后”
- 对比文件差异 =>提示“修改代码库svn地址失败,新旧代码库存在文件差异”
对比svn代码库迁移前后信息是否一致
迁移前后,代码库信息一致,主要对比以下信息
- Repository UUID 保证代码库一致性
- Relative URL 相对代码库根路径的url
- Revision 整个Repository的最新revision
- Last Changed Rev 最后提交的版本号
- Last Changed Date 当前Path最后一次更改的revision