2012-01-11 35 views
4

我有两个服务包分支从TFS 2010中的一个“主”分支出来。我想将一个变更集从一个服务包分支“传输”到另一个,而不通过主分支进行升级,也没有进行无基本的合并。是否有一种简单的方法在一个分支中创建补丁,然后将其应用于TFS 2010中的另一个分支?

'main'分支包含一个冲突的更改集,我不想与第一个Service Pack分支中的更改集进行合并。我希望第二个服务包分支以未修改的形式接收该更改集。

无基础的合并将创建两个分支之间的链接。我不希望这样的链接出现在合并对话框中。

是否有一种简单的方法在一个分支中创建补丁,然后将其应用到另一个分支?就像在Subversion中一样。

P.S.我不打算改变分支结构来适应这种情况。整体结构要复杂得多,我所描述的和它可以容纳一些发行版,服务包,sub-releses等等。它遵循众所周知的分支指导原则。

+0

你能说明你的分支结构吗?一定要显示分支路径。 – 2012-01-12 00:02:20

回答

3
什么的唯一方式

所以,你有这样的事情:

------------------------------------> MAIN 
     \   \ 
     \   \ 
     A   B 

你可以做一个B”分支出来B的:

------------------------------------> MAIN 
     \   \ 
     \   \ 
     A   B 
        \ 
        \ 
         B' 

然后从A->B'做一个毫无根据的合并。之后,合并B'->B。继续&破坏B'。虽然我从来没有这样做过,但它应该起作用。

+0

我刚刚测试过这一个。完美的作品。 B中设置的更改包含所有历史记录,并且合并尽可能干净。即使在我完全删除(转换为文件夹并删除)B'后,我仍然可以在历史中看到它在B中的变更集。这就是我想要实现的。对于非TFS有福的人来说,它比其他答案更容易。 – Dennis 2012-01-12 14:07:38

+0

我很高兴它为你工作! – pantelif 2012-01-12 14:51:24

2

一种方法:

  • 地图两个分支(A和B)到您的电脑上单独的文件夹。
  • 找到您要合并到B中的更改(查看分支的源代码管理历史记录,找到更改集并双击它们以列出chnaged文件),并在目标分支中检查它们。 (替代方案:检查所有文件 - TFS将在登记时丢弃未更改的文件。或者拔下网线,然后运行VS,它将脱机。合并后,使用文件>源代码管理>联机重新联机并检查任何更改的文件)
  • 使用合并工具(我推荐Beyond Compare,Araxis,除了VS中应该做的可怕事情之外的任何东西)从分支A中的每个文件合并到eqiuivalent文件中支路B
  • 构建和测试支路B
  • 入住

这将避免使用TFS做任何合并的,所以它不会知道它的合并。这将只是觉得你已经写了很多代码在支路B相当快:-)

另一种方法:

  • 合并的变更到你的主分支从A.在合并,包括两个代码的变体,并添加#if围绕新代码块和旧代码块的命令,以便它们并排共存,并且通过简单的定义在主干线中“启用”服务包。默认情况下,这个定义不应该被定义,所以主分支代码的二进制输出不受影响。即

    #if SERVICE_PACK_A 
        ...ServicePackA code... 
    #else 
        ...original Main branch code... 
    #endif 
    
  • 现在合并换下来到支路B

+0

我正在寻找会带来变化但不是整个文件的内容。 TFS相关的东西 – Dennis 2012-01-11 23:30:47

1

我的回答是类似于贾森 - 威廉姆斯的。如果你想留在“内部”的TFS,那么你只有2个选项。执行无基本的合并,或从A合并到Main,然后从Main合并到B.

由于您不想执行其中任何一项,您需要执行TFS外部的合并。

您需要的工具: 团队资源管理器,Team Foundation Power Tools,第三方合并工具。我喜欢Sourcegear DiffMerge(因为它是免费的),但是Araxis,Beyond Compare和Winmerge都可以工作。 (顺便说一句,你可以configure TFS to use a 3rd party merge tool(再次感谢杰森!))

  1. 获取最新两个服务包分支
  2. 退房目标分支
  3. 使用合并工具做2之间的文件夹比较本地文件夹
  4. 合并从A进行适当的更改到B
  5. 在命令行中运行tfpt uu对B的本地副本,这将撤消并没有改变作为合并的一部分的任何文件的检出。 (这需要TFS电动工具安装。)
  6. 入住B中

未决的改变这是不是很大,但我认为这是做你想要达到

相关问题