问题描述
|
长话短说,我实质上是在我们的后备箱中创建了一个开发分支。
大约两周前,我决定在存储库中创建一个单独的分支是有意义的,因为我们最终要切换到Visual Studio2010。我没有像应该那样阅读太多的Subversion书籍。
基本结构如下:
REPO/
Installer/
Utilities/
Main/
Upgrade/
Installer/
Utilities/
Main/
我创建的分支在哪里升级。在Main中进行了一些修改,并且在升级过程中对树和文件进行了大量修改。完全合并的最佳策略是什么?
非常感谢!
解决方法
嘿,实际上这是在主干中创建分支的一种不好的做法,但是既然完成了,就有一种合并代码的方法...
不要合并完整的树,而是合并单个文件夹。
例如;
如果您需要将分支合并回主干,
1.将ѭ1目录与with2合并
在这种情况下,请在本地系统上对整个树进行本地检出,然后转到目标目录(所有代码都将在此合并),在这种情况下为“ 2”
使用TortoiseSVN或通过命令行合并-
svn merge http://svn.example.com/repos/REPO/Installer
完成此活动后,建议您使用svn move
将Branch移到另一个位置。在保留所有历史记录的同时,可以做到无害。
, 您可以使用主干中的更改多次更新分支。它就像运行合并命令一样容易。
脚步
签出分支机构的副本。
如果您已经下载了分支的副本,请确保提交其中包含的所有待处理项。
为了确保一致性,将您的分支更新为总修订版(svn update -r HEAD
)。
然后将您的更改从主干合并到分支中:
svn合并http://svn.example.com/repos/trunk
运行上面的命令将简单地将修改从主干下载到沙箱中。在这里,您可以查看它们,解决任何冲突,以及在准备好...时。
将修改提交到您的分支。
至此,您的分支与干线同步。
另一方面,如果要通过分支的修改来更新主干,则必须非常小心。这称为重新整合,只能进行一次。也就是说,将分支重新集成到主干后,将无法再次运行此过程。
脚步
签出您的行李箱副本。
如果您的沙箱中已经有中继的副本,请确保提交您所做的所有未决更改。
如上面其他食谱所述,将分支同步到中继的最新更改。
确保更新到最新的磁头版本(svn update -r HEAD
)。
然后将分支重新整合到主干中:
svn merge-重新整合http://svn.example.com/repos/my-branch
运行上面的命令将简单地将所做的修改下载到您的沙箱中。在这里,您可以查看它们,解决任何冲突,以及在准备好...时。
在您的行李箱中提交修改。
到目前为止,您的中继与分支保持同步,但是您的分支没有用,您最好将其删除。如果要继续在分支中工作,则必须为此创建一个新的分支。
如果您不打算使分支无效,那么唯一的解决方案是创建具有差异的补丁文件,并确保两个代码库相等或手动复制修改。