4

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

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

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

谢谢!

4

1 回答 1

7

在 db 目录之外,您确实不需要太多东西。

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

在这种情况下,svnadmin recover 并没有那么有帮助。它主要用于基于 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

您可能有一个版本低于 1.4.x 的 Subversion 的 repo,在这种情况下,您可能需要稍微操作一下格式文件。您可以在此处查看格式文件的历史记录(靠近顶部,阅读 SVN_REPOS__FORMAT_NUMBER 之前的注释): https ://svn.apache.org/repos/asf/subversion/trunk/subversion/libsvn_repos/repos.h

当然,与往常一样,当试图恢复某个副本而不是您唯一的副本时。

于 2013-11-04T21:38:51.830 回答