如何导出具有依赖项的 SVN 存储库的一部分?
Posted
技术标签:
【中文标题】如何导出具有依赖项的 SVN 存储库的一部分?【英文标题】:How do I export a part of an SVN repository with dependencies? 【发布时间】:2008-11-03 12:19:32 【问题描述】:我正在尝试使用 svnadmin dump
迁移 SVN 存储库的一部分。
提供的 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 修订,因为您的文件已经在合适的(目标)目录中。
【讨论】:
以上是关于如何导出具有依赖项的 SVN 存储库的一部分?的主要内容,如果未能解决你的问题,请参考以下文章