我有一个一年前的项目,我想从中恢复源代码。该项目的SVN储存库只有db文件夹;但是,db文件夹似乎是完整的,包括db / revs文件夹中的所有文件。我没有这个SVN信息库的备份,也不知道应该存在的所有其他文件都发生了什么。
毫不奇怪,我无法从该存储库中恢复工作副本。我试图从工作的存储库中复制必要的数据库结构,并且尝试使用svnadmin restore,但无法从中获取任何数据。
是否可以从数据库中检索至少最后一个工作副本?从那时开始,我可以开始新的SVN。
谢谢!
在db目录之外,实际上并不需要太多。
这是db目录之外的内容:README.txt(只是说明这是Subversion存储库,没关系)conf(包含配置文件的目录,主要用于svnserve时使用,对恢复并不重要)钩子(带有钩子脚本的目录,格式为repo的内容)(指定Subversion仓库的格式,它应该是一个文件,其中只包含“ 5 \ n”,并且从Subversion 1.4.x开始没有更改)。不需要从存储库中读取数据)锁(对于自1.3.x以来不再使用的真正旧存储库,请锁定文件位置)
在这种情况下,svnadmin restore并不是真正有用的。它主要用于基于BDB的存储库(您可能没有使用过)。在FSFS存储库中,它并没有做太多事情。
但是,您应该能够:
svnadmin create new-repo
rm -rf new-repo/db
cp -a old-repo/db new-repo
Run Code Online (Sandbox Code Playgroud)
我建议您一旦创建一个新的仓库,然后转储并重新加载到其中:
svnadmin create final-repo
svnadmin dump new-repo | svnadmin load final-repo
Run Code Online (Sandbox Code Playgroud)
您可能在1.4.x之前的Subversion版本中有一个仓库,在这种情况下,您可能需要稍微操纵格式文件。您可以在此处查看格式文件的历史记录(在顶部附近,在SVN_REPOS__FORMAT_NUMBER之前阅读注释):https ://svn.apache.org/repos/asf/subversion/trunk/subversion/libsvn_repos/repos.h
当然,与往常一样,当尝试恢复某些内容时,它会针对副本而不是唯一的副本。