我们在工作中一直在做一些存储库跳转,作为一个kludge,我正在尝试将一些旧的历史重写到我们将要使用的新存储库中。如何将SVN转储文件重新加载到现有存储库中存储库中的目录?
我已经完成了svnadmin dump
旧的行李箱和我要移动的树枝。我已经处理它们以从转储文件中的路径中删除trunk
和branches/myBranch
前缀。我还将一个加载到newRepo/fromOldRepo_ref/development
。
$ svn copy --parents file://`pwd`/newRepo/fromOldRepo_ref/development@172 file://`pwd`/newRepo/fromOldRepo_ref/features/2169 -m "Branch to 2169 reference branch"
Committed revision 182.
$ svnadmin load --parent-dir fromOldRepo_ref/features/2169 newRepo < dumpfile
<<< Started new transaction, based on original revision 2171
svnadmin: E160020: File already exists: filesystem 'newRepo/db', transaction '182-53', path 'fromOldRepo/features/2169'
* adding path : fromOldRepo/features/2169 ...
然后我从newRepo/fromOldRepo_ref/development@172
到newRepo/fromOldRepo_ref/features/2169
完成了上述分支。之后,我想通过加载另一个转储文件在2169
中创建更多提交,但它如上所示错误。这可以解决吗?
展望未来,我知道我们的程序,工具和实践还有许多其他真正的修复方法可以避免我将来想要这样做。但目前,这没有帮助。 :
答案 0 :(得分:4)
虽然--deltas
选项与svndumpfilter
不兼容,但--incremental
是。 --deltas
将每个提交存储为转储文件中的增量,从而节省磁盘空间。 --incremental
将第一个条目捕获为概念性增量(而不是仅保存磁盘空间),从而允许将目录内容从转储文件加载到现有目录中。当第一次提交包括对文件夹属性的更改时,我还必须将转储文件的内容更改为更改类型change
而不是add
。
答案 1 :(得分:0)
当我收到此错误时,我试图执行
svnadmin load
从cvs2svn工具创建的转储命令进入现有项目结构。我发现这不正确,因为&#34;文件已经存在&#34;尝试创建trunk文件夹时抛出的消息类型。 相反,在IDE中,我在存储库中创建了一个远程文件夹并将其留空。 然后发出
svnadmin load --parent-dir <emptyFolderName> C:\SVN\repos\myRepo C:\temp\dumpFile.dump
这对我来说是什么诀窍。