svnadmin加载错误 - 文件已存在

时间:2011-08-02 11:21:48

标签: svn tortoisesvn svnadmin

我有一个带有SVN存储库的硬盘驱动器,它“死了”。在我设法恢复它之前,我在另一个HDD上创建了新的存储库,并将所有文件从版本1开始提交到新存储库并丢失所有历史记录。

现在我已经恢复了旧的SVN存储库,我正在尝试将我正在处理的新存储库加载到旧存储库中,因此基本上新存储库的修订版1必须成为旧存储库的修订版2456。

当我运行svnadmin load命令时,我收到以下错误:

<<< Started new transaction, based on original revision 1
     * adding path : ---------------- ...svnadmin: File already exists: filesystem 'C:\
Repositories\repname\db', transaction '2788-25k', path '----------------'

知道如何“合并”他们吗?如果它甚至可能,当然......

2 个答案:

答案 0 :(得分:2)

您必须重新开始使用新的存储库并首先从原始存储库加载事务。

svnadmin dump recovered-repo > dumpfile
svnadmin load new-repo < dumpfile

然后从崩溃后您一直在工作的当前存储库的末尾加载新事务。请务必指定您的修订版,以便只接受新内容。

svnadmin dump current-repo -r firstnewrev:lastnewref --incremental > newdumpfile
svnadmin load new-repo < newdumpfile

因为我没有任何存储库可供测试,所以我实际上没有对此进行测试,所以要小心,不要乱用任何你没有备份的东西。有关更多帮助,请参阅免费在线图书:http://svnbook.red-bean.com/

答案 1 :(得分:1)

当我们不得不使用cvs2svn迁移旧的CVS存储库时,我遇到了这个问题。这个过程很有效,但我们最初错过了一些来自CVS的项目,并且团队也在事后对CVS做了一些提交。所以我们随后的SVN转储有一个组合: *以前在SVN中没有见过的新项目 *现有项目已经迁移到SVN,但是有更新的提交。

这是导致负载冲突的第二部分。

然后重新整理整个CVS回购(这需要花费数小时和数小时),我只依靠我们的老朋友svndumpfilter去除冲突路径。

  1. 过滤最新的转储文件以排除冲突(保留原始的diump文件,以后需要它)
  2. 运行导入(存储库现在包含除冲突之外的所有项目中的最新项目)
  3. 现在,将最新转储过滤为仅包含冲突(稍后使用)
  4. 运行现有SVN存储库的转储,不包括冲突路径
  5. 过滤最新的转储文件以仅包含冲突
  6. 创建新的空存储库
  7. 将旧仓库移至安全位置
  8. 将两个已过滤的转储导入新存储库
  9. 
        [svnrepos]$ svndumpfilter exclude conflict-path < latestRepo.dump > repo_filtered_woConflicts.dump
        [svnrepos]$ svnadmin load REPONAME < repo_filtered_woConflicts.dump
        [svnrepos]$ svndumpfilter include conflict-path < latestRepo.dump > repo_filtered_ConflictsOnly.dump 
        [svnrepos]$ svnadmin dump REPONAME | svndumpfilter exclude conflict-path > repo_filtered_woConflicts.dump #overwrites previous filter
        [svnrepos]$ mv REPONAME REPONAME_old
        [svnrepos]$ svnadmin create REPONAME
        [svnrepos]$ chmod -R g+rwx REPONAME # if shared by apache
        [svnrepos]$ svnadmin load REPONAME < repo_filtered_woConflicts.dump
        [svnrepos]$ svnadmin load REPONAME < repo_filtered_ConflictsOnly.dump