在TFS中合并和分支项目之间的共享代码

时间:2009-05-15 08:49:14

标签: version-control tfs

我目前负责将我们的asp.net应用程序从源安全迁移到TFS。我们有三个或四个非常相似的应用程序(让我们说电子商务),它们目前共享一个核心库(服务,业务逻辑,实体,数据访问等)。

应用程序类似但不完全相同,因此一个应用程序可能会获得其他人无法获得的功能集等。

我想停止共享代码,而是设置分支(如果适合),所以如果我在应用程序A:核心库中更改某些内容,我将需要将更改与其他分支合并而不是获取更改自动。这样可以避免在从主干更新时出现意外情况,并且突然核心已经针对另一个项目进行了更改,并且该项目在某种程度上会中断。

有关如何在TFS中设置此内容的任何建议?我是否应该在任何项目中直接使用“主”核心,而该项目是所有其他核心的父级,因此我可以将更改从一个核心推送到那个核心,然后将其分发到其他核心?这是否有意义并且在TFS中设置是否容易?

4 个答案:

答案 0 :(得分:3)

在回复您的评论时,我建议您阅读CodePlex网站上的Feature branches

  

场景4 - 功能分支
  在这种情况下,您创建一个   开发部门,开展工作   那个分支,然后合并你的工作   回到主源树。您   组织你的开发分支   基于产品功能。该   以下是物理视图   分支功能开发:

     

我的团队项目

      Development -> Isolated development branch container  
        Feature A -> Feature branch  
           Source  
        Feature B -> Feature branch  
          Source  
        Feature C -> Feature branch  
          Source  
        Main      -> Main Integration branch
          Source

我们在不久的将来会从SS转移到TFS

在我看来,我们将保持SS存储库在线,并在TFS重新开始。我们的框架可能会在TFS中获得自己的项目。项目特定的共享单位需要不时合并。


构建存储库的方式取决于您的具体情况。每个分支场景都有其特定的优点和缺点。

  • 有多少个项目
  • 有多少开发者
  • 开发人员是否专注
  • 您是否需要并发热修复
  • 您需要服务包吗

查看CodePlex branching guide以获取有关TFS结构的明智决策所需的所有信息。打印出cheat sheets并将它们固定在墙上以便快速参考。

  

在执行分支计划之前,   注意这个警示   消息 - 您创建的每个分支都有   有成本所以请确保你得到一些   它的价值。的机制   TFS中的分支简化为a   单击右键单击分支命令。   但是,分支的总成本   通过降低代码速度来支付   主要的,合并冲突和额外的   测试可能很昂贵。

答案 1 :(得分:2)

我假设您已经调查过您是否真的需要制作“复制”单独的团队项目。请记住,“团队项目”的TFS概念是一个非常大的高级容器。这与大多数IT商店认为的“项目”不同。将“Microsoft Vista”或“Office 2007”视为一个项目,而不是将“公司XYZ的应收帐款系统的新版本”视为团队项目意义上的项目。

我有一个客户决定一个TFS团队项目。这没有什么不妥 - 在许多情况下它确实是最好的情况。

如果你真的需要在你的应用程序副本之间有一个非常强大的隔离(也许他们是单独的客户,你需要非常强大的安全分离),并且必须有单独的团队项目。

那说 - 你还是 - 因为你已经说过需要在你的应用程序实例之间共享代码。我强烈建议的第一件事是远离“剪切和粘贴”共享。我真的会尝试将共享代码隔离成一个单独的解决方案并为其生成二进制文件(也许你已经完成了这个!)

Codeplex TFS中涵盖了这一点:http://tfsguide.codeplex.com/

我为几个客户做的另一种方法是拥有一个包含共享代码的团队项目。 “Build”为共享代码创建二进制文件 - “Deploy”只是将它们复制到“已知位置”(即构建机器上的UNC共享)

对于作为“框架”的“消费者”的应用程序,我们只使用“AdditionalReferencesPath”项目组来包含该已知位置的位置。

此外 - 此工具:http://tfsdepreplicator.codeplex.com/可能会有所帮助。这样,无论何时构建“框架”解决方案,都可以为“消费者”项目自动触发构建。

答案 2 :(得分:0)

我的简要回答是,您应该只设置一个“TFS项目”,只需将您的不同项目(即您的个人应用程序和每个共享库)组织为该TFS项目下的单独文件夹。另一种方法是在每个应用程序中包含共享库的特定(二进制)构建 - 如果您这样做,那么您可以将每个应用程序组织到它自己的TFS项目中,这样您就无法合并更改或在不使用TFS的情况下分支这些项目命令行(以及一些非显而易见的引导命令)。

答案 3 :(得分:0)

我试图确定相同的信息,这个关于codeplex的指南是完美的

http://vsarbranchingguide.codeplex.com/releases

包括术语和不同的分支工作流程方法以及备忘单。