节选自《Visual Studio Team System更佳敏捷软件开发》第8章“设置TSF版本控制”8.1节
8.1 架构你的团队项目(Structuring Your Team Project)
Team Foundation版本控制(TFVC)系统在安装Team Foundation Server(TFS)的过程中就已经设置好了,其相关的工具也随着Visual Studio Team Suite(或其他的编辑环境)安装在你的桌面上了,因此,大多数涉及项目设置版本控制的工作是关于你的存储库如何组织的问题,以使团队中的成员都能很容易地找到所需的东西。
产品和探索文件夹(Production and Spike Folders)
在Visual Studio Team System(VSTS)中,所有TFVC存储库中的根目录必须属于团队项目,这反映了一个事实,即存储库中的材料的基层结构是项目团队。开发团队可以在他们认为合适的根目录中自由构建他们在存储库中的那部分内容,但我们建议你在开始的时候就创建一个分离的区域,一部分区域存储你的开发团队打算交付商业应用的材料,一部分区域存储所有的非产品代码或测试,它们可能是不断开发出来的。
提醒:使用简单的规则,所有的东西都放进探索目录中,这些规则只是根据团队的产品标准开发的代码和产品目录层次。
练习8-1:在你的存储库中创建文件夹
以下的练习中创建了两个文件夹,分别是Production和Spike,它们都在$/OSPACS存储库的根目录下。
以Peter(OSPACS成员)的身份登录到开发PC上,打开Visual Studio,然后连接OSPACS团队项目,如第5章的练习5-7所描述的那样,有关这个PC机和Luke的安全组的项目信息请见附录A。
打开源代码资源管理器(视图|其他窗口),选择在第5章练习5-1中创建的$/OSPACS根文件夹,然后在上下文菜单(右击鼠标|获得最新版本)中选择获得最新版本。
浏览打开的文件夹对话框,因为你还没有在开发PC2上定义一个工作区的目录。因此,为这个工作区创建一个C:\Peter\OSPACS目录,并点击“OK”关闭这个对话框,然后完成获取最新版本操作。
在你的源代码控制资源管理器中选择 $/OSPACS根目录,然后在 $/OSPACS下创建两个文件夹,命名为“Production”和“Spike”,在源代码控制菜单中选择新建文件夹(文件|源代码控制|新建文件夹)。
重复步骤2,使你的工作区和存储库同步,这样Production 和Spike目录就会创建在C:\Peter\OSPACS中。
描述在进行原型工作时,敏捷团队经常使用术语spike——探索,用于探索他们的项目的某些方面。通常,一个开发人员会存储一些代码在个人的搁置集中(请见第9章中的练习9-6),当代码不再需要时会被抛弃。但是我们建议你在团队项目的根目录下创建一个标准的存储库文件夹,叫Spike,用于强调一个事实,在这个文件夹中找不到一个代码可以用于产品目标。在你的项目开始的时候定义这个文件夹,将有助于确认是否坚持了这个策略。
警告:在一个探索中产生的软件绝不能简单地粘贴到产品代码中,相反,它必须使用团队采用的产品标准和做法完全进行重写。(例如,结对编程、首先测试编程,等等。)
Visual Studio 解决方案、项目和目录的组织(Organization of Visual Studio Solutions, Projects, and Directories)
一个团队项目通常与一个或多个Visual Studio的解决方案有关,每个解决方案都包含一个独立的Visual Studio项目集合。你的团队应该采用一个标准的目录架构,用于存储这些解决方案和项目,因为这样可以鼓励人们正确地放置文件,别人也可以更容易地找到这些文件。例如,OSPACS团队有两个Visual Studio解决方案:一个是其图片管理产品osImageManager,另一个是其网站产品ospacsWeb。
因此,开发团队可能决定整理这些文件和目录,在其存储库中的$/OSPACS/Production文件夹下以如下结构创建osImageManager解决方案:
osImageManager——包含开发团队须要共享的Visual Studio解决方案文件。
– Db——包含数据库脚本、重构产品数据库、运行查询等;
– Documents——包含开发团队的文档,如须要添加到TFVC版本控制中的发布产品所需的注释,而不是将其放到SharePoint的文档库中;
– Help——包含所需产品的帮助文件(*.chm);
– Install——包含所需的安装程序;
– Libs——包含采用的第三方类库;
– Src——属于这个解决方案的各种Visual Studio项目的根目录,并且可以在一起生成(生成|生成解决方案);
– osImageManagerApp——Windows Forms 应用,提供图形化用户界面的启动项目;
– osImageManagerLib——包含大多数代码的类库;
– osImageManagerUT——包含osImageManagerLib 类库的单元测试的测试项目(请见第5篇的第12章);
– osImageManagerCT——包含osImageManagerLib 类库的一般测试的测试项目(请见第24章);
– osImageManagerFIT——包含用于osImageManager的框架集成测试(FIT)的类库(请见第22章);
– Utils——各种各样的脚本、分支文件和开发所需的信息。
提醒:只有当你有多个Visual Studio 项目组成的一个集合并且希望其作为一个单元生成的时候,才会考虑创建另一个Visual Studio 解决方案。同一解决方案中的项目将在一起生成。
练习8-2:添加一个Visual Studio解决方案到一个目录结构中
在这个练习中,你将作为Peter在开发PC2中使用一些目录,然后创建一个空的Visual Studio解决方案“osImageManager”。采用这种方式,在Peter的工作区目录和存储库中的对应文件夹之间映射这些文件。
使用窗口资源管理器(或类似的东西)在开发PC2中的Peter的目录下创建图8-1中所示的目录。在每个目录中,创建一个index.txt文件,这样你就可以将目录的用途文档化了。
为osImageManager产品创建一个空的Visual Studio解决方案:
(1)从菜单条上选择“文件|项目”打开新建项目对话框;
(2)在其他项目类型节点中选择“Visual Studio解决方案”,然后选择“空解决方案”;
(3)命名解决方案为“osImageManager”,然后点击浏览按钮,选择练习8-1中第4步创建的C:\Peter\OSPACS\Production目录,选择“添加到源代码控制”,然后点击“确定”;
(4)当添加解决方案到源代码控制对话框出现的时候,选择你在练习8-1中创建的Production文件夹,但是放弃“osImageManager”作为解决方案文件夹的名字,点击“确定”,添加你的空Visual Studio解决方案到版本控制中。
图8-1 工作区目录和存储库文件夹之间的映射
警告:记住,放入版本控制中,并不只是将源代码用于软件产品的生成,而且文件须要创建其与公共软件和工具之间的联系,以及用于数据集成和数据库定义的脚本。
决定放什么到版本控制中(Deciding What to Put into Version Control)
一旦你添加了一个解决方案或项目到版本控制中,大多数有关存入哪些内容的问题就由你决定。例如,当你创建了一个新的类,Visual Studio将会自动添加相关文件到版本控制。但一般情况下你不想给团队其余成员共享的自己工作区中的文件自动排除在这个过程之外;例如,你个人的集成开发环境(IDE)的设置文件(.suo)、可执行文件(.exe、.dll)和各种产品生成文件。