将分支合并到主干的 Eclipse 操作

13

我想将我的开发分支合并回代码库的主干分支。 我采取的步骤如下:

  1. 切换到主干分支
  2. 检查主干分支是否是最新的,解决任何冲突
  3. 转到团队->合并
  4. 选择URL:开发分支
  5. 开始修订:分支创建时的版本
  6. 结束修订:HEAD
  7. 确定

这样应该会自动完成 - 它打开了同步视图,这很好,显示了所有冲突,但问题就在这里:

在比较编辑器中,我看到两个文件: 本地文件 | 远程文件(306)

这真的很奇怪,远程文件的修订号实际上是工作副本(主干分支)文件的修订号,内容也是一样的。本地文件具有分支文件的内容。

现在箭头正确地显示我正在从左侧(分支)合并到右侧(主干分支)。 即使我点击确定,它也是这样。

但是,我只能将更改从右侧移动到左侧!这不是我想要的-我不想用旧的主干分支内容覆盖分支中的更改。我想将左侧(分支)的内容移动到右侧(主干分支)。 但是,我甚至无法在正确的文件中写入。

我不知道为什么它会在那里写远程文件??它明显显示了工作副本文件在远程文件窗口中,而要合并的来自分支的文件在本地文件中显示。

Subversive 中的一些错误吗?

谢谢, 马丁

3个回答

6
合并在Subversive中从来都不是容易的事情(正如在这个旧的SO问题中提到的),因此在这里可能在外部进行合并(或使用subclipse)会更容易一些。
如果您的客户端和仓库都至少在SVN1.5,Subversive的新合并功能会更好,但仍然很危险,正如这个线程所示。

由于Subversive已经针对SVN 1.5进行了修改,整个合并行为已经发生了改变。我真正喜欢的一件事情是能够选择我想要的更改,将其应用于我的工作副本,然后提交到主干。
现在,Subversive不再这样做,而是强制所有更改都进入您的工作副本,然后您选择将哪些内容放入主干。

这不仅是不可取的行为,而且还很危险(如果您忽略了还原的可能性)。我更喜欢提交我知道可以工作的东西。我们有一个发布分支,其中包含可能需要迁移到主干的更改。


1
没错,合并操作在没有用户交互的情况下就会发生在你的工作副本中,这有点让人感到害怕。然后你必须与主干进行比较,并撤销不需要的更改。我更喜欢另一种方式(现在正在尝试Versions),在合并到工作副本之前,用户可以选择要合并的内容。 - martin

2

起初这似乎很神秘,现在我将为大家提供一个合理的更新答案。这涉及到使用Eclipse的SVN Subversive客户端进行合并:

你正在正确地执行合并操作,从Trunk开始,然后指向本地分支下的文件。你的文件会在“团队同步”选项卡下的“文本比较”窗口中打开。如果你在左侧导航栏中没有看到冲突,那么你的合并就已经完成了。是的,这很令人困惑和不直观。

文本比较窗口提供给你的是在提交之前撤消你的更改(或者可能已经悄悄进入你合并的文件中的任何其他更改)的能力。记住,你正在从Branch中拉取文件,所以想法是Branch文件在Trunk中,但在一种虚拟的状态下,直到最终提交,而在这里更改或撤消不需要的更改是引用Branch中的文件(显然)。这就是为什么你只有一个单向管道(从Trunk到Branch),来覆盖通过你的工作副本合并到Trunk中的那些更改。你的合并已经完成了,但还不完全正式。

如果一切看起来都正常,请右键单击导航窗口中的文件(在我的Eclipse Helios安装中,左侧面板),然后从下拉菜单中选择“接受”。然后切换回你的主代码查看选项卡(在我的安装中,它是PHP,但它可以是任何你正在使用的语言),然后将文件提交到Trunk。

如果你想测试一下,提交之前在Trunk中查看文件的“原样”,如果你正确地执行了合并,你应该会在那里看到你的更改。这似乎是在我OSX Snow Leopard Macbook Pro上工作的方式。不确定Windows或Linux用户是否相同,我假设它基本上是相同/类似的过程。


0

很容易

使用“check out as”检出主干时,可以给它一个不同的项目名称。

现在你有了本地工作副本,既有要提交的主干,也有你正在工作并已经提交到仓库的分支。 现在右键单击主干项目(我指的是项目,而不是单个文件)-合并-选择分支项目(再次,是项目) 接受所有更改以进行本地复制 像往常一样将需要提交到主干的内容提交 一切都好了,删除主干并继续在分支上工作

特别是对于分支,这似乎非常容易,并且对我来说非常有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接