【问题标题】:SVN merge help: Created branch within a trunkSVN 合并帮助:在主干内创建分支
【发布时间】:2011-05-31 18:41:29
【问题描述】:

长话短说,我基本上在我们的主干中创建了一个开发分支。

大约两周前,我决定在我们的存储库中创建一个单独的分支是有意义的,因为我们最终要切换到 Visual Studio 2010。我没有阅读应有的那么多的颠覆书籍.

这是基本结构:

REPO/
  Installer/
  Utilities/
  Main/
  Upgrade/
    Installer/
    Utilities/
    Main/

升级是我创建的分支。 Main 中进行了一些修改,升级中还有大量的树和文件修改。干净地合并此内容的最佳策略是什么?
非常感谢!

【问题讨论】:

    标签: svn merge tortoisesvn


    【解决方案1】:

    嘿,实际上在主干中创建分支是一种不好的做法,但是既然这样做了,那么就有一种方法可以合并代码...

    不要合并完整的树,而是合并单个文件夹。
    例如;
    如果您需要将分支合并回主干,
    1.将REPO/Installer目录与REPO/Installer/Upgrade/Installer合并

    在这种情况下,请在本地系统上对整个树进行本地检出,然后转到目标目录(所有代码都将在其中合并),在这种情况下为 REPO/Installer/Upgrade/Installer
    使用 TortoiseSVN 或通过命令行合并 - svn merge @987654321@

    此活动完成后,我建议您使用 svn move 将分支移动到单独的位置。这可以在保留所有历史记录的同时无害地完成。

    【讨论】:

      【解决方案2】:

      您可以使用主干中的更改多次更新您的分支。它就像运行一个合并命令一样简单。

      步骤

      1. 查看您的分支的副本。
      2. 如果您已经下载了分支的副本,请确保提交其中的所有待处理项目。
      3. 将您的分支更新为头版本 (svn update -r HEAD) 以确保一致性。
      4. 然后将您的更改从主干合并到您的分支中:

        svn 合并http://svn.example.com/repos/trunk

      5. 运行上面的命令只会将修改从主干下载到沙箱中。您可以在那里查看它们、解决任何冲突,并在准备就绪时......

      6. 将修改提交到您的分支。

      到目前为止,您的分支已与主干同步。

      另一方面,如果您想要使用分支的修改来更新主干,那么您必须非常小心。这称为重新整合,并且只能执行一次。也就是说,一旦您将分支重新集成到主干,您将无法再次运行此过程。

      步骤

      1. 检查您的行李箱副本。
      2. 如果您的沙箱中已有主干副本,请确保提交您拥有的所有待处理更改。
      3. 将您的分支同步到您的主干中的最新更改,如上面其他配方中所述。
      4. 确保更新到最新的头部版本 (svn update -r HEAD)。
      5. 然后将分支重新整合到主干中:

        svn merge --reintegrate http://svn.example.com/repos/my-branch

      6. 运行上述命令只会将修改下载到您的沙箱。您可以在那里查看它们、解决任何冲突,并在准备就绪时......

      7. 在您的主干中提交修改。

      到目前为止,您的主干与您的分支同步,但是您的分支没有用,您不妨将其删除。如果您想继续在分支中工作,则必须为此创建一个新分支。

      如果您不打算使您的分支失效,那么您唯一的解决方案是创建具有差异的补丁文件并确保两个代码库相同或手动复制修改。

      【讨论】:

      • 虽然我很欣赏这个答案,并且它提供了一些有用的信息,但这并不是我问题的真正答案。我的后备箱里有一根树枝。如果我尝试合并到分支中,它会将整个分支添加到自身中。如果我尝试重新启动,我会收到一个错误,因为分支中不存在分支文件夹。
      • @FellowMD 确实在主干中有一个分支是非常糟糕的主意,但问题是对于 SVN,这些都只是文件夹,因此,您可以按照我上面所说的方法树干的每个文件夹(安装程序、实用程序、主文件夹)并将它们单独合并。
      • 啊,这听起来像是一个解决方案。我会试一试的。谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-03
      • 2010-11-25
      • 2018-11-08
      • 2015-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多