【问题标题】:svnadmin load into an existing directory?svnadmin 加载到现有目录?
【发布时间】: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 中创建更多提交,但它会出错,如上所示。可以解决吗?

展望未来,我知道我们的程序、工具和实践还有许多其他真正的修复,可以避免我将来想要这样做。但目前,这无济于事。 :]

【问题讨论】:

    标签: svn svnadmin


    【解决方案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
      

      这就是我的诀窍。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-22
        • 1970-01-01
        • 1970-01-01
        • 2018-02-15
        • 2017-06-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多