使用Team Foundation中的源代码控制

介绍

在现代软件开发项目当中,源代码控制是一项基本要求。源代码控制的基本方式是一种从中心数据库签入、签出源代码的机制。它允许不同的开发人员在同一个项目中同时工作,而不必担心代码丢失或者被错误地重写。源代码控制还是一种贯穿于软件开发生命周期中可以用来管理文件版本的控制系统。这样的系统可以帮助我们跟踪哪部分代码被更改,谁进行的更改,什么时间进行的更改以及为什么要做这样的更改。最后,源代码控制还可以将所有修定过的文件作为一个整体版本进行发布,并且管理多个现有已发布的版本(分支branching),以及关联多个不同的已发布版本(合并merging)。

源代码控制的基本方式即使在由一个开发人员构成的项目组中也是非常有用的。但是,这些特点在拥有多个发布版本和多组开发人员的大型企业应用程序中变成了严重问题。Microsoft Visual Studio 2005及Visual Studio Team System为管理及跟踪源代码提供了三种不同的机制。
 

不同的问题,不同的解决方案

使用微软技术的开发人员想必知道一款微软产品Microsoft Visual SourceSafe。它在很多年前就被开发人员广泛使用并且现已捆绑在微软开发工具当中。在一些小型项目当中, 我们已经证实Microsoft Visual SourceSafe是一套能够有效节约成本的源代码控制系统。在一些团队中,开发人员使用Visual SourceSafe来创建共享文档,例如需求文档、测试用例和其他相关产品的文档。在另一些团队中,他们主要使用源代码控制来存储同一产品中的不同版本。而企业级开发人员或大型开发团队则可能需要经常购买昂贵的第三方源代码以及配置管理工具。

在了解诸多需求以及客户反馈之后,微软改善了Visual Studio Team System中的源代码控制方法和配置管理工具。最新版本的Visual Studio包括三种不同的控制机制:

  • 团队项目工作区和Microsoft Windows SharePoint服务

  • Microsoft Visual SourceSafe 2005

  • Team Foundation Version Control
     

文档控制

虽然版本控制一般意味着控制开发人员的源代码,但是在软件开发过程当中可能还会出现一些其它产品。它们也许就是一些包含着项目版本、需求、设计、测试计划、开发流程和培训计划的Word文档,也可能会包括一些关于结构、架构、设计的Microsoft Visio图表,甚至还会包括一些在项目生命周期中需要特别管理的项目规划和bug列表。

每一个项目团队都可以找到自己的方式来管理这些文档。文件共享则是一种基本方式。在文件共享的方式中,用户一般使用变更文件名的方式来跟踪文档的更新以及避免冲突。

很明显到今天我们也依然使用这些方法来管理文档。但是现在我们可以选择更好的管理项目文档的工具。使用Microsoft Windows Server 2003和Window SharePoint Services (WSS)作为更简单的文档库版本控制方式。WSS技术是集成在Windows Server 2003之中的。除了文档的版本控制,开发团队也可以从WSS的其他功能中获利,例如集成在Microsoft Office中的网页浏览界面、目录管理和讨论版。

Visual Studio Team System构建在WSS的功能之上。在创建新的团队项目同时我们可以自动创建一个团队项目的网页站点。这个项目的门户站点可以从Team System中的流程模板中自定义。默认这个门户站点会开放文档库,以便实现开发流程中的文档控制。另外工作区还为开发进程、门户视图、报告项目状态等提供合适的模板。用户还可以使用流程向导,该向导会在整个开发生命周期中指引用户。最后,不但使用Microsoft Office 及网页浏览器的管理者和商业用户可以使用工作区的功能,而且使用Visual Studio的开发及测试人员也可以同样适用工作区的功能。
 

基本的源代码控制

对于具有简单源代码控制需求的小型项目团队,Visual SourceSafe是十分合适的产品。最新版本的Visual SourceSafe将在Visual Studio 2005中发布。此版本的Visual SourceSafe同样使用底层的基于文件系统的引擎,不过在一些功能上有显著增强。从而使得它在小型项目中更具选择性。其中的增强项有:

  • 改进分布式团队支持。其中包括支持通过WAN及HTTP访问的远程用户;支持不同时区及语言设定。

  • 改进数据存储的稳定性并且增加至4GB的存储空间。同时不需要用户去分析、管理甚至修复他们的数据库。

  • 改进支持自定制或第三方的检查、合并、编辑工具。

  • 改进自动功能。其中包括使用Visual SourceSafe中的主互操作程序集来自设定.NET自动功能,以及与新的MSBuild项目生成管理工具集成。

  • 支持Unicode和XML,改进开发依赖于Unicode的ASP.NET Web服务和其他类型项目。包含以上明显改进的Visual SourceSafe 2005能够让以前忽视它的一些小型团队重新认识它。
     

企业级版本控制

