我不得不清除我们的 svn 服务器,但在安装新操作系统之前我未能“转储”存储库。但是,我对每个存储库中的每个文件都进行了完整备份。此后,我已将所有旧文件转移回来。不幸的是,版本历史记录已完全消失。我仍然拥有所有旧的增量文件,并且 svn 可以使用“验证”命令查看每个修订版本,但我想知道是否可以直接从实际文件(而不是转储文件)导入旧历史记录?
答案1
不幸的是,我认为这些信息不存在。您可以尝试在其中一个工作副本的 .svn 目录中运行 grep(我假设这就是您拥有文件副本的方式)以查找旧日志消息中的字符串。如果您找到它们,我相信我们可以编写一个脚本来重新填充日志历史记录,但文件版本历史记录肯定已经消失了。我刚刚查看了一下我的文件,也没有看到工作副本中保存的日志历史记录。
我认为最好的办法是建立一个存储库,其中包含空白提交,提交的版本号最高可达您拥有的任何副本的版本号。这样,对修订号的任何引用仍然有效,只是它们为空白。
答案2
此时,您最好从一个新的存储库开始 - 您可以尝试将虚拟修订插入树中,但这会使工作副本无效,并导致 svn log/diff/等出现奇怪的问题。这样做比尝试以某种巧妙的方式将所有内容整合在一起要安全得多。
如果您拥有文件的所有历史版本,您可以编写一个脚本来根据文件的旧版本创建新的修订版以获取旧版本,但您将丢失每个修订版的所有其他元数据,如日期、作者和日志消息。