【问题标题】:Svn merging trunk and branchessvn合并主干和分支
【发布时间】:2010-03-09 15:40:35
【问题描述】:

我有一个庞大的项目。

我需要创建一个分支 - 这将是项目的版本 2,但我还需要保留主干并将其与分支 1 并行更改,作为版本 1 的错误修复。

我需要将 bug 修复从主干合并到分支 1,同时向分支添加新功能。

最后我需要将所有更改合并回主干并从中制作新标签。

所以我需要版本 1 的错误修复,版本 2 的新分支,当然还有合并版本 2 中的错误修复。

我正在使用 svn,但 svn 总是出问题。我无法在没有冲突的情况下合并任何内容。

有人可以给我一个建议吗?

问候

【问题讨论】:

    标签: svn merge branch trunk


    【解决方案1】:

    为旧版本提供错误修复而创建分支称为release branch。您应该在主干上开发错误修复(因为它们需要进入所有新版本,对吗?)。从那里您将它们合并回仍然受支持的版本。这意味着当版本 1 不再受支持时,您将停止将错误修复合并回它。请参阅documentation 了解更多信息。

    如果主干中的错误修复无法合并到分支,解决方案是创建一个“反向移植分支”。在这里,您可以部分合并来自主干的修复,如果代码差异太大,则部分重写相同的修复。还建议记录您通常为解决问题而执行的合并,因此合并跟踪可帮助您查看问题是否已解决。

    如果您要修复 /branches/1.2.x,Subversion 项目使用的命名约定是创建一个名为 1.2.x-r[REVNUM] 的向后移植分支,其中 REVNUM 表示您要向后移植的修订版,或 1.2.x -issue[ISSUENUM],其中 ISSUENUM 表示您要解决的问题。

    当您完成创建反向移植修复后,您可以将其合并到发布中

    svn checkout .../branches/1.2.x myproduct-1.2.x
    svn merge --reintegrate .../branches/1.2.x-r123 myproduct-1.2.x
    

    重新整合分支后,应该删除分支。

    【讨论】:

      【解决方案2】:

      您应该首先为您的版本 1 创建一个“标签”,这是您产品的发布版本。项目的第 2 版将是主干的延续,而不是第 2 版的分支。您需要创建分支的唯一原因是对(发布的)版本 1 进行错误修复。您为新版本所做的一切都将在主干上完成,除非您有理由不这样做。

      【讨论】:

      • 我试过这个。但问题依然存在。我们再次有一个用于修复错误的分支和一个用于新功能的主干。将版本 1 的错误修复合并到版本 2 - 主干会导致很多冲突。 svn 无法合并单个文件而不发生冲突。手动解决冲突会造成很多问题和时间腰部。与重新整合合并无济于事!我想知道其他公司如何解决这个问题 - 错误修复、新版本和合并这两者?看来svn不适合这个工作之王。
      【解决方案3】:

      首先,我建议您查看@SanderRijken 建议的SVN documentation,看看功能和发布分支是什么。

      但是根据您的问题,我认为您的主要问题是另一个问题。也就是说,根本没有合并是“有效的”(即,所有合并都会在您不期望的地方产生冲突)。所以也许你可以详细说明你在做什么确切地(比如发布你用于合并的命令)?

      【讨论】:

        【解决方案4】:

        将主干中的更改合并到分支后,我发现最好使用 2-URL 合并将分支合并回主干。据我了解 --reintegrate 这只是 2-URL 合并的一种更简单的语法,有时是 fails(尽管我上次在 1.5 版中使用 reintegrate)。

        svn merge url://trunk@mergedRev url://branch@HEAD .
        

        mergedRev 是您上次将主干合并到分支时的修订版本。

        如果您使用简单的合并指令,您从主干合并到分支的所有更改将被视为需要在合并时添加到主干的更改。 2-URL 合并中的第一个 url 告诉 svn 哪些更改来自主干。这应该会大大减少合并期间的冲突。

        至于存储库的结构,我可以推荐一个来自 ariejan.net 的博客条目(见下文,因为我只允许在我的帖子中使用一个链接)

        博客条目:ariejan.net/2006/11/24/svn-how-to-structure-your-repository/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-11-25
          • 2018-11-08
          • 2015-03-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-20
          相关资源
          最近更新 更多