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

问题描述 投票:2回答:2

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

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

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

谢谢!

svn recovery
2个回答
4
投票

在db目录之外确实不需要很多。

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

svnadmin recovery在这种情况下并没有真正帮助。它主要用于基于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版本中有一个仓库,在这种情况下,您可能需要稍微操纵格式文件。您可以在此处查看格式文件的历史记录(在顶部附近,在SVN_REPOS__FORMAT_NUMBER之前阅读注释):https://svn.apache.org/repos/asf/subversion/trunk/subversion/libsvn_repos/repos.h

当然,一如既往,当尝试恢复某些内容时,它只能处理副本而不是唯一的副本。


0
投票

我有类似的问题。但是在尝试获取旧的db文件之前,我有一个问题。我的同事有回购的工作副本(但并非所有数据都已签出)。他为我提供了一个大的.svn文件夹。有什么方法可以从svn文件夹中提取数据?从仓库中检索数据?

© www.soinside.com 2019 - 2024. All rights reserved.