2011-05-31 80 views
3

长话短说,我基本上在我们的主干中创建了一个开发分支。SVN合并帮助:在主干内创建分支

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

这里的基本结构:

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

哪里升级是我创建了分公司。在Main中有一些修改,并且在升级中修改了大量的树和文件。干净地合并这个最好的策略是什么?
非常感谢!

回答

3

嘿,其实这是一个不好的做法,创造干线内的一个分支,但由于这样做,有一种方法来合并代码...

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

在这种情况下,把你的本地系统上的完整的树当地结账,然后去到目的地目录(其中所有的代码将被合并),在这种情况下REPO/Installer/Upgrade/Installer
要么使用TortoiseSVN的或命令行合并 - svn merge http://svn.example.com/repos/REPO/Installer

一旦这种活动结束后,我会建议你到店移到分开的位置使用g svn move。这可以在保留所有历史的同时无害地完成。

3

您可以使用中继线的更改多次更新您的分支。这和运行合并命令一样简单。

步骤

  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合并--reintegrate http://svn.example.com/repos/my-branch

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

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

到目前为止,你的树干与你的分支同步,但你的分支是没用的,你也可以删除它。如果你想继续在分支工作,你将不得不为这个问题创建一个新的分支。

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

+0

虽然我很欣赏答案,它有一些有用的信息,但它不是我的问题的答案。我的箱子里有一个分支。如果我尝试合并到分支中,它会将整个分支添加到自身中。如果我尝试重新整理,我得到一个错误,因为分支文件夹中不存在分支文件夹。 – FellowMD 2011-05-31 19:46:47

+1

@FellowMD确实,在trunk中有一个分支是非常糟糕的想法,但事实是,对于SVN,这些都只是文件夹,因此,你可以按照我上面提到的方法为每个文件夹(安装程序,公用事业,主),并单独合并它们。 – 2011-05-31 20:45:56

+0

啊,这听起来像一个解决方案。我会放弃这一点。谢谢! – FellowMD 2011-05-31 21:03:56