【问题标题】:SVN: how to merge tags from separate projectsSVN:如何合并来自不同项目的标签
【发布时间】:2014-05-07 18:01:10
【问题描述】:

我有一个包含两个独立项目的 SVN 存储库:

project_1
    /trunk
    /branches
        /1.0
    /tags
        /1.0.0

project_2
    /trunk
    /branches
        /1.0
    /tags
        /1.0.0

如您所见,每个都有相同的分支/标签编号。想象一下,每个项目中有不同的文件。

我想将这些合并到一个新项目中,project_3。也就是说,新项目的trunk 将拥有来自project_1project_2trunk 的所有文件/历史,1.0 分支将拥有来自@ 的1.0 分支的所有文件/历史987654330@ 和project_21.0.0 标记将包含来自project_1project_21.0.0 标记的所有文件/历史记录。

我的第一个想法是使用多个svn cp 执行来完成此操作。我遇到的一个大问题是not being able to copy just the subdirectories of a directory to another directory。我无法理解该帖子中讨论的解决方案是否适用于此处的情况。此外,该帖子和许多解决方案已有六年历史了,我想知道是否对 SVN 进行了任何更改以对此有所帮助。

我们的目标是建立一个统一的项目,尽可能多地保留历史。在这里采取的最佳方法是什么?请注意,不能切换到另一个 VCS。

【问题讨论】:

    标签: svn version-control merge


    【解决方案1】:

    如果你想合并数据历史,你不能使用SVN复制”你必须使用dump|load循环:

    svnrdump sump URL/OF/DIR ... > dump + svnadmin load --ignore-uuid --parent-dir NEW_PARENT ... < dump

    你可以试试svnadmin dump | svndumpfilter而不是svnrdump

    【讨论】:

    • 有没有办法让svnadmin load 与存储库 URL 一起使用,或者它只能与本地签出的内容一起使用?
    • @sparc_spread 不,您正在加载转储而不是实际的存储库。您可以尝试使用 svnsync 来伪造一些东西,但这是一项非常高级的工作。我会转储这两个存储库并将它们都导入一个新的存储库。
    • 现在只有一个包含两个项目的仓库,我希望在同一个仓库中创建第三个项目。这是可行的还是你认为我需要一个新的回购?
    • @sparc_spread - 可行,但新的特殊回购将是更好的选择
    • 看起来我也可以使用svnrdump load 将远程存储库作为目标。我唯一不能做的就是让project_1/branches/1.0project_2/branches/1.0 出现在新的project_3/branches/1.0 中。它们最终位于我指定的任何父目录中,每个父目录下都有路径 project_.../1.0。然后我必须将新文件实际签出到工作树并使用svn mv 移动它们,这与其他选项不同,它将接受通配符。如果这是唯一的方法,那就没有问题了。如果你能推荐一个更好的,请在这里这样做。无论哪种方式,我都标记为已回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 2012-01-08
    • 1970-01-01
    • 2016-02-18
    • 2022-01-15
    • 1970-01-01
    相关资源
    最近更新 更多