加载的svn存储库缺少最后几个修订版 - 我该如何解决这个问题?

时间:2010-01-12 20:10:12

标签: svn svnadmin

我转储了我的存储库

svnadmin dump repos > repos.dump

然后我把它加载到新机器上

svnadmin load newrepos < repos.dump

完成后,新的存储库缺少最后几百次修订。

我可以检查repos.dump以查看它是否缺少修订版?我可以转储缺少的修订并将它们加载到新的存储库中吗?或者,我是否必须从头开始。

从头开始会很痛苦,因为存储库是3GB,我必须以适度低的速度在Internet上抓取它!

编辑:已解决 - 操作员错误!

所以,我忘记了我已经迁移了一次存储库(从account1到account2)并且我从未删除过account1存储库。我有一个bash函数快速ssh到我的远程帐户,默认情况下我将其记录到account1(我没想到),因为我看到了存储库,我认为一切都很好,因此将转储发送到account3(再次使用一个别名,所以我没有注意到我在错误的帐户)。

现在,我要在终端中将帐户的用户名设置为鲜红色,我正在缓存旧存储库而不是让它们四处闲逛。而且,我正在取消我的个人资料黑客的默认用户方面。

但是,我能够使用--incremental将丢失的修订转移到新位置。所以,所有的建议仍然有帮助。

5 个答案:

答案 0 :(得分:4)

我猜你的转储大于4 GB(因为默认情况下转储没有使用增量保存,所以它们可能比repo大得多),并且将转储截断的过程的一些步骤截断为4 GB,这是某些文件系统上的最大文件大小(也可能在某些协议中)。根据您使用的文件传输方法,该过程的某些步骤也可能会将其截断为2 GB。

您可以通过检查文件进行检查;它应该有修订号,你可以看到它们有多高。

您可以使用--incremental选项svnadmin dump来生成增量转储,而不是重新启动整个过程,从您加载到新仓库中的最后一个良好修订开始。将增量转储加载到现有存储库应该可以正常工作。你会做类似

的事情
svnadmin dump --incremental -r 1234:HEAD > repos.2.dump
# Transfer to new system
svnadmin load < repos.2.dump

答案 1 :(得分:1)

  

我可以检查repos.dump以查看它是否缺少修订版吗?

是。有像

这样的行
Revision-number: XYZ
转储文件中的

  

我可以转储缺少的修订并将它们加载到新的存储库吗?

是。您可以使用svnadmin load将修订提交到新的或现有的存储库。

答案 2 :(得分:1)

它应该在执行转储时将修订号写入命令行。这就是我得到的,即使重定向到文件也是如此。

您可以检查文件本身并查找Revision-number:以查看其中实际包含的修订。

答案 3 :(得分:1)

要验证所有修订都在您的转储文件中,请为“修订版号”grep。您也可以在文本编辑器中打开文件以检查是否有明显的损坏,但 do not save it

我发现svnadmin load失败的主要原因是您尝试加载到已有内容的存储库中。在获取转储文件之前,load命令将检查以验证存储库是否处于预期状态。我在过去通过在转储存储库时使用--incremental标志来解决这个问题。

答案 4 :(得分:1)

就个人而言,我会再次抛弃它。我最简单的答案是你原来的转储未成功完成 - 在转储运行后你在命令行中看到任何错误吗?如果您想要检查转储本身,请查看此信息以获取一些帮助:http://www.troyhunt.com/2009/12/black-art-of-splitting-subversion.html

您可以考虑的另一件事就是将原始仓库转移到目标位置。您将复制数据的压缩版本,因此该过程将比复制转储更快(不确定您是否在转移之前将其压缩)。

相关问题