svnadmin 加载到现有目录?
Posted
技术标签:
【中文标题】svnadmin 加载到现有目录?【英文标题】:svnadmin load into an existing directory? 【发布时间】:2013-01-29 18:02:49 【问题描述】:我们在工作中一直在做一些存储库跳跃,作为一个杂项,我正在尝试将一些旧历史重写到我们将使用的新存储库中。如何将 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
中创建更多提交,但它会出错,如上所示。可以解决吗?
展望未来,我知道我们的程序、工具和实践还有许多其他真正的修复,可以避免我将来想要这样做。但目前,这无济于事。 :]
【问题讨论】:
【参考方案1】:虽然--deltas
选项与svndumpfilter
不兼容,但--incremental
是。 --deltas
将每个提交作为增量存储在转储文件中,从而节省磁盘空间。 --incremental
将第一个条目捕获为概念增量(而不是仅仅节省磁盘空间),从而允许将目录的内容从转储文件加载到现有目录中。当第一次提交包含对文件夹属性的更改时,我还必须将转储文件的内容更改为 change
而不是 add
的更改类型。
【讨论】:
【参考方案2】:当我收到此错误时,我正在尝试执行
svnadmin load
从cvs2svn 工具创建的转储中将命令导入现有项目结构。我发现这是不正确的,因为在尝试创建主干文件夹时会抛出“文件已存在”类型的消息。 相反,在 IDE 中,我在存储库中创建了一个远程文件夹并将其留空。 然后发出
svnadmin load --parent-dir <emptyFolderName> C:\SVN\repos\myRepo C:\temp\dumpFile.dump
这就是我的诀窍。
【讨论】:
以上是关于svnadmin 加载到现有目录?的主要内容,如果未能解决你的问题,请参考以下文章