【问题标题】:Eclipse Merge Branch into TrunkEclipse 将分支合并到主干
【发布时间】:2010-01-19 11:21:15
【问题描述】:

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

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

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

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

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

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

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

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

Subversive 中的一些错误?

谢谢, 马丁

【问题讨论】:

    标签: eclipse svn subversive


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 这是真的..合并发生在您的工作副本之前(没有用户交互)有点可怕。然后您必须与主干进行比较并恢复不需要的更改。我更喜欢它,(现在尝试版本),在合并到工作副本之前,用户可以选择要合并的东西。
    【解决方案2】:

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

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

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

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

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

    【讨论】:

      【解决方案3】:

      很简单

      用 check out as... 签出trunk 给一个不同的项目名称。

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

      尤其是分支,这看起来超级简单,对我来说就像一个魅力

      【讨论】:

        猜你喜欢
        • 2011-11-25
        • 2011-04-06
        • 2013-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-30
        • 2011-07-20
        • 1970-01-01
        相关资源
        最近更新 更多