将分支合并到主干

Van*_*ran 123 svn version-control merge

我正面临着SVN的一个特殊问题merge.我想从dev分支合并到trunk.我们有多个开发分支同时切断主干.

我正在使用此命令将其中一个分支合并到trunk:

svn merge trunk branch_1
Run Code Online (Sandbox Code Playgroud)

我看到的变化不是这个分支的一部分,而是被合并到主干中.我究竟做错了什么 ?

SVN版本:

Subversion命令行客户端,版本1.6.16-SlikSvn-tag-1.6.16@1076804-WIN32.

bla*_*lah 211

你的svn merge语法错了.

您想要签出工作副本,trunk然后使用该svn merge --reintegrate选项:

$ pwd
/home/user/project-trunk

$ svn update  # (make sure the working copy is up to date)
At revision <N>.

$ svn merge --reintegrate ^/project/branches/branch_1
--- Merging differences between repository URLs into '.':
U    foo.c
U    bar.c
 U   .

$ # build, test, verify, ...

$ svn commit -m "Merge branch_1 back into trunk!"
Sending        .
Sending        foo.c
Sending        bar.c
Transmitting file data ..
Committed revision <N+1>.
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅SVN书中有关合并的章节.


请注意,在编写时,这是正确的答案(并被接受),但事情已经发生了变化.请参阅topek的答案,以及http://subversion.apache.org/docs/release-notes/1.8.html#auto-reintegrate

  • `--reintegrate`选项简单有效,但必须注意的是"一旦`-reintegrate`合并从分支到主干,分支不再可用于进一步的工作.它无法正确吸收新的行李箱改变,也不能再适当地重新整合到行李箱." 正如您所链接的那本书所解释的那样. (17认同)
  • --reintegrate选项不是必需的,branch(在1.6中)可以与*any-destination*合并任意次数 (3认同)
  • @daveL,从主干到分支的前向合并对我有意义.但是我发现了一个"使重复分支保持活动"的高级功能(请参阅http://stackoverflow.com/a/10163059/685806),此外它还由更新的客户端版本自动应用. (3认同)

top*_*pek 74

如果您的工作目录指向主干,那么您应该能够将您的分支合并到:

svn merge https://HOST/repository/branches/branch_1
Run Code Online (Sandbox Code Playgroud)

一定要在trunk的根目录下发出这个命令

  • 截至SVN 1.8.这是正确的答案.请参阅http://subversion.apache.org/docs/release-notes/1.8.html#auto-reintegrate (7认同)
  • 合并后,别忘了将主干的工作副本提交回存储库! (3认同)
  • 这个!为什么复杂的事情?吻.很简单; 所以语法. (2认同)

Mik*_* K. 16

在主干中进行svn更新,记下修订号.

从后备箱:

svn merge -r<revision where branch was cut>:<revision of trunk> svn://path/to/branch/branchName
Run Code Online (Sandbox Code Playgroud)

您可以通过执行svn日志来检查从主干切割分支的位置

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