定义封闭签入生成过程以验证更改

开发人员签入的更改中断生成时,对小团队造成的后果可能是大麻烦,按降低的生产效率和日程推迟来度量时,大型团队的成本更加昂贵。可以创建封闭签入生成定义,以防止某些或所有基本代码出现此问题。

主题内容

  • 封闭签入生成如何影响您的团队

  • 定义封闭签入生成进程

  • 改进生成进度功能和性能的指导

  • 避免妨碍您的团队

  • 手动运行封闭签入生成和专用生成

封闭签入生成如何影响您的团队

在您的团队创建就地放置封闭签入生成过程时,开发人员提交的更改将放置在搁置集中,并会自动生成,并可能由您的生成系统进行测试。

“封闭签入”对话框

生成必须成功,签入过程才能完成。有关更多信息,请参见签入由封闭签入生成控制的挂起的更改

如果某些用户必须绕过封闭签入,则可以针对您的一组用户将**“重写由生成执行的签入验证”权限设置为“允许”**。有关更多信息,请参见Team Foundation Server 权限

定义封闭签入生成进程

必需的权限

若要执行此过程,您的**“编辑生成定义”权限必须设置为“允许”**。有关更多信息,请参见Team Foundation Server 权限

定义封闭签入生成

  1. 在**“团队资源管理器”**中:

    1. 如果尚未连接到您想要在其中工作的团队项目,请选择 连接到团队项目

    2. 选择 “主页”图标“主页”,然后选择 “生成”图标“生成”

    3. 在**“生成”页上,选择“新建生成定义”**。

    此时将出现新建生成定义窗口。

  2. 在**“触发器”**选项卡上:

    • 选择**“封闭签入”**。

    • (可选)要提高生成过程的效率,请选择**“合并和生成”n“提交”**,有关详细信息,请参阅 避免妨碍您的团队。

  3. 在**“工作文件夹”表的“工作区”**选项卡上,将此生成定义将控制的版本控制文件夹映射到生成代理上的本地文件夹。

    提示提示

    请遵循这些指导:

    • 若要确保您的生成过程正常运行并可以改善性能,请包含生成过程所需的文件的所有文件夹(并且只有这些文件夹)。

    • 请确保另一个封闭签入生成定义的“工作区”选项卡中都未指定您为此定义指定的任何版本控制文件夹。否则,当用户将文件签入这些文件夹时,生成系统将要求他们决定将哪个生成定义排入队列。

    • 有关如何指定映射的更多信息,请参见 使用生成工作区

  4. 在**“生成默认”选项以提高性能,选择“此生成不将输出文件复制到放置文件夹”**。

  5. 默认情况下,在**“生成选项卡”“生成过程模板”下,默认模板已选中。在“要生成的项”**参数中,请指定要生成的解决方案项目或节点项目。

  6. 单击**“进程”**选项卡,对参数进行设置,以确保签入符合团队的特定代码质量标准,而不必耽搁您的开发人员。

    有关更多信息,请参见本主题后面的 提高生成处理功能和性能的指导。

  7. 指定其他选项卡上生成过程选项。有关更多信息,请参见创建生成定义

改进生成进度功能和性能的指导

若要最大限度地减少处理生成所需的时间,您在指定**“进程”**选项卡上的生成过程参数的值时,应考虑遵循以下准则。

必需节点

  • 要生成的项要生成的配置:如果保留此参数为空,则将为每个解决方案和项目使用默认平台和配置。若要优化性能,请遵循以下准则:

    • 如果一个平台-配置对的生成速度快于其他对的生成速度,请在此参数中指定它。

    • 尽可能少地指定平台-配置对。

基本节点

  • “清理工作区”:为了提高性能,将此值设置为**“无”(建议)或“输出”**。但是,如果工作区未清理,那么您的团队很可能缺少某些类型的缺陷,如在重构过程中引入的缺陷。有关更多信息,请参见定义基于默认模板的生成过程

  • 执行代码分析:对于更快速的性能,将此值设置为**“从不”**。

  • “源和符号服务器设置”“编制源索引”:为了获得更快速的性能,请将此值设置为 False

高级节点

  • 代理设置

    • 名称筛选器标记筛选器:使用生成代理名称或标记将此生成定义与专门用于运行此生成的生成代理绑定。运行生成代理应具有足够强大的硬件,以使处理此生成的速度足以满足团队的性能期望。

      例如,您和您的团队中的开发人员可能不介意用 15 分钟等待生成完成。但您可能不想等待 8 小时才能确定您的代码是否成功签入。

    • “最长执行时间”:将此值合理地设置为尽可能小的数字。例如,15 分钟对于团队可能合适,但 8 小时可能就太长了。

  • 失败时创建工作项:系统将此值视为**“False”,即使您将此值设置为“True”**。

  • “禁用测试”

    • 有关提高性能的信息,请选择 True

    • 如果您的代码必须通过某些测试,则请选择**“错误”**,然后在生成中运行一组测试。仅可通过运行您需要的测试提高性能。若要指定这些测试,请按类别或优先级对其进行筛选。有关更多信息,请参见在生成过程中运行测试

  • 标记源:将此值设置为**“False”**。

有关 Default Template 生成过程模板参数的更多信息,请参见 定义基于默认模板的生成过程

避免妨碍您的团队

每个封闭签入生成定义一次只能有一个运行的生成。因此,活跃的大型团队很有可能会开发大的封闭签入生成队列。下面的最佳做法可帮助您避免妨碍团队进度:

  • 若要在**“触发器”**选项卡上提高生成过程的效率,请选择 “合并和生成”n“提交” 选项并在任何给定批处理中指定要一起生成的签入的最大数目。一般来说,若使用此选项,您不会冒许多中断的风险。每个签入单独提交或拒绝。

    例如,如果在同一批次内建立三个签入,且建立失败,系统会对三个单独签入进行排队。

    但是,此选项存在干扰其他选项的签入风险。则可能发生,例如,如果多个签入修改相同文件中和版本控件发生冲突。在此情况下,提交较早的签入,而较晚的签入将被拒绝。

  • 定义生成,使生成代理仅执行验证要签入的代码的质量所需的工作。有关更多信息,请参见本主题前面的有关“进程”选项卡设置的准则。

  • 专门为封闭签入生成定义所使用的生成代理指定一台硬件强大 — 例如,拥有高速处理器和高速硬盘 — 的生成计算机。

手动运行封闭签入生成和专用生成

如果开发人员希望对其签入的更改更加有把握,则可以手动将搁置集的生成排入队列。如果开发人员采用此方法,则他们可以在生成成功时指定下面两个选项之一,以告知系统应执行的下一步操作:

  • 系统签入更改(手动封闭的签入生成):此选项对于不想封闭签入但仍想要开发人员在签入之前自愿验证其代码的团队来说十分便捷。

  • “系统不签入更改(专用生成)”:当开发人员希望验证搁置集中的一些更改而不签入这些更改时,可以使用此选项。

有关更多信息,请参见将生成排入队列