将subversion存储库还原到workcopy修订版

时间:2010-06-07 03:24:06

标签: svn version-control

我的subversion VM在前几天死亡(主机硬件已熔化),我不得不恢复vmware服务器映像的备份副本。恢复进行得很顺利,VM又在新主机上运行。

我遇到的问题是我恢复的存储库是修订版60,但我的PC上的工作副本是66.当我尝试提交我的工作副本时,我收到以下错误消息。

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

强制进行此提交并将subversion升级到与我的工作副本相同的修订版的最佳方法是什么?

3 个答案:

答案 0 :(得分:13)

我不认为您的旧工作副本可以“教导”新SVN服务器有关缺失的修订版本(61-66)。

我建议:

  1. 查看新的工作副本
  2. SVN将旧的工作副本导出到新的工作副本,从而使用您的更改更新文件
  3. SVN提交更改
  4. 此时新的SVN服务器将是最新的。

答案 1 :(得分:2)

从已恢复的存储库中执行新的结帐。将更改从现有工作副本复制到新的签出,然后提交。

您不想复制.svn目录。像rsync这样的工具可以帮助同步到两个目录。

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

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

答案 2 :(得分:0)

如果没有备份,这种方法比用于使结帐备份和运行的可接受方法快得多。此外,rsync不是Windows操作系统的原生。

  1. (可选)创建“已损坏”的备份副本。结帐。
  2. 删除损坏的SVN结帐的顶层的.svn文件夹
  3. 在破收的结账时运行SVN Checkout。
  4. (可选)SVN提交更改
  5. 使用SQLLite读取SVN .db文件并手动更新修订版号可能是另一种解决方案。

    参考:How can I create SVN versioning on top of an existing project?