Team Foundation Server原理与入门:第二部分
 

2010-12-16 来源:网络

 

在本文的第一部分我们介绍了TFS的工作项跟踪特性,并简单地介绍了版本控制特性。在第二部分中,我将继续给大家介绍版本控制的特性,然后介绍TFS中的Team Build和报告工具。

建立分支与合并代码

对于在开发中支持一个或多个代码版本的开发小组来说,开发和使用一个他们的软件新版本是十分重要的,同时具备维护两个不同版本的代码库的能力也非常重要。分解与合并工具使的这一切成为可能,在大多数现代版本控制系统中都可以获得这些工具。Team Foundation 的版本控制也不例外。

TFS的分解支持能力,至少从表面上看起来与Subversion或VSS没有什么不同。利用VSS我们可以将一颗树的部分拷贝放置到另一个路径。例如你可以为$/DemoProject/Trunk 建立分支$/DemoProject/Branches/FeatureTeam1,从而一个特性小组可以在建立的分支上编写代码而不必扰乱主干部分。

建立一个分支十分简单:首先,你需要从源代码控制窗口中选择你想要建立分支的文件夹,然后从上下文菜单中选择“分支”。将会弹出一个对话框,在里面你可以浏览或者输入你打算存放拷贝文件的目的地。

单击确定就在你的本地工作站上面建立了一个分支,然后你必须浏览该分支,分别检查里面的各类代码。在源代码控制窗口中,一个挂起的分支操作用两个分级箭头标出。

因为分支存在于一颗树中逻辑上独立的部分,这就允许开发人员可以直接在分支中编辑源文件,然后提交给影响每个分支的版本控制存储器。虽然这看起来有点不固定,但是当你有几个不同版本的代码库时或者需要将一个漏洞补丁应用于每个文件时,这将会变得非常有用。

执行合并

有人说建立分支很简单,但是合并起来确实很受伤。在我看来这话确有道理,尤其是那些对于离开主干很久的分支。下面的做法对开发小组来说通常是个不错的办法,按照一个常规的原理定期合并代码,只要确保不出现令人厌恶的千奇百怪就行。

从技术的角度看,执行代码合并没什么困难的。第一步你需要在源文件控制窗口中选择你想要合并的分支,然后从上下文菜单中选择合并,这将会弹出一个向导对话框,帮助你晚场合并过程。

如果你毫无根据的进行合并,向导将会阻止你的操作。比如,你将在一个源文件树中没有直接祖先关系的两个位置的代码进行合并,这时向导就会阻止合并。这限制大多数工具存在,因为这将导致复杂性和迷惑性。然而,如果你确实想要执行无根据的合并,请考虑试用一下Team Foundation Server的动力玩具。

合并操作过程中几乎没有不发生冲突的,因此当TFS检测到冲突时,会弹出一个对话框,需要开发人员选择进行哪个改变。

理想情况下,你可以选择自动合并全部,然后去喝杯咖啡,但是依我的经验看来,这样做并不怎么聪明,自动合并有时会出现莫名其妙的选项。所以我更喜欢手工合并每个文件。

对于大量复杂的合并操作,我建议将小组核心开发人员带到一个配有投影仪和膝上电脑的房间,让他们一起完成合并工作,因为这个过程需要他们的集体智慧。

自动生成

在执行生成时,我始终认为要坚持这样一个基本依据,那就是要保护代码库的安全。在Team Foundation Server中支持这一特性的是Team Build系统,该系统扩展了MSBuild的功能,支持将生成任务分配到一个或多个生成服务器上完成。

TFS中的每个生成被注册成Team Build类型,该类型定义了生成必须执行的各种参数。其中必须指明的参数包括生成类型名,在版本控制中的那个解决方案将被生成,什么样的配置(例如X64 Release),使用哪台生成服务器以及生成结果存储在何处。也可以将自动测试包含到生成中,测试包括代码覆盖和静态代码分析。

一旦创建了Team Build 类型,生成脚本就可以用来订制执行一些向导中不支持的额外操作。Team Build类型和Team Project始终存放在版本控制存储器中明显的地方,例如,如果我的生成类型名为:“TrunkHelloWorldSolutionContinuous”,那么DemoProject的源码控制区应该为:“$/DemoProject/TeamBuildTypes/TrunkHelloWorldSolutionContinuous”。

剔除和管理生成

Team Explorer通过分析版本控制存储器组装Team Project树上的Team Builds节点,决定定义了那些Team Build类型。呈交的每个节点都可以用来剔除一个生成。

Team Foundation Server利用指定的生成服务器管理通讯,并提供一个生成进度摘要。这对于很长的生成来说非常有用,因为这样可以看到生成进度情况。生成完成后,生成摘要随即转换成一份详细的生成报告,该报告将会显示生成过程中发生些什么以及用到了那些改变集和工作项。

