2012-06-13 140 views
7

我有一个名为“Framework”的解决方案,它是用于我的业务逻辑和数据事务的C#程序集。TFS分支推荐

我有4个应用程序使用Framework,1个网站,1个控制台应用程序和3个其他类型的应用程序。

$/TeamProject 
    /Framework 
     /Dev 
     /Main 
     /Release 
    /WebApp 
     /Dev 
     /Main 
     /Release 
    /WCFApp 
     /Dev 
     /Main 
     /Release 

我把所有这些放在一个Team Project中,每个程序集/应用程序在它自己的文件夹下。

我想为每个共享框架程序集的应用程序使用分支功能,但我不知道什么是与框架一起分支应用程序的最佳方式?

有什么建议吗?

我知道分支和合并是如何工作的,但所有的例子都只能证明分支1文件夹中包含的所有东西。

+0

所示我的源代码控制文件怎么看目前这样 –

回答

7

在代表你的源代码控制目录中选择图片的光,我会做出以下假设:

 
$/TeamProject 
    /Framework 
    /Console 
    /Web 
    /etc. 

你需要做的第一件事就是在$/TeamProject创建一个名为Main文件夹(这将是你的主要 - 又名树干 - 分支)并将所有顶级文件夹移入其中。

然后我们有:

 
$/TeamProject 
    /Main 
    /Framework 
    /Console 
    /Web 
    /etc. 

现在你需要Main转换为一个分支,可以在Main文件夹中右击做到这一点,选择“转换为分支”。 TFS现在将允许您将$/TeamProject/Main分支到$/TeamProject/ConsoleV2(例如)并处理控制台V2的功能。如果需要,您可以修改控制台应用程序和框架。完成此项工作后,您可以将更改反向集成(合并)回Main

请记住继续执行从Main的前向集成合并(合并)到您的功能分支并解决任何冲突以保持代码库同步。

通过采用这种方法,您可以在一次原子检查中修改任何产品的任何部分,例如,您可以在您的Framework上更改API,并为方法添加一个新的强制参数,您可以将其更改为所有的应用程序在同一时间,当你合并到Main一切都会更新。

+0

我知道这个评价,这个问题是,如果我想Brach我的控制台应用程序以及框架我必须支持一切...这是通常的方法吗?看起来有点过于致命 –

+0

从Source Repository中分支的地方不会改变它创建的分支的大小。我们使用这种方法来分支我们的应用程序的版本无关的几个不同部分,以便我们可以同时更新相关部分。你可以忽略你不工作的文件夹。 – DaveShaw

+0

我已经在我的团队项目中添加了一个“视觉”代码,目前我的源代码是如何构建的 –

-2

如果您想要为个别项目合并分支&,实现TFS下的唯一方法是为解决方案中的每个项目创建一个单独的TFS项目。希望这是有道理的。一旦你这样做了,那么你可以将每个项目的代码分支到你的工作目录中。

不久前,我们将代码从VSS迁移到TFS。那时候,我们不得不决定把所有的代码放到1个TFS项目中,或者把它们分开。所以,我们有一个网站,一个商业图书馆(这是由网站&使用的其他应用程序),一个数据层。我们为图书馆,网站和数据层项目创建了一个单独的TFS项目。每个项目都有一个中继分支。每个需要最新的人都会从主干中分支出他们自己的副本并合并到那里。

希望有所帮助。

+0

你是如何合并每个组装成1支? –

+0

这是事情。每个开发人员都必须保留一个本地解决方案文件。因此,如果我需要网站,图书馆和数据访问库,我会从TFS将这些分支机构转移到我的解决方案中,而不会检查解决方案。 – Skadoosh

+0

看看这些:http://stackoverflow.com/questions/400517/tfs-structure-multiple-projects-or-single-project和http://stackoverflow.com/questions/867628/merging-and-branching -shared-code-between-projects-in-tfs – Skadoosh

2

我的理解是你的主要问题是“什么是分支我的应用程序依赖于框架的最佳分支结构?”如果你总是一起构建和版本/释放它们,那么将它们一起分支为DaveShaw descibes会更简单并且更便宜;但是,如果他们每个人都是由不同的团队开发的,有不同的发布时间表,有不同的版本等等,比你想在他们每个人下创建一个MAIN分支。在这种情况下,还应该清楚谁拥有对Framework的更改。通常是一个好主意,可以将签入访问权限仅限于那些需要共享项目(如Framework)的用户。

如果后一种情况是正确的,那么我认为你当前的图形很好地处理它,但我会做出一个改变;保持您的发布与MAIN分支在层次结构中处于同一级别,以便相对路径在进行引用时保持不变;这将简化您的工作空间的映射:

$/TeamProject 
    /Framework 
     /Dev 
     /Main 
     /Release1 
     /Release2 
     /Release3 
     ... 
    /WebApp 
     /Dev 
     /Main 
     /Release 
      /Release1 
      /Release2 
      /Release3 
      ... 
    /WCFApp 
    ...