当我在存储库中丢失一些修订时,如何转储所有svn数据?

时间:2014-04-01 03:44:07

标签: svn svnadmin

我想转储旧的svn源并将其加载到我的新计算机上。我的旧svn存储库大约100GB。

  • 当我使用svnadmin dump /xx/Repositoryfile > mydump转储svn文件时,我得到了一个512Mb大小的文件。最后,我找到了原因:

  • 因为修订版302已丢失。我只能获得1-301修订版的数据。

  • 即使使用svnadmin dump /xx/Repositoryfile -r 303:90000--incremental > mydump获取其他来源也是如此。它无法加载。

如何将我的所有svn数据移至新位置?

1 个答案:

答案 0 :(得分:3)

如果您在存储库未处于损坏状态时(即,当它具有丢失的修订版本时)备份存储库,那么您可以修复存储库。我建议按照以下步骤修复存储库:

  1. 首先,您应检查原始转储中是否存在302以外的损坏修订。您可以使用以下命令行检查特定修订版本范围的一致性:

    svnadmin verify /xx/Repositoryfile -r 302:HEAD

  2. 如果除了302之外没有损坏的修订版,那么你应该全部转储 有效的修订。

    svnadmin dump /xx/Repositoryfile -r 0:300 > dump1.dmp

    svnadmin dump /xx/Repositoryfile -r 302:HEAD > dump2.dmp

  3. 找到301版本未损坏的存储库备份,仅转储此版本:

    svnadmin dump /xx/Repositoryfile -r 301 > dump3.dmp

  4. 创建一个干净的存储库(通过命令svnadmin create <repo-name>)并逐个加载所有这些转储((!)请注意dump3.dmp必须按第二顺序加载)。

    svnadmin load <repo-path> < dump1.dmp

    svnadmin load <repo-path> < dump3.dmp

    svnadmin load <repo-path> < dump2.dmp

  5. 这样您将恢复存储库。如果除了301之外还有其他损坏的修订版,则必须执行更多步骤,但方法仍然相同。我希望它有所帮助!