svnadmin 加载到现有目录?

Posted

技术标签:

【中文标题】svnadmin 加载到现有目录?【英文标题】:svnadmin load into an existing directory? 【发布时间】:2013-01-29 18:02:49 【问题描述】:

我们在工作中一直在做一些存储库跳跃,作为一个杂项,我正在尝试将一些旧历史重写到我们将使用的新存储库中。如何将 SVN 转储文件重新加载到现有的存储库中存储库中的目录?

我已经完成了我要移动的旧树干和树枝的svnadmin dump。我已经处理它们以从转储文件的路径中删除 trunkbranches/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@172newRepo/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 加载到现有目录?的主要内容,如果未能解决你的问题,请参考以下文章

svnadmin 从 svn 1.4 加载到 1.7

svnadmin 加载但保留修订号

svnadmin 加载重新编号修订

svnadmin 加载校验和错误

SVN+Apche+Nginx+IF.svnadmin管理

centos7搭建SVN+Apache+IF.svnadmin实现web管理SVN