在Visual Studio 2005 Team System——Team Foundation Server中,微软提供了一套真正的企业级源代码控制系统。Team Foundation Version Control (TFVC)是Team Foundation Server中的一部分。它为Visual Studio 2005提供集成的源代码控制功能。请注意,TFVC不是Visual SourceSafe的下一代版本。TFVC是一套重新开发的系统,用于解决在大型开发项目中使用VSS所遇到限制。TFVC利用Microsoft SQL Server 2005作为更加强大、稳定、高性能的数据存储中心,而放弃了基于文件系统的存储方式。

Team Foundation Version Control具有像其它源代码控制系统一样的基本功能,而且还包含Visual SourceSafe 2005中的增强功能。此外,TFVC还提供更强大的新功能,包括Shelving, 签入策略和新工作项跟踪系统整合等。这些新特性稍后将有具体说明。

以下特性VSS是独有的,并不包含在TFVC之中:

  • 共享——VSS提供一种机制使得一个在源码控制系统中的文件或文件夹可以出现在多个地方。TFVC没有相同的功能。但是分支(branching)可以起到类似的作用。

  • Pinning——VSS提供一种Pinning的机制。它可以用来保护一个文件的特定版本使得它不被别的开发人员修改。它经常和共享功能一起被开发人员使用,我们可以在多个共享目录中保护同一文件的不同版本。下面将会提到,TFVC中更为强大的分支(branching)机制。 它允许我们独立地维护不同版本的文件。
     

多版本控制

现在的源代码控制系统除了具有一般的维护多版本、锁定、单独文件归档功能外,还提供已修订文件的分组功能。例如,当发布工程的第一版本的时候,工程中的个别文件也许已经被更改了很多次。因此,不能简单的说一个项目的第一个版本就是所有文件的第一个版本。版本控制系统引入了标签(labeling)功能。可以用它来指定一些特殊文件以及这些文件的不同版本作为一个组。一旦应用了标签,在之后的开发周期中,这些分组后的文件就可以被当作一个整体来引用。比如,可以在每晚构建的版本中使用标签,它将帮助修补或引用这些版本不同的文件。图1显示了Visual Studio 2005 Team System中的标签对话框。

scc_fig02

2. 分支

用户可以浏览或直接输入位于源代码控制库中的目标位置,用以存储新的分支。图3显示的是使用分支功能后的源代码控制浏览器。

scc_fig04

4. 合并向导

在合并过程中,TFVC将会比较所有已选定文件的不同点。如果文件是不同的,合并进程将会为每一个分支都生成一个现有文件的副本。如果用户没有中断此次合并进程并且此次合并成功完成,那么所有被合并的文件都将被签出然后真正合并到目标文件中。注意,TFVC不仅可以把更改后的文件进行合并还可以把新文件、已删除的文件甚至重命名的文件进行合并。如果在合并过程中有冲突产生,并且被系统无法自动解决它们,版本控制更改向导会把这个冲突交给用户处理。开发人员可以选择使用其中任意个版本文件作为最终版本,但是在大多数情况下可能会选择手动地进行合并。如果选择手动合并,此时在合并窗口中的左侧将会显示源分支文件,在右侧将会显示目标分支文件,这样可以看到两个文件中的所有的不同。也可以从任意一个分支中选择你想要保留的行,然后将其保存到最终的已合并版本中。图5显示了一个合并解决窗口。

scc_fig06

6. 创建新团队项目的分支
 

版本控制中的前后矛盾

在开发流程中开发人员有时会遇到一些前后矛盾的情况。例如,一个开发团队的基本目标是在每个工作日结束的时候将最新版本的软件代码签入到源代码控制数据库中。这是因为开发人员可能需要随时访问到最新的代码,而中心数据库也需要经常进行备份。开发人员不希望源代码控制数据库中的任何代码破坏项目生成过程或中断项目流程,但是此时就会出现一些问题。因为一些复杂的代码更改可能会花费多个工作日的时间。所以不可能做到每天都签入代码,而又不给开发团队中其他成员造成困难。

TFVC通过shelving解决了这类问题。通过shelving,用户可以在源代码数据库中存储文件的中间版本。也就是说,这些文件在Team Foundation Server上,可以被其他用户访问到,而且不会影响整个数据库的备份。同时shelveset并不是受版本控制的应用程序源码的一部分。所以项目不会因为签入了不完整或未校验的代码而遭到破坏。值得强调的是,更改后的中间版本只会被上传并保存在服务器当中而不会被签入到系统之中。

Shelving在现有工作被中断的情况下是非常有用的。比如,当一个开发人员从开发V2.0项目中抽调回V1.0版本的bug修复项目,甚至于在决定去度假并离开现在的源代码开发任务。事实上在团队成员中,shelving对于一般性的共享是非常有用的。不仅对于工作被中断的情况,还包括计划中的任务比如代码复查、同僚测试,在这些情况下任何人都可以访问到其他成员的代码。
 

