Subversion的分支重返社会Subversion的分支重返社会(Subversion bran

2019-05-13 14:29发布

当一个分支重新整合到主干,是该分支有效地死了吗?

你能重返社会后修改的分支,并在日后合并这回主干?

Answer 1:

你可以做到这一点从技术上说,你分支没有死,也不禁止,但不建议重返社会后,从分支合并到主干。

你可以找到其中的原因,在这里进行充分的讨论: 颠覆合并复兴合并

基本上,它说,它可能再次合并你的躯干,但由于重返社会迫使你从主干合并到分支前到复兴的操作你将面对的反射/循环合并是在颠覆1.5很成问题。
根据这篇文章,建议删除您重返分支重返社会后立即创建一个新的具有相同(或不同)的名称,而不是。

这是一个已知的颠覆行为,这将在未来的版本中解决(大概在1.6)




Answer 2:

其实,你需要做一个--record-only从主干到您这是由创建修订的分支合并--reintegrate承诺:

$ cd trunk
$ svn merge --reintegrate ^my-branch 
$ svn commit

Committed revision 555. 
# This revision is ^^^^ important

现在你记录下来

$ cd my-branch
$ svn merge --record-only -c 555 ^trunk 
$ svn commit

你是幸福的,以保持现在的分支

更多信息可以在第4章分支与合并,合并先进



Answer 3:

当你从一个分支重新融入行李箱,你应该做的两件事情之一:

  • 删除您的分支 。 这是最简单的,但它使我们更难看到了分支的历史。

  • 告诉你支不合并的复兴合并提交 。 如果您重返到主干,并提交它作为修正X,你可以在你的分支运行此命令: svn merge --record-only -c X url-to-trunk 。 但是,你不应该这样做,如果你所做的任何更改为比合并本身的承诺,其他的部分。 任何其他的修改将不会使其恢复到您的分支。



Answer 4:

上回来,如果有人进行更改到分支多次(预1.5)合并变迁的若干建议: 请记住,在哪个版本你做的合并 ! 无论是写的版本号在某处, (这是比较容易) 做出标记 。 (你当然可以找到它出来以后,但是这是一个PITA)。

例:

你有一个仓库的布局是这样的:

/your_project
  /trunk
  /branches
  /tags

比方说,它是一个Web应用程序,并且已计划做一个发布。 您可以创建一个标签,并从该(或主干)分支中,你做了错误修正:

/your_project
  /trunk
  /branches
    /1.0.0-bugfixes
  /tags
    /1.0.0

这样做,这样,就可以在后备箱中集成新的功能。 所有的错误修正只会内修正错误的分支发生,你做的当前版本的标签(现在从修正错误的分支)每次发布之前。

让我们假设你做bugfixing相当数量并释放那些到生产服务器,你需要拼命在当前Trunk这些功能之一:

/your_project
  /trunk
  /branches
    /1.0.0-bugfixes
  /tags
    /1.0.0
    /1.0.1
    /1.0.2

现在,您可以直接集成在后备箱中1.0.0和1.0.2之间的变化(假设你在你的工作副本):

svn merge http://rep/your_project/tag/1.0.0 http://rep/your_project/tag/1.0.2 .

这是你应该记住什么。 在后备箱您已经合并1.0.0和1.0.2之间的变化。 假设有在目前的产能释放更多的变化:

/your_project
  /trunk
  /branches
    /1.0.0-bugfixes
  /tags
    /1.0.0
    /1.0.1
    /1.0.2
    /1.0.3
    /1.0.4

您现在可以释放从树干的新版本,但你的错误修正的最后一个变化是人仍下落不明:

svn merge http://rep/your_project/tag/1.0.2 http://rep/your_project/tag/1.0.4 .

现在你把所有的改变对你的躯干合并,可以让你释放(不要忘记首先测试它)。

/your_project
  /trunk
  /branches
    /1.0.0-bugfixes
    /1.1.0-bugfixes
  /tags
    /1.0.0
    /1.0.1
    /1.0.2
    /1.0.3
    /1.0.4
    /1.1.0


Answer 5:

大家都已经在这里说的那样:分支是没有死,并承诺到分支可以继续就好了。

虽然有时你想杀死合并后的分支。 唯一可靠的解决方案是要删除的分支。 缺点是,那么它很难再次找到分支,如果你想它来一看,说,由于历史的原因。 所以,很多人离开了“重要”的分支躺在身边,并具有不改变它们的协议。 我希望有一种方式来纪念一个分支死/只读,从而确保没有人可以承诺给它,直至另行通知。



Answer 6:

不,分支仍然活着,但是,在那一刻,它是完全一样的树干。 如果你继续分支发展,你可以自由地与躯干以后再次合并。



Answer 7:

您可以从一个分支合并到主干,或中继线到分支,多次你想要的。



Answer 8:

首先,你应该升级你的Subversion客户端和服务器,如果你还在使用Subversion 1.7或以上。 没有理由要使用很老的Subversion版本。 截至2016年,目前的版本是1.9颠覆。 SVN 1.8也支持现在仍然收到错误修复。

你问的问题在颠覆1.8得到解决。 与SVN 1.8开始, --reintegrate选项已被弃用 。 重返合并现在自动执行。 请参阅相关的改进Subversion的1.8版本注释条目 。

阅读SVNBook 1.8 | 重新整合的一个分支 :

如果您选择不将其重新整合到您可继续执行同步从主干合并,然后再次重新集成分支主干后删除你的分支。 如果你这样做,只有第一个复兴合并后您的分支上的修改合并到主干。

...

只有颠覆1.8支持特性分支的这个重用。 早期版本要求一些特殊的处理前一个特性分支可以重返不止一次。 请参阅本章的早期版本的详细资料: http://svnbook.red-bean.com/en/1.7/svn.branchmerge.basicmerging.html#svn.branchemerge.basicmerging.reintegrate



Answer 9:

当你做一个合并,你指定目标。 如果你喜欢,你可以合并TreeA和TreeB的差异TreeC。 正如克里斯意味着,你的问题并没有真正做出太大的意义。 如果合并你的分支到主干,分支保持不变。 如果事后又没有必要的分支,你可以将其删除。



Answer 10:

您可以继续在树枝上开发,则需要该功能合并跟踪这是在颠覆1.5,这意味着,从分支的附加合并只包括新的变化。



文章来源: Subversion branch reintegration
标签: svn merge branch