软件配置管理 (SCM) 在软件开发生命周期 (SDLC) 中起着重要的作用。SCM 是企业用来完成以下工作的做法、策略和流程的集合:

  ? 控制对源文件的访问

  ? 创建和管理工作项

  ? 生成产品版本

  ? 管理产品版本

  为什么需要SCM

  ? 更好的组织性,更高的开发管理水平。

  ? 保护投资 :企业级的过程历史数据、经验、数字化资产。

  ? 建立标准的开发环境。

  ? 实现并行开发,缩短产品面市时间。

  ? 自动化管理。

  ? 为创造性的工作释放更多的时间。

  ? 员工更加专业。

  微软的配置管理方法

  有效的 SCM 策略像一只好的鞋子 - 它符合项目和团队随时间而变化的独特需求;不能简单地与其他公司共享;而且一旦绪,很容易忘记,直到缺少它而无法进行工作为止。

  Team Foundation 源代码管理提供了标准的源代码版本控制功能,该功能可以伸缩,以便为数以千计的开发人员提供支持。除了典型的源代码管理功能外,Team Foundation 还是企业级软件配置管理产品,它为开发团队提供集成的版本控制、问题跟踪和过程管理。

  使用TFS实施配置管理,源文件和项目相关数据存储在 Microsoft SQL Server 数据库中。源代码管理操作以原子和事务的方式执行。这种体系结构有如下优点:

  ? 可伸缩性:假如提供足够的硬件,版本控制数据库可以包含超过千兆字节的数据。Team Foundation 多可以支持 3500用户。

  ? 完整性和可靠性:与基于文件的源代码管理应用程序相关的数据完整性问题的类型真正减少了。

  ? 速度: Team Foundation 比 Visual SourceSafe 快几个数量级。

  TFS的主要功能有:

  ? 版本管理 :工作区(workspace)、变更集(changeset) 、标签。

  ? 并行开发支持 :多点(checkout)、分支与合并 、搁置集(shelveset)。

  ? 强化过程管理:链接工作项、静态代码分析、代码覆盖率。

  ? 自动化构建。

  ? 完善的权限管理。

  ? 支持分布式开发,http(s)协议。

  变更集

  变更集是 Team Foundation 存储与单个签入操作相关的下列所有内容的逻辑容器,具体来说这些内容包括:文件和文件夹修订、指向相关工作项的链接、签入说明、注释、签入策略以及签入的所有者名称和日期/时间等系统元数据。并为它分配一个的“变更集编号”.变更集编号按顺序递增。例如,变更集 #3 后面是变更集 #4。

  搁置

  ? 与变更集不同,搁置集是非版本化的实体。

  ? 可以删除搁置集但不能删除变更集。

  ? 搁置集不支持链接工作项。

  ? 搁置集不支持签入策略。

  在未准备好或者无法签入一组更改时,可以搁置更改。主要有以下五种搁置方案:

  * 中断 当所具有的更改未准备好签入但需要从事其他任务时,可以搁置这些更改以保留它们。

  * 集成 当所具有的更改未准备好签入但需要与其他团队成员共享这些更改时,可以搁置这些更改并让其他团队成员对它们取消搁置。

  * 评审 当所具有的更改已准备好签入并且必须经过代码评审时,可以搁置这些更改并通知该搁置集的代码审阅者。

  * 备份 当正在做的工作要执行备份但未准备好签入时,可以搁置已做的更改并将其保留在 Team Foundation 服务器上。

  * 移交 当正在做的工作要由其他团队成员完成时,可以搁置已做的更改以便更容易地进行移交。

  标签

  标签是一种标记,可以选择将其附加到源代码管理服务器中一组原本无关的文件和文件夹版本,以便于将这些版本集中检索到工作区供开发或生成使用。

  锁类型

  Team Foundation 提供两种锁类型:签入锁和签出锁。

  签入策略

  可以定义自定义的签入规则,以便对可提交到源代码管理服务器的更改的类型加以限制,例如,项目管理员可定义在将源代码更改提交到服务器之前对这些更改进行验证的规则。Team Foundation附带了一些签入策略,用于验证工作项是否与更改关联,单元测试是否成功通过,以及是否已对源代码完全运行了静态分析。这些策略可通过插件模型进行扩展,这样只需创建一个新的策略插件,可以强制实施不同类型的要求

  分支与合并

  分支是一种允许一个文件集合分化到两个或更多分叉路径中的功能。当团队必须维护两个或更多相似基本代码(当发布了一个产品且必须开始下一个版本的工作时会出现这种情况)时,经常使用分支。 合并是将两个不同分支中的更改结合在一起的过程。合并操作获取源分支中已发生的更改,并将这些更改集成到目标分支中。合并操作集成源分支中所有类型的更改,其中包括更改名称、编辑文件、添加文件、删除文件以及撤消删除更改。如果同时在源分支和目标分支中修改了项,则系统将提示解决冲突。