svnadmin加载错误-文件已存在
我有一个带有SVN存储库的硬盘,它“死了”。在我成功恢复之前,我在另一个硬盘上创建了新的存储库,并将所有文件提交到新的存储库,从版本1开始,并丢失所有历史记录 现在我已经恢复了旧的SVN存储库,我正在尝试将我正在处理的新存储库加载到旧存储库中,因此基本上新存储库的修订版1必须成为旧存储库的修订版2456 在运行svnadmin加载错误-文件已存在,svn,tortoisesvn,svnadmin,Svn,Tortoisesvn,Svnadmin,我有一个带有SVN存储库的硬盘,它“死了”。在我成功恢复之前,我在另一个硬盘上创建了新的存储库,并将所有文件提交到新的存储库,从版本1开始,并丢失所有历史记录 现在我已经恢复了旧的SVN存储库,我正在尝试将我正在处理的新存储库加载到旧存储库中,因此基本上新存储库的修订版1必须成为旧存储库的修订版2456 在运行svnadmin load命令时,出现以下错误: <<< Started new transaction, based on original revision 1
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 '----------------'
您必须从一个新的存储库开始,并首先从原始存储库加载事务
svnadmin dump recovered-repo > dumpfile
svnadmin load new-repo < dumpfile
svnadmin dump recovered repo>dumpfile
svnadmin加载新的repo
然后从崩溃后一直使用的当前存储库的末尾加载新事务。一定要指定你的修订版,只接受新的东西
svnadmin dump current-repo -r firstnewrev:lastnewref --incremental > newdumpfile
svnadmin load new-repo < newdumpfile
svnadmin转储当前repo-r firstnewrev:lastnewref--incremental>newdumpfile
svnadmin加载新repo
因为我没有任何可用于测试的存储库,所以实际上我还没有测试过它,所以请小心,不要弄乱您没有备份的任何东西。有关更多帮助,请参阅免费在线书籍:当我们不得不使用cvs2svn迁移旧的CVS存储库时,我遇到了这个问题。这个过程非常有效,但我们最初错过了CVS中的一些项目,而且团队在事后也对CVS做出了一些承诺。因此,我们随后的SVN转储包含以下组合:
*以前在SVN中未见过的新项目
*现有项目已迁移到SVN,但具有较新的提交
是第二部分导致了负载冲突
因此,我没有重新混合整个CVS回购协议(这将花费数小时),而是依靠我们的老朋友svndumpfilter来消除冲突路径
过滤最新的转储文件以排除冲突(将原始转储文件保留在palce中,稍后需要)
运行导入(存储库现在拥有除冲突之外的所有项目中的最新项目)
现在筛选最新的转储以仅包含冲突(稍后使用)
运行现有SVN存储库的转储,不包括冲突路径
筛选最新转储文件以仅包含冲突
创建新的空存储库
将旧回购协议移至安全位置
将两个筛选的转储导入新存储库
[svnrepos]$svndumpfilter排除冲突路径repo\u filtered\u woConflicts.dump
[svnrepos]$svnadmin load REPONAMErepo\u filtered\u ConflictsOnly.dump
[svnrepos]$svnadmin dump REPONAME | svndumpfilter排除冲突路径>repo_filtered_woConflicts.dump#覆盖以前的过滤器
[svnrepos]$mv REPONAME REPONAME\u old
[svnrepos]$svnadmin create REPONAME
[svnrepos]$chmod-rg+rwx REPONAME#如果由apache共享
[svnrepos]$svnadmin load REPONAME
我想最后一行的意思是“svnadmin load”,而不是“svnadmin dump”。您可以通过svnadmin dump repo1 | svnadmin load repo2
来传递这些命令,以加快速度。
[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