长话短说,我基本上在我们的主干中创建了一个发展分支。
大约两个星期前,我决定在我们的存储库中创建一个单独的分支是有意义的,因为我们最终切换到visual studio 2010.我没有阅读尽可能多的颠覆书,因为我应该有
这是基本结构:
REPO/
Installer/
Utilities/
Main/
Upgrade/
Installer/
Utilities/
Main/
升级是我创建的分支。 Main中已经进行了一些修改,并且在升级过程中对整个树和文件进行了修改。干净地合并这个的最佳策略是什么? 非常感谢!
答案 0 :(得分:3)
您可以使用中继更改多次更新分支。它就像运行合并命令一样简单。
步骤
svn update -r HEAD
),以确保一致性。然后将您的更改从主干合并到您的分支中:
svn merge http://svn.example.com/repos/trunk
运行上面的命令只会将修改从主干下载到您的沙箱中。在那里,您可以查看它们,解决任何冲突,并在准备好后......
到目前为止,您的分支与主干同步。
另一方面,如果你想要的是通过分支的修改来更新主干,那么你必须非常小心。这称为重新整合,只能进行一次。也就是说,一旦您将分支重新集成到主干,您将无法再次运行此过程。
步骤
svn update -r HEAD
)。然后将分支重新集成到主干中:
svn merge --reintegrate http://svn.example.com/repos/my-branch
运行上面的命令只会将修改下载到沙盒中。在那里,您可以查看它们,解决任何冲突,并在准备好后......
到目前为止,你的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
将分支移至单独的位置。这可以无害地完成,同时保留所有历史。