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

Posted

技术标签:

【中文标题】当我在存储库中丢失一些修订时,如何转储所有 svn 数据?【英文标题】:How can I dump all svn data while I lost some revisions in the repository? 【发布时间】:2014-04-01 03:44:07 【问题描述】:

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

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

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

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

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

【问题讨论】:

我发现我从 /repo_dir/db/revs/ 301 636 中丢失了以下文件 【参考方案1】:

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

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

    svnadmin verify /xx/Repositoryfile -r 302:HEAD

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

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

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

    找到 301 修订版未损坏的存储库备份并仅转储此修订版:

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

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

    svnadmin load <repo-path> < dump1.dmp

    svnadmin load <repo-path> < dump3.dmp

    svnadmin load <repo-path> < dump2.dmp

这样您将恢复存储库。如果您有 301 以外的其他损坏的版本,您将不得不执行更多步骤,但方法仍然相同。希望对你有帮助!

【讨论】:

我的前任真的给我搞得一团糟。我没有备份可以用。似乎解决它的唯一方法是检查然后检查。这些海量数据将花费我很多时间来移动它们。T O T

以上是关于当我在存储库中丢失一些修订时,如何转储所有 svn 数据?的主要内容,如果未能解决你的问题,请参考以下文章

减少 SVN 存储库大小

svnadmin 加载但保留修订号

从 SVN 转储中删除空修订的问题

如何批量重写 SVN 日志?

SVN 存储库中缺少修订

SVN转储大小混乱