从过时的Subversion版本库备份中恢复

时间:2020-03-05 18:51:26  来源:igfitidea点击:

我前一段时间遇到了一个问题,但我从来没有找到解决该问题的好方法。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

假设我们有一个从7500修订版的Subversion签出的工作副本,并且保存当前存储库的磁盘消失了。我们已经拥有版本7450的存储库备份。还原存储库备份很容易,但是任何尝试对其使用工作副本的尝试都会出现错误,指出版本7500在存储库中不存在。

检入一个巨大修订以使存储库中的内容与工作副本的内容匹配并使他的工作副本回到功能状态的最佳方法是什么?

(理想情况下,我想比需要签出一个全新的工作副本然后再手动复制所有文件更容易的事情,我认为在使用工作副本进行配置管理服务器时,因此不得不这样做确实是一件很痛苦的事情。查看干净的工作副本)

解决方案

回答

在另一个文件夹中进行全新签出,然后使用diff程序创建补丁。将补丁应用到新的工作副本。

回答

我们可以在某处检出rev.7450副本,然后导出7500副本(以删除.svn文件夹)。将导出的副本(这是最新的副本)拖到7450副本上。所有新文件都应仅覆盖旧文件,而.svn文件夹保持不变。

Subversion将假设我们刚刚对7450进行了许多更改,并且下一次签入会将其设置为7451.

回答

如果我们确定目录中有最新版本,请执行以下操作:

  • 从存储库中删除项目
  • 从副本中删除SVN参考
  • 将代码作为新副本签入。
  • 签出我们刚刚签入的代码

回答

我们可以通过在转储文件中加载一堆空修订来填充缺少的修订号。在"如何更改存储库的修订版号"中有讨论如何执行此操作的答案。以这种方式加载除一个修订版以外的所有修订版,然后我们只需在上一个大型修订版中签入所有更改即可。