关于做一个困难的WinForms与subversion合并的建议?

时间:2011-08-15 16:31:38

标签: winforms svn merge tortoisesvn ankhsvn

我的经理希望我将Subversion主干中的一些特定功能移到我们几个月前用于测试版的分支。

这是一个使用WinForms的多项目VS2008解决方案。其他项目主要是支持主项目的DLL,主要是UI代码。

我们同时使用Ankh和Tortoise。

所有项目都有多处更改,但我只想将部分更改合并到分支中。

我一直在使用TortoiseMerge,合并我的主要表单,编译,然后根据编译错误合并相关项目,但是进展非常缓慢。

我遇到的问题:

  • 将更改合并到触及.cs和.designer.cs文件的表单
  • 依赖于对其他项目的更改的更改,这些更改将级联到更多项目等。

有关更好的方法的任何建议吗?

2 个答案:

答案 0 :(得分:1)

如果您可以访问命令行,则可以尝试通过指定包含您需要移动的特定功能的最小和最大修订版,使用svn diff从每个分支(或主干)生成修补程序。

这些补丁(可能)不会自动应用于目标分支,但返工量将最小化。当然,您应该从最古老的功能开始,然后按照自己的方式工作。

修改

我有另一个想法/建议。您可以将beta目标分支的内容与主干上的内容同步,然后停用老板在beta分支上不需要的功能。它可能意味着比通过补丁移动功能补丁更少的工作。

答案 1 :(得分:1)

经过大量的SVN合并后,我得出结论,我最好的方法是手动将我想要的功能合并到beta分支。

似乎是完全控制流程的最佳方式,只能获得我想要的更改。

Winforms .designer.cs文件是最大的问题。当您添加新控件时,VS设计器会移动很多东西,这会在尝试合并时产生各种冲突,这很难解决。

修改

这是我最终做的事情:

  1. 在单独的Visual Studio中打开trunk和branch项目 实例
  2. 对于每个表单,从主干到分支复制并粘贴新控件, 使用VS IDE设计器。这确保了.designer.cs 文件有效。
  3. 使用WinMerge逐行合并表单的.cs文件 基础,所以我只接受了我想要的改变。 (在某些情况下 - 当我想要所有的更改 - 我只是复制了整个文件 从主干到分支文件夹。)
  4. 尝试构建项目,这通常会导致编译错误
  5. 根据错误,将其他文件与WinMerge合并,直到我有了 清理编译
  6. 重复上述步骤,直到合并了所有我想要的功能
  7. 测试了所有合并的功能
  8. 一旦我找到基本方法,它就会非常顺利。