7

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

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

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

我将所有这些都放在一个团队项目中,每个程序集/应用程序都在其自己的文件夹下。

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

有什么建议么?

我知道分支和合并是如何工作的,但所有示例仅演示分支包含在 1 个文件夹中的所有内容。

4

3 回答 3

7

根据代表您的源代码控制目录的图片,我将做出以下假设:

$/团队项目
   /框架
   /安慰
   /网络
   /ETC。

您首先需要做的是创建一个名为Mainin的文件夹$/TeamProject(这将是您的 Main - aka trunk - 分支)并将所有顶级文件夹移动到其中。

那么我们有:

$/团队项目
   /主要的
     /框架
     /安慰
     /网络
     /ETC。

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

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

通过采用这种方法,您可以在单个原子签入中修改任何产品的任何部分,例如,您更改框架上的 API 添加新的强制参数到方法,您可以在所有应用程序中更改它同时,当你 RI 合并到时,Main一切都会更新。

于 2012-06-13T20:53:13.497 回答
2

据我了解,您的主要问题是“对依赖于框架的应用程序进行分支的最佳分支结构是什么?” 如果您总是一起构建和版本/发布它们,那么像 DaveShaw 所描述的那样将它们全部分支在一起会更简单且成本更低;但是,如果它们中的每一个都是由不同的团队开发的,有不同的发布时间表,有不同的版本等等……那么您将希望在每个分支下创建一个 MAIN 分支。在这种情况下,还应该清楚谁拥有对框架的更改。控制签入访问权限通常是一个好主意,只有那些需要共享项目(如 Framework)的人才能访问。

如果后一种情况属实,那么我认为您当前的图形处理得很好,但我会做一个改变;在层次结构中将您的版本与 MAIN 分支保持在同一级别,以便相对路径保持相同以进行引用;这将简化您的工作区映射:

$/TeamProject
    /Framework
        /Dev
        /Main
        /Release1
        /Release2
        /Release3
        ...
    /WebApp
        /Dev
        /Main
        /Release
            /Release1
            /Release2
            /Release3
            ...
    /WCFApp
    ...
于 2012-06-14T22:37:36.993 回答
-2

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

不久前,我们将代码从 VSS 迁移到了 TFS。那时,我们不得不决定将所有代码放入 1 个 TFS 项目中,或者将它们拆分出来。因此,我们有一个网站、一个业务库(由网站和其他应用程序使用)、一个数据层。我们为库、网站和数据层项目创建了一个单独的 TFS 项目。每个项目都会有一个主干分支。每个需要最新版本的人都会从主干中分支他们自己的副本并合并回来。

希望有帮助。

于 2012-06-13T20:39:13.177 回答