Svn 将分支合并到主干中

Svn 将分支合并到主干中,svn,version-control,merge,Svn,Version Control,Merge,我在使用SVNmerge时遇到了一个特殊的问题。我想从开发分支合并到主干。 我们有多个开发分支同时切断主干 我正在使用以下命令将其中一个分支合并到主干: svn merge trunk branch_1 我看到不属于此分支的更改,正在合并到主干中。 我做错了什么 SVN版本: Subversion命令行客户端,版本 1.6.16-SlikSvn-tag-1.6。16@1076804-WIN32 在主干中执行svn更新,记录修订号 从后备箱: svn merge -r<revision w

我在使用SVN
merge
时遇到了一个特殊的问题。我想从开发分支合并到主干。 我们有多个开发分支同时切断主干

我正在使用以下命令将其中一个分支合并到主干:

svn merge trunk branch_1
我看到不属于此分支的更改,正在合并到主干中。 我做错了什么

SVN版本:

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


在主干中执行svn更新,记录修订号

从后备箱:

svn merge -r<revision where branch was cut>:<revision of trunk> svn://path/to/branch/branchName

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

svn merge https://HOST/repository/branches/branch_1

请确保在主干的根目录下发出此命令。

您的
svn merge
语法错误。

您希望签出主干的工作副本,然后使用svn合并-重新整合选项:

$ 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>.
$pwd
/主/用户/项目中继
$svn更新#(确保工作副本是最新的)
修订时。
$svn合并--重新整合^/project/Branchs/branch_1
---将存储库URL之间的差异合并到“.”:
U foo.c
uBar.c
U
$#构建、测试、验证。。。
$svn commit-m“将分支_1合并回主干!”
发送。
发送foo.c
发送条
正在传输文件数据。。
承诺修订。
有关更多详细信息,请参阅



请注意,在写这篇文章的时候,这是正确的答案(并且被接受),但事情已经向前发展了。参见topek的答案,语法错误,应该改为

svn merge <what(the range)> <from(your dev branch)> <to(trunk/trunk local copy)>
svn合并

我知道这不是一个答案,但如果您同时拥有多个活动分支,那么您最好转到mercurial或git。Ps:我不是一个狂热者,我已经在svn工作了约7年;-)它提供了什么优势?为什么迁移到git或mercurial是一个更好的选择?因为git和mercurial对分支有更好的支持。优点:你不会问这样的问题,而且在创建和维护分支时也不会那么头疼(目前我正在一个拥有超过1000个分支的项目中工作,在svn中,与它们一起工作是一件非常痛苦的事情),我建议你仔细研究和回顾一下。因为有多个开发分支同时存在,这对我来说也不起作用,这个命令也从其他分支引入了更改。这可能是SLik SVN客户端的问题吗?虽然这并不不准确,但有更简单的方法可以与较新版本的
SVN
合并(例如OP正在使用的版本)。@VanchinathanChandrasekaran,在命令中,指定分支名称为
svn://path/to/branch/branchName
它应该只从该分支提取更改,而不是从其他分支提取更改。如果是这样,我们就有危险了--重新整合选项不是强制性的,分支(在1.6中)可以与任何目的地合并任意次数真的吗?不冒重新合并相同变更集的风险?你能提供一个链接来证明这一点吗?
——重新融入
确实不是强制性的,但在这种情况下确实是推荐的。我试图在没有重新融入的情况下完成这项工作,结果导致了数百起冲突。有了
--重新融入
,没有冲突,一切都很好!
--reintegrate
选项简单有效,但必须注意,“一旦从一个分支到另一个分支进行了
--reintegrate
合并,该分支就不能再用于进一步的工作。它不能正确地吸收新的主干更改,也不能正确地重新集成到主干。”正如你所链接的那本书所解释的那样。@daveL,从主干到分支的正向合并对我来说是有意义的。然而,我发现了一个高级功能“保持重新集成的分支活动”(请参阅),而且它由较新的客户端版本自动应用。这是正确的答案。请参见@blahdiblah,代码片段包含大量无关信息。研究摘要比研究的任何其他部分都要多读几个数量级,这是有原因的。UX测试也是如此,最小化反弹率,等等。这都是相同的原则。对于1.7,您可以在不使用--reintegrate选项的情况下进行合并,并在分支上继续开发和合并。可悲的是,1.8将迫使这成为一种重新融合,而且似乎没有办法阻止它。这意味着一旦您合并,您就不能在不经历可怕的“保持活力的舞蹈”的情况下使用分支。不要忘记在合并后将主干的工作副本提交回存储库!
svn merge <what(the range)> <from(your dev branch)> <to(trunk/trunk local copy)>