如何导出具有依赖项的 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 存储库的一部分?的主要内容,如果未能解决你的问题,请参考以下文章

将 SVN 存储库的一部分合并到另一个具有历史记录的存储库

将 SVN 存储库的一部分镜像到工作副本

如何在 Maven 中为依赖项指定存储库

如何创建具有基本依赖项的 deb 包?

在 Jest 中,如何模拟具有依赖项的 TypeScript 类?

如何找到依赖项的 gradle 实现路径?