13

我正在尝试将我的开发分支合并回我的仓库的主干中。我采取的步骤:

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

这应该有魔力 - 它打开了同步视图,这很好,向我展示了所有冲突,但问题发生了:

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

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

现在箭头正确显示我正在从左到右合并(分支到主干)。当我单击确定时也会发生这种情况。

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

我不知道为什么它在那里写远程文件?它在远程文件窗口中清楚地显示了工作副本文件,并且来自分支的文件(用于合并)显示在本地文件中。

Subversive 中的一些错误?

谢谢,马丁

4

3 回答 3

6

颠覆性的合并从来都不是一件容易的事(正如在这个旧的SO 问题中提到的那样),所以在外部进行合并(或使用 subclipse)可能会更容易。

如果您的客户端和存储库都至少在 SVN1.5 中,Subversive 的新合并功能会更好,但仍然很危险,如该线程所示。

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

这不仅是不受欢迎的行为,而且也是危险的(如果你忽略了恢复的可能性)。我更喜欢提交我知道有效的事情。我们有一个发布分支,它获取可能需要也可能不需要迁移到主干的更改。

于 2010-01-20T07:42:36.413 回答
2

好吧,起初这似乎很神秘,现在我将为每个人更新这个答案提供一个不错的尝试。这涉及使用 Eclipse 的 SVN Subversive 客户端进行合并:

您正在正确地进行合并,从主干开始,然后指向本地分支下的文件。您的文件将在“团队同步”选项卡下的“文本比较”窗口中打开。如果您在左侧导航栏中没有看到冲突,那么您的合并刚刚发生。是的,这令人困惑且不直观。

文本比较窗口为您提供的是在您提交之前撤消您的更改(或任何其他可能已经进入您的合并文件不知情的更改)的能力。请记住,您是从 Branch 中拉入文件,因此想法是 Branch 文件位于 Trunk 中,但在最终提交之前处于一种虚拟的边缘,并且此处更改或撤消不需要的更改会引用 Branch 中的文件(显然)。这就是为什么您只有一个单向管道(Trunk to Branch)来覆盖那些通过您的工作副本合并到 Trunk 中的更改。您的合并已经发生,但还不是很正式。

如果一切正常,右键单击导航器窗口中的文件(我的 Eclipse Helios 安装中的左窗格)并从下拉列表中选择接受。然后单击返回到您的主要代码查看选项卡(在我的安装中它是 PHP,但它可以是您使用的任何东西),然后将文件提交到 Trunk。

如果您想对此进行测试,请在提交之前在 Trunk 中“按原样”查看文件,如果您已正确完成合并,您应该会看到您的更改反映在那里。这似乎是它在 OSX Snow Leopard Macbook Pro 上为我工作的方式。不确定对于 Windows 或 Linux 人员是否相同。我认为它本质上是相同/相似的过程。

于 2011-07-11T18:38:32.000 回答
0

这很简单

签出主干并签出为... 给出不同的项目名称。

现在,您在本地拥有作为工作副本、要提交到的主干以及您正在处理的分支以及您已将其更改提交到存储库。现在右键单击主干项目(我的意思是项目,而不是单个文件) - 合并 - 选择分支项目(再次,项目)接受对本地副本的所有更改提交你需要的主干,就像以前一样,再次删除主干并继续在分支上工作

尤其是分支,这似乎超级简单,对我来说就像一种魅力

于 2011-09-21T09:41:38.057 回答