【问题标题】:How do I export a part of an SVN repository with dependencies?如何导出具有依赖项的 SVN 存储库的一部分?
【发布时间】:2008-11-03 12:19:32
【问题描述】:

我正在尝试使用 svnadmin dump 迁移 SVN 存储库的一部分。

提供的 svndumpfilter 工具不管理来自未包含在导出中的目录的复制/移动/重命名依赖项。

有没有工具可以管理这些依赖关系?

【问题讨论】:

    标签: svn svnadmin svndumpfilter


    【解决方案1】:

    我发现了一个由 Simon Tatham 编写的名为 svndumpfilter2 的 Python 脚本,它试图处理简单的依赖关系(不过我发现了一些限制)。

    您还可以查看article,了解他迁移到 Subversion 以及编写脚本的动机。

    【讨论】:

    • 这是一个旧答案,但您还记得您在svndumpfiler2 中发现的限制吗?
    • 主要涉及到几个级别的复制,IIRC,但我设法根据自己的需要调整了脚本。
    【解决方案2】:

    你的依赖是指由属性 svn:external 指定的那些?

    如果是,我认为您应该将属性中的路径也传递给 svndumpfilter。 例如,如果您的项目位于 http://host/project 并且 svn:external 属性设置为 http://host/dependencies 您可以执行类似的操作

    svndumpfilter include http://host/project http://host/dependencies < total.dump > project.dump
    

    【讨论】:

      【解决方案3】:

      你无法摆脱这个问题。如果您复制了目录/文件,则必须将(源和目标)都包含到 svndumpfilter 中。

      但是,您可以做一些技巧:

      如果您不是从修订 0 转储存储库,而是说例如从修订版 100 开始,您将获得一个新的存储库,其中修订版 1-100 消失了。但是,您的目标存储库将修订版 1 中的所有文件/文件夹作为修订版 100 中的源存储库。通过这种方式,您可以摆脱版本化数据而不会丢失 HEAD-Revision。

      您可以尝试转储/加载源存储库,直到您的第一个副本进入“平面”存储库,然后将剩余的转储添加到其中。通过这种方式,您可以跳过麻烦的 copy-from 修订,因为您的文件已经在合适的(目标)目录中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-19
        • 1970-01-01
        • 1970-01-01
        • 2020-09-28
        • 2012-04-03
        相关资源
        最近更新 更多