将一个Subversion仓库恢复到工作副本版本

5

前几天我的Subversion虚拟机死了(主机硬件损坏),我不得不恢复备份的VMware服务器镜像。恢复进行得很顺利,虚拟机已经在新主机上重新运行。

问题是,我的恢复后的代码库版本号是60,但是我PC上的工作副本却是66。当我尝试提交工作副本时,我收到以下错误信息:

svn: Commit failed (details follow):
svn: No such revision 61

什么是强制提交的最佳方法,并使subversion与我的工作副本处于相同的版本?
3个回答

13

我认为你的旧工作副本无法向新的SVN服务器“教”有关缺失修订版本(61-66)的信息。

我建议:

  1. 检出新的工作副本
  2. 将旧工作副本用SVN EXPORT导入新工作副本,以此更新文件并应用你的更改
  3. 提交变更

这样一来,新的SVN服务器就会是最新的状态。


2

从已恢复的代码库中进行全新的检出。将现有工作副本中的更改复制到新的检出目录中,然后提交更改。

请勿复制 .svn 目录。rsync 等工具可用于同步两个目录。

rsync --del --exclude=".svn"

如果有很多不同的文件,如新文件和已删除的文件,svn_load_dirs.pl 可能会有所帮助。


0

如果没有备份,这种方法比恢复检出的接受方法快得多。此外,rsync不是Windows操作系统的本地工具。

  1. (可选) 创建“损坏”的检出的备份副本。
  2. 删除损坏的SVN检出顶层的 .svn 文件夹
  3. 在损坏的检出上运行 SVN Checkout。
  4. (可选) SVN COMMIT 更改

另一种解决方案可能是使用SQLLite读取SVN .db文件并手动更新修订号。

参考:如何在现有项目之上创建SVN版本控制?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接