双击Team Explorer中的Team Build 类型,所有以前的生成将会被重新找回,并且每个都会有一个质量状态指示器。通过这种方式,我们可以使用Team Build 系统来管理生成过程,尽管很多人还没有认识到这是Team Build 系统有意为之。

我们可以利用一个特别的生成返回工具从报告某个问题的过程中返回。通过代码和所有其它方式返回到需求。从工具集成的角度来看这是一个巨大的进步,也是高集成度对开发小组有所帮助的生动例子。

报告

通过在Team Foundation Server中集成工作项跟踪,版本控制和自动生成系统,微软为我们提供了一个非常有价值的相关信息存储器,以后逐渐变成报告生成的重要来源。在Team Foundation Server应用之前,大量开发小组只能通过用掐算手指头的方法来估计和报告工作进展。现在,利用Team Foundation Server我们就可以准确地看到我们的工作进展。

使用Team Foundation Server进行开发,存储在潜在的关联数据库中的信息会被输入到一个分析器中,然后利用该分析器来生成各种各样的报告,报告可以使用SQL Server报告服务工具查看。

每个过程模板都有一个不同的报告集,我们可用这些报告找回和某个特定的软件开发过程相关的数据。如上图所示,就是利用MSF为快速软件开发模板生成的报告。

这仅仅是报告服务和TFS分析器强大功能的冰山一角,它们还可以订制用来满足你的特殊需要,订制方法也很简单,只需要为你的服务器部署一个新的报告即可。

小结

在本文的两个部分中,我们介绍了Team Foundation Server的几个关键特性领域,包括过程管理,工作项跟踪,版本控制,自动生成和报告。因为TFS是一个庞大的产品,因此我们不可能仅在一篇文章中对每个特性都给出详细的介绍,更不用说伴随各个版本Visual Studio 2005的客户端特性。希望本文能够抛砖引玉,使你对该产品的功能以及对开发小组带来的有益之处有所了解。

在你决定使用微软的产品,定购Team Foundation Server之前,你需要看看这个工具是否适合你。为此,我给大家提供下面关于该产品的优缺点列表供参考。

优点
缺点
可靠的版本控制存储器可根据需要调整容量 不能像VSS一样随意拿起移动,并且其中的一些混合可能开始就让人迷惑。
收集公有模式,并将它们以一种简单易懂的格式呈现出来。 收集公有模式,并将它们以一种简单易懂的格式呈现给人们,但是你可能不像去理解这些东西。
将项目经理和小组负责人从耗时的工作中解放出来
收集公有模式,并将它们以一种简单易懂的格式呈现给人们,但是你可能不像去理解这些东西。
达到的集成度通过将其它的各类产品结合在一起的方法很难达到。例如,代码漏洞跟踪,需求分析工具

一旦安装,就需要小组中的一名具备构建技术的人员进行管理。
工作项跟踪可以使开发人员对下一步的工作有一个计划。

 

总的来说,我感觉TFS对于我所接触到的所有开发小组都发挥了积极的作用。最后,我想给大家提供一些资源,这些资源曾使我的TFS体验更加有趣。

资源
 
TeamPlain Web 访问 TeamPlain是一个第三方产品,它可以为Team Foundation Server上的基于Web的接口提供一个漂亮的界面。该产品对于那些不想学习使用Visual Studio 2005工具的商业分析家,项目赞助商和辅助人员等提供了很好的TFS体验。
TFS集成器 TfS集成器是由Readify(我在该公司工作)开发工具,该工具为TFS提供了持续的集成性和依赖复制支持。这极大地方便了复杂生成过程的管理,由该领域的资深人员开发
TFS部署工具 TFS部署工具是由Readify开发的另一个工具,该工具可以让发行经理利用Team Build中的性能指示器轻松地将软件部署到复杂的环境中(比如说多服务器环境)。
Team Foundation 动力玩具 一个封装到包中的实用工具集,使用它可以让你做一些并不暴露在TFS中的事情。




如何有效地进行项目沟通
如何进行项目计划及质量管理
IT项目风险管理案例和应对之道
组建高效快速研发团队的必要
一个甲方项目经理的自白
TFS使用指南


软件项目管理
软件开发项目管理
研发项目管理
高级项目管理实战
敏捷项目管理实践
项目风险管理

相关咨询服务
建立项目管理规范


中国银行 IT外包项目管理
北京软件项目管理
某电子软件中心 项目外包管理
某电信服务商 项目外包管理
富士 软件外包项目管理与进度
Schneider 项目管理+软件质量
中国电信 软件项目管理
 
 
 
 
 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号