【问题标题】:merge 2 svn branches together将 2 个 svn 分支合并在一起
【发布时间】:2011-05-22 12:48:49
【问题描述】:

我正在使用我不习惯的 svn 设置,我需要将新代码从一个分支合并到另一个分支。

主干文件夹中没有代码,所以我不知道是否应该将主干更新为代码并更新第二个分支,或者是否有办法将一个分支更新到另一个分支。我最后的办法就是手动更新代码。

你知道这里最好的路线是什么吗?我在终端上做所有事情。

【问题讨论】:

    标签: svn merge svn-merge


    【解决方案1】:

    否不要手动更新。当然,难度将取决于这些分支的距离。

    您始终可以将更改从一个分支带到另一个分支。 假设您有两个名为 branch1 和 branch2 的分支,并且您想将 branch2 合并到 branch1。

    假设你在branch1(先试试dry run,看看会不会导致冲突)

    svn merge -r LAST_MERGED_REVISION:HEAD_REVISION --dry-run url/to/branches/branch2 .
    
    svn merge -r LAST_MERGED_REVISION:HEAD_REVISION url/to/branches/branch2 .
    svn status | egrep '^C|^.C' <---Manual intervention is required for conflicts
    svn update
    svn ci -m "Merge changes from branch2"
    

    你可以关闭branch2

    svn merge --reintegrate url/to/branches/branch2
    svn update
    svn ci -m "Merged branch2 to branch1"
    

    如果分支非常不同,这可能会失败。

    【讨论】:

    • 看起来这会起作用,尽管我认为我没有改变的旧文件出现树冲突。知道如何解决这些问题吗?这些文件会有非常小的变化
    • @wajiw:你尝试过试运行吗?这是一个好消息,如果某些文件只有微小的变化。其中一些可以在自动合并后手动解决,并使用 svn resolve 命令解决。但只有在检查了合并失败的原因后才能执行此操作。
    • 是的,效果很好。使用'svn resolve --accept working -R'。解决冲突,因为他们应该首先工作。谢谢!
    • @wajiw:谢谢。 :) 很好,但请确保您没有留下任何您想要从旧版本中获得的更改。 svn resolve 手动让你知道这是合并输出的最终分辨率。这就像一句格言。我们通常检查更改,仅在发生冲突时手动合并它们,然后使用 svn resolve 解决合并冲突。
    • 确定。检查并看起来两个 repos 都是完美的,并且新的合并正在成功地通过回归测试。再次感谢!
    【解决方案2】:

    根据您使用的 subversion 版本,我建议使用 svnmerge,或 subversion 的内置 merge tracking support。在任何情况下,都可以从一个分支合并到另一个分支,而无需使用主干(假设分支有一些相对接近的祖先)。

    【讨论】:

      猜你喜欢
      • 2011-05-18
      • 1970-01-01
      • 1970-01-01
      • 2014-01-23
      • 2013-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多