前几天我的Subversion虚拟机死了(主机硬件损坏),我不得不恢复备份的VMware服务器镜像。恢复进行得很顺利,虚拟机已经在新主机上重新运行。
问题是,我的恢复后的代码库版本号是60,但是我PC上的工作副本却是66。当我尝试提交工作副本时,我收到以下错误信息:
svn: Commit failed (details follow):
svn: No such revision 61
什么是强制提交的最佳方法,并使subversion与我的工作副本处于相同的版本?
前几天我的Subversion虚拟机死了(主机硬件损坏),我不得不恢复备份的VMware服务器镜像。恢复进行得很顺利,虚拟机已经在新主机上重新运行。
问题是,我的恢复后的代码库版本号是60,但是我PC上的工作副本却是66。当我尝试提交工作副本时,我收到以下错误信息:
svn: Commit failed (details follow):
svn: No such revision 61
我认为你的旧工作副本无法向新的SVN服务器“教”有关缺失修订版本(61-66)的信息。
我建议:
这样一来,新的SVN服务器就会是最新的状态。
从已恢复的代码库中进行全新的检出。将现有工作副本中的更改复制到新的检出目录中,然后提交更改。
请勿复制 .svn 目录。rsync 等工具可用于同步两个目录。
rsync --del --exclude=".svn"
如果有很多不同的文件,如新文件和已删除的文件,svn_load_dirs.pl 可能会有所帮助。
如果没有备份,这种方法比恢复检出的接受方法快得多。此外,rsync不是Windows操作系统的本地工具。
另一种解决方案可能是使用SQLLite读取SVN .db文件并手动更新修订号。