Eclipse合并分支到主干
Eclipse合并分支到主干
我正在尝试将我的开发分支合并回我的仓库主干。我采取了以下步骤:
- 切换到主干
- 检查它是否是最新的,解决任何冲突
- 转到“Team->Merge”
- 选择URL :开发分支
- 开始修订:分支创建时的修订
- 结束修订:HEAD
- 确定
这应该会做到神奇的事情-它打开了同步视图,这很好,显示了所有冲突,但是问题在于:
在比较编辑器中,我看到两个文件:
Local File | Remote File (306)
这真的很奇怪,远程文件的修订号实际上是工作副本(主干)中的一个文件的修订号,因此其内容也是如此。本地文件具有分支文件的内容。
现在箭头正确地显示我正在从左到右进行合并(从分支到主干)。当我点击确定时,这也会发生。
但是,我只能将更改从右到左移动!!!这不是我想要的-我不想用旧的主干内容覆盖分支的更改。我要将内容从左(分支)移动到右(主干)。但是,我甚至不能在正确的文件中编写。
我不知道为什么它会在那里写远程文件???明显地,它在远程文件窗口中显示了工作副本文件,而在本地文件中显示了分支文件(用于合并)。
Subversive中的一些错误?
谢谢,
马丁
一开始这似乎很神秘,现在我将为大家提供一个不错的更新答案。这涉及使用Eclipse的SVN Subversive客户端进行合并:
您正在正确地进行合并,从Trunk开始,然后指向您本地分支下的文件。您的文件将在“文本比较”窗口下,在Team Synchronizing选项卡下打开。如果您在左侧导航栏中没有看到冲突,则您的合并刚刚完成。是的,这很令人困惑,也不直观。
文本比较窗口为您提供了在提交之前撤消您的更改(或者其他任何可能未被注意到的合并文件中的更改)的能力。请记住,您正在从Branch拉入文件,因此想法是分支文件在Trunk中,但处于一种虚拟的状态,直到最终提交,并且在此处更改或撤消不需要更改的更改会引用分支中的文件(显然)。这就是为什么您只有一个单向管道(从Trunk到Branch),以覆盖通过您的工作副本合并到Trunk中的更改。您的合并已经完成,但还不太正式。
如果一切看起来符合要求,在导航器窗口中右键单击文件(在我的Eclipse Helios安装程序中的左窗格中)并从下拉菜单中选择“接受”。然后单击切换到您的主代码查看选项卡(在我的安装程序中,它是PHP,但可能是您正在使用的任何其他语言),然后将文件提交到Trunk。
如果您想要测试一下,可以在提交之前查看Trunk中的文件的“原样”,如果您正确地进行了合并,则应该在那里看到反映您的更改。在我使用的OSX Snow Leopard Macbook Pro上,这似乎是工作方式。不确定Windows或Linux用户是否相同。我认为它本质上是相同/类似的过程。
使用Subversive进行合并从来都不容易(如旧SO问题中所述),因此在外部(或使用subclipse)进行合并可能会更容易。
如果您的客户端和存储库都至少在SVN1.5,Subversive的新合并功能会更好,但仍然危险,正如此线程所说明的那样。
由于Subversive已针对SVN 1.5进行了修改,整个合并行为已经发生了变化。我真正喜欢的一件事是能够选择我想要的更改,将其应用于我的工作副本,然后提交到主干。
Subversive现在不再这样做,而是将所有更改强制应用于您的工作副本,然后您选择要放入主干的更改。这不仅是不需要的行为,而且还很危险(如果您忽略回退的可能性)。我更喜欢提交我知道可以工作的东西。我们有一个发行分支,它接收可能需要迁移到主干的更改。