是否有可能通过反向合并恢复某些SVN修订版?

时间:2014-08-05 11:20:49

标签: svn tortoisesvn visualsvn-server

我的PC上安装了TortoiseSVN 1.8.7 + VisualSVN Server 2.7.7(Windows Server 2012)。最近我的同事在他尝试更新时告诉我," XML响应包含无效的XML"对话框列出了几个更新的文件后出现错误。当他再次更新时,工作副本被锁定并需要清理。

我使用与我的同事相同的存储库,但我可以毫无问题地更新和提交。

经过调查,我在事件查看器中发现了磁盘错误,当我打开日志时,我看不到早于6291的日志。我试图打开文件" project \ db \ rev \ 6290" ,10~15秒后,内容为空,事件查看器中出现更多磁盘错误。我将带有robocopy的所有文件复制到另一个磁盘,只有上面的文件失败。

我认为这些修订文件就像是差异文件,所以也许我可以使用工作副本(目前是r6295)和项目\ db \ 6291~6295到"反向合并"到6290?有可能吗?

4 个答案:

答案 0 :(得分:3)

反向合并在这里没有帮助。

首先,确定您的同事得到的错误的根本原因是有意义的。你说你没有得到错误,所以它给我们带来了以下问题:

  • 他的工作副本是否已损坏?对工作副本运行svn cleanup并查看错误是否仍然存在。尝试用干净的工作副本再现错误也是有意义的,例如运行svn checkout并查看是否收到错误。

  • 存储库是否已损坏?对存储库运行svnadmin verify -q并检查其输出。我想在您的情况下,存储库是健康的,但如果不是,那么最简单的解决方案是从备份中恢复存储库。

答案 1 :(得分:3)

在我公司的笔记本电脑上运行Kapersky Endpoint Security 10.0时,我在一分钟左右的时间内反复遇到这个错误,开始检查大型源分支。

暂时禁用Kapersky保护为我解决了这个问题。

答案 2 :(得分:0)

文件\ db \ revprops \ 6290仍然完好无损,所以我可以看到我输入的日志。它提醒我在该版本中只修改了1个文件。

所以我执行了以下步骤:

  1. 将修订版6290~6295的文件从\ db \ revprops和\ db \ revs移动到另一个位置进行备份。
  2. 修改\ current并将最新修订设为6289。
  3. 再次修改最初在r6290中修改过的文件并提交,因此\ db \ revprops和\ db \ revs中都会有新文件6290。
  4. 将步骤1中备份的文件移回\ db \ revprops和\ db \ revs。文件\ db \ revprops \ 6290将被覆盖,因此原始提交日期也将被恢复。
  5. 修改\ current并将最新版本设置回6295。
  6. 现在我的同事可以正常更新,如果我使用Repository Explorer并输入VisualSVN Server的URL(以https开头),我可以看到所有修订日志。

    我在工作副本中看不到早于6291的日志。所以我检查了另一个目录并替换了.svn目录。它仍然只在开始时显示r6291~6295。但是几分钟后我再次尝试时显示正常。看起来旧的数据被缓存在某个地方。

    所以它已经解决了。但是这些步骤仅在您记住在破坏的修订中修改的内容时才有用。

答案 3 :(得分:0)

我刚刚遇到这个问题,我设法解决了这个问题。 让我分享一下我的所作所为。

1)选择您的Workspace文件夹,然后右键单击选择 TortoiseSVN>>Settings

2)在设置窗口中选择Log Caching >> Cached Repositories

3)确保你的svn目录是正确的。最重要的是您只需要点击您的存储库URL并点击更新按钮即可完成直接清理您的工作区,方法是右键单击TortoiseSVN>>CleanUp

一切顺利......