Shelving与Team Foundation Version Control

在Visual Studio 2005 Team系统中可以很简单的使用Shelving功能。如果有一个已经被签出的文件,就可以从很多地方把该文件的更新放置到shelveset中。右键点击解决方案浏览器或者源代码控制浏览,点击快捷菜单中的Shelve;在待签入窗口中,工具栏上会有shelving和unshelving按钮。如图7所示,点击Shelve菜单命令,将会看到一个对话框。在对话框里选择想要shelve的对象,然后输入shelveset名和注释。

scc_fig08

8. Unshelving
 

源代码的定义

作为版本控制系统,TFVC应该存储并管理所有的源代码。不幸的是关于源代码的定义大多是不清晰的。对于Visual Studio 2005 Team系统来说,能够放在一个Visual Studio解决方案中的所有内容都可以存储在TFVC之中。显然它包括了.NET源代码(例如,C#、Visual Basic)和ASP.NET文件,而且还可以包括很多种其他类型的文件。直接支持的文件,例如数据文件、配置文件和资源文件,可以被涵盖。图表,例如逻辑数据中心图表、应用程序图表和类图表,也可以被涵盖。当然还包括数据库项目和存储过程代码。

同样TFVC也可以管理、控制测试人员及他们所支持的源代码。使用Visual Studio 2005 Team系统可以实现多种测试方式,其中包括,单元测试、网页测试、一般性测试、压力测试及人工测试。

关于在TFVC中存储测试,有两点需要注意。第一,测试人员不是第二类用户;他们需要以和开发人员一样的方式访问源代码控制系统。第二,TFVC必须存储人工测试而且必须像控制源代码一样对它进行版本控制。这一点可能和一般认识相违背,提及第二点的原因是人工测试一般均被表现为文本文档或者Microsoft Word文档,而文件格式相对于文件内容本身并不是十分重要。团队项目工作区为商业用户和管理者提供了一个共同协作的环境,从而达到收集需求和跟踪进程的作用。Team Foundation Server源代码数据库则为创建及验证软件系统提供平台。
 

跟踪任务和强制标准

Visual Studio中一个突出的功能是可以对一个开发团队中所有开发人员的不同任务进行跟踪。从用户角度讲,这意味着对已分配的开发或测试任务、修复bug、风险管理、需求收集、或对开发过程中的任一工作项进行集成性访问。工作项系统还拥有一个隐藏价值,这就是它拥有一种用于设计开发和测试中跟踪需求的新方式。事实上从需求分析开始到最终产品发布,通过关联源代码和测试文件,跟踪系统可以贯穿于整个开发周期之中。工作项跟踪系统(WIT)拥有很多优点,例如自动报告及提醒。关于更多工作项跟踪系统的细节不会在本文中涉及,但是请注意,要使用这个点对点的跟踪功能,用户必须把所有签入到源代码控制系统中的文件与工作项进行关联。幸运的是,通过签入对话框中的工作项通道来实现关联是十分简单的。

关联工作项和开发任务的需求只是开发流程中诸多标准要求之一。Team Foundation Version Control 中的策略对于开发流程是十分有帮助的,例如:

  • 工作项关联——要求所有签入到源代码控制系统中的对象都必须关联到工作项系统中已定义的任务上。

  • 静态代码分析——要求所有签入到源代码控制系统中的代码都要首先经过静态代码分析工具(之前是FxCop)的测试。静态代码分析工具会保证所有代码都符合代码标准。

  • 单元测试——验证单元测试是否存在,以及是否被执行,还有是否符合最低的成功标准。

Team Foundation Version Control通过集成Visual Studio Team System提供的签入策略功能,可以支持标准的强制设置。在Beta 2之中,Visual Studio Team System支持四条签入策略,包括:代码分析,测试策略和工作项。图9显示了Visual Studio中源代码及策略设置。

scc_fig10

10. 签入注释

签入策略和注释提供了一种当前大多数企业都没有使用到的控制级别。请注意,使用策略完全是一个可选项。签入策略可以是,也许必须是,整个流程模板中的一部分。这样的流程模板允许项目中创建自己的源代码控制规则。这样的功能保持了整个开发项目中的高一致性。
 

结论

显然对企业级开发团队来说Team Foundation Version Control有着比Visual SourceSafe更为强大的功能。TFVC拥有许多功能可以用来帮助我们管理、控制源代码及文档,例如shelvesets,工作项整合,潜入策略、分支、合并。这些功能给项目资产管理添加了巨大的额外价值。

转载于:https://www.cnblogs.com/yuriko0510/archive/2012/06/28/2567214.html

文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树数据库组成32219 人正在系统学习中 相关资源:Scrum敏捷软件开发_敏捷开发-专业指导文档类资源-CSDN文库

来源:weixin_30856725

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2012年5月23日
下一篇 2012年5月25日

相关推荐