分支和合并 - TFS 2010:如何处理工作分支上的外部"branched-in"依赖项



是否有在TFS工作分支中处理外部依赖关系的既定"最佳实践"?我的意思是,我们在TFS中有一个项目,它包含常见的第三方库(在本例中,我专门处理log4net(,我们根据需要将其分支到其他项目中。现在,我们正在对一个单独的工作分支进行重大更改,这需要一个更新版本的组件。它看起来基本上是这样的:

$/ThirdParty
  /bin
    /log4net
$/Product
  /Main
    /thirdparty
      /lognet      <-- $/ThirdParty/bin/log4net
  /Working1        <-- $/Product/Main
    /thirdparty
      /log4net     <-- $/Product/Main/lognet <-- $/ThirdParty/bin/log4net

部分工作需要根据.NET4客户端配置文件重建log4net,并引入新版本。通常,当我们升级第三方组件时,它会被检入到相应文件夹中的$/Thirdparty中,然后各个项目可以自由地合并最新的二进制文件,也可以不合并。

据我所知,为了从$/ThirdParty/bin/log4net获得最新的变更集,我需要将其合并到$/Product/Main中,检查合并到TFS中,然后将该分支合并到$/Product/Working1中。这正是我想要避免的,因为我不想破坏主分支。

所以,我想有两个问题:

  1. 有没有一种方法可以让这个合并工作,而不必在主分支中检查任何内容?

  2. 是否有更好的整体策略来处理这些依赖关系,同时将它们保留在TFS中?(我知道TFS不是为二进制文件"设计的",但我们喜欢它,因为我们可以轻松地跟踪多个版本和历史记录(。

对1的回答:
对你可以从ThirdParty到Working1进行无根据的合并。这是MSDN页面:
http://msdn.microsoft.com/en-us/library/bb668976.aspx

对于2:如果您的主项目可以使用2个以上不同版本的第三方二进制文件,那么我建议将第三方二元文件的单独版本存储在$/TirdParty区域中,并且在第三方区域和主区域中的文件之间没有直接链接。

为什么不完全取消ThirdParty项目?只需将所有版本的第三方库保存在一个文件共享中,并在每个项目的树中适当地检查一个。

最新更新