在Subversion中将trunk合并到分支

Gil*_*aor 75 svn merge

我正在使用Subversion 1.4.6,我现在无法升级到1.5版.

情况:

  1. 主干有很多结构变化(主要是移动文件).

  2. 我有一个最近从主干合并的分支,但在重大变化之前.

将主干合并到分支的最佳方法是什么?

我的想法:

  1. 首先,通过将分支中的已修改文件合并到主干,将分支小心地合并到主干.

  2. 将主干复制到分支.在不丢失分支历史的情况下,最好的方法是什么?我应该弃用分支并创建一个新分支吗?


好吧,看起来我没有给SVN足够的信用.毕竟它足够聪明.我只是被"D"和"A"的输出所拖延,但在后台它做了一个动作.

Ste*_*fan 88

是否存在阻止您自上次合并以来合并主干上的所有修订的内容?

svn merge -rLastRevisionMergedFromTrunkToBranch:HEAD url/of/trunk path/to/branch/wc
Run Code Online (Sandbox Code Playgroud)

应该工作得很好.至少如果要将trunk上的所有更改合并到您的分支.

  • 当我干它运行时,那里有很多"D"和"A"的许多文件,因为文件在主干中移动.我的问题是SVN是否记得这种情况下文件的历史记录. (3认同)
  • 这里有一个很好的指南:http://stereointeractive.com/blog/2009/02/17/svn-merge-trunk-changes-to-your-branch/ (2认同)

小智 16

通过在工作副本目录中运行此命令,可以找到从主干到分支合并的最新修订:

svn log -v --stop-on-copy
Run Code Online (Sandbox Code Playgroud)

  • 这只是在创建分支时停止日志; 它没有显示在该点之后发生的任何合并. (4认同)
  • 因为,有了@moswald的一点点警告,这可能非常有用.我没有看到问题.我通常没有长寿的分支(最多一周),所以我通常只在重新整合之前从主干拉出来. (2认同)

Mar*_*kku 12

以"老式"方式指定要合并的修订范围.使用1.5+,您可以使用:

svn merge HEAD url/of/trunk path/to/branch/wc
Run Code Online (Sandbox Code Playgroud)

  • 你还要说这么多吗?在工作副本中'svn merge/url/of/trunk'有什么问题? (18认同)
  • 我正在使用1.6.11,它让我进入一个范围. (4认同)
  • @Solo HEAD确实要求您指定修订号,但不再需要使用HEAD.正如GreenAsJade所提到的,"svn merge/url/of/trunk path/to/branch/wc"对我有用. (2认同)
  • 应修改答案以删除“HEAD” (2认同)