仅从数据库文件夹中恢复SVN存储库



我有一个一年前的项目,我想从中恢复源代码。该项目的SVN存储库只有db文件夹;但是,db 文件夹似乎是完整的,包括 db/revs 文件夹中的所有文件。我没有这个SVN存储库的备份,也不知道应该在那里的所有其他文件发生了什么。

不出所料,我无法从此存储库中恢复工作副本。我试图从工作存储库中复制基本的数据库结构,并且我尝试使用 svnadmin 恢复,但我无法从中获取任何数据。

是否可以从数据库中至少检索最后一个工作副本?我可以从这一点开始一个新的SVN。

谢谢!

在数据库目录之外,您真的不需要太多东西。

这是数据库目录之外的内容:自述文件.txt(只是解释这是一个 Subversion 存储库,没关系)conf(包含配置文件的目录,主要用于与 svnserve 一起使用时,对于恢复存储库的内容并不重要)格式(指定 Subversion 存储库的格式,这应该是一个文件中只有 "5"的文件,并且自 Subversion 1.4.x 以来没有更改)钩子(带有钩子脚本的目录,不需要从存储库中读取数据)锁(自 1.3.x 之前未使用的真正旧存储库的锁定文件位置)

在这种情况下,SVNADMIN 恢复并不是那么有用。 它主要用于基于 BDB 的存储库(您可能没有使用)。 它在 FSFS 存储库中没有太多作用。

但是,您应该能够执行以下操作:

svnadmin create new-repo
rm -rf new-repo/db
cp -a old-repo/db new-repo

我建议一旦你这样做,就创建一个新的回购,然后转储并重新加载到其中:

svnadmin create final-repo
svnadmin dump new-repo | svnadmin load final-repo

你可能有一个 Subversion 1.4.x 之前的 repo,在这种情况下,你可能不得不稍微操作一下格式化文件。 您可以在此处查看格式化文件的历史记录(在顶部附近,阅读SVN_REPOS__FORMAT_NUMBER前的评论):https://svn.apache.org/repos/asf/subversion/trunk/subversion/libsvn_repos/repos.h

当然,与往常一样,当尝试恢复某些内容时,会针对副本而不是您唯一的副本。

最新更新