仅从db文件夹中恢复SVN存储库?

时间:2013-11-04 19:33:48

标签: svn recovery

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:4)

在db目录之外你真的没有多少东西。

这是db目录之外的内容: README.txt(只是解释这是一个Subversion回购,并不重要) conf(配置文件的目录,主要用于与svnserve一起使用时,对于恢复repo的内容并不重要) format(指定subversion repo的格式,这应该是一个不超过" 5 \ n"的文件,并且自Subversion 1.4.x以来没有改变) hooks(带有钩子脚本的目录,不需要从repo中读取数据) 锁(锁定自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

当然,和往常一样,当试图恢复某些东西时,不是你唯一的副本。