【发布时间】:2008-11-03 12:19:32
【问题描述】:
我正在尝试使用 svnadmin dump 迁移 SVN 存储库的一部分。
提供的 svndumpfilter 工具不管理来自未包含在导出中的目录的复制/移动/重命名依赖项。
有没有工具可以管理这些依赖关系?
【问题讨论】:
标签: svn svnadmin svndumpfilter
我正在尝试使用 svnadmin dump 迁移 SVN 存储库的一部分。
提供的 svndumpfilter 工具不管理来自未包含在导出中的目录的复制/移动/重命名依赖项。
有没有工具可以管理这些依赖关系?
【问题讨论】:
标签: svn svnadmin svndumpfilter
我发现了一个由 Simon Tatham 编写的名为 svndumpfilter2 的 Python 脚本,它试图处理简单的依赖关系(不过我发现了一些限制)。
您还可以查看article,了解他迁移到 Subversion 以及编写脚本的动机。
【讨论】:
svndumpfiler2 中发现的限制吗?
你的依赖是指由属性 svn:external 指定的那些?
如果是,我认为您应该将属性中的路径也传递给 svndumpfilter。
例如,如果您的项目位于 http://host/project 并且 svn:external 属性设置为 http://host/dependencies 您可以执行类似的操作
svndumpfilter include http://host/project http://host/dependencies < total.dump > project.dump
【讨论】:
你无法摆脱这个问题。如果您复制了目录/文件,则必须将(源和目标)都包含到 svndumpfilter 中。
但是,您可以做一些技巧:
如果您不是从修订 0 转储存储库,而是说例如从修订版 100 开始,您将获得一个新的存储库,其中修订版 1-100 消失了。但是,您的目标存储库将修订版 1 中的所有文件/文件夹作为修订版 100 中的源存储库。通过这种方式,您可以摆脱版本化数据而不会丢失 HEAD-Revision。
您可以尝试转储/加载源存储库,直到您的第一个副本进入“平面”存储库,然后将剩余的转储添加到其中。通过这种方式,您可以跳过麻烦的 copy-from 修订,因为您的文件已经在合适的(目标)目录中。
【讨论】: