SVN合并帮助:在主干内创建分支

时间:2011-05-31 18:41:29

标签: svn merge tortoisesvn

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

大约两个星期前,我决定在我们的存储库中创建一个单独的分支是有意义的,因为我们最终切换到visual studio 2010.我没有阅读尽可能多的颠覆书,因为我应该有

这是基本结构:

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

升级是我创建的分支。 Main中已经进行了一些修改,并且在升级过程中对整个树和文件进行了修改。干净地合并这个的最佳策略是什么? 非常感谢!

2 个答案:

答案 0 :(得分:3)

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

步骤

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

    svn merge http://svn.example.com/repos/trunk

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

  6. 将修改提交到您的分支。
  7. 到目前为止,您的分支与主干同步。

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

    步骤

    1. 查看行李箱的副本。
    2. 如果您已经在沙盒中有一个主干副本,请确保提交所有待处理的更改。
    3. 将您的分支与主干中的最新更改同步,如上面其他配方中所述。
    4. 确保更新到最新的主要版本(svn update -r HEAD)。
    5. 然后将分支重新集成到主干中:

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

    6. 运行上面的命令只会将修改下载到沙盒中。在那里,您可以查看它们,解决任何冲突,并在准备好后......

    7. 在您的主干中提交修改。
    8. 到目前为止,你的trunk与你的分支同步,但你的分支是没用的,你也可以删除它。如果你想继续在分支机构工作,你将不得不为此事创建一个新分支。

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

答案 1 :(得分:3)

嘿,实际上这是在trunk中创建分支的一种不好的做法,但是既然这样做了,就有办法合并代码......

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

合并

在这种情况下,请在本地系统上本地签出完整的树,然后转到目标目录(要合并所有代码),在这种情况下REPO/Installer/Upgrade/Installer
使用 TortoiseSVN 或按命令行合并 - svn merge http://svn.example.com/repos/REPO/Installer

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