使用封闭签入生成过程以验证更改

开发人员签入的更改中断生成时,对小团队造成的后果可能是大麻烦, 按失去的生产力和计划延迟来度量时,大型团队的成本甚至更高。 您可通过创建封闭签入生成定义来防止部分或所有基本代码出现这些问题。

备注

封闭签入生成仅适用于 “TFVC”图标 TFVC 团队项目。它们不适用于 “Git”图标 Git 团队项目。

您希望做什么?

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

  • 定义封闭签入生成过程

  • 改进生成过程功能和性能的准则

  • 避免阻碍您的团队

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

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

当您的团队准备好封闭签入生成过程后,开发人员提交的更改将放置在搁置集中,并将自动生成且可能由您的生成系统进行测试。

“封闭签入”对话框

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

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

定义封闭签入生成过程

  1. 在**“团队资源管理器”中,确保连接到团队项目(键盘:Ctrl + 0, C),然后打开“生成”**页(键盘:Ctrl + 0, B)。

  2. 选择**“新建生成定义”链接或选择一个生成,打开其快捷菜单,然后选择“编辑生成定义”**。

    提示

    如果出现 TF225001 错误消息,则配置生成控制器

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

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

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

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

    提示

    请遵循这些指导:

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

    • 请确保您指定的所有版本控制文件夹均未在另一个封闭签入生成定义的“工作区”选项卡上指定。否则,当用户将文件签入这些文件夹时,生成系统将要求它们确定要进行排队的生成定义。

    • 有关如何指定映射的详细信息,请参阅使用生成工作区

  5. 若要提高性能,请在**“生成默认值”选项卡上,选择“此生成不将输出文件复制到放置文件夹”**。

  6. 在**“进程”选项卡上“生成”下的“项目”**参数中,指定要生成的解决方案或代码项目。

  7. 在**“进程”**选项卡上,设置参数以确保签入符合团队的特定代码质量标准,不会让开发人员产生不必要的耽搁。

    有关详细信息,请参阅本主题后面的改进生成过程功能和性能。

  8. 指定其他选项卡上的生成过程选项。 有关详细信息,请参阅创建或编辑生成定义

改进生成过程功能和性能

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

TF 版本控制或 Git

  • “干净的工作区”“干净的存储库”:若要提高性能,请将此值设置为**“False”**。 此设置可能会使您的团队忽略某些类型的缺陷,如重构过程中引入的缺陷。

生成

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

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

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

  • “干净的生成”:若要提高性能,请将此参数设置为 False。 此设置可能会使您的团队错过某些类型的缺陷,如重构过程中引入的缺陷。

生成,高级

  • “执行代码分析”:若要提高性能,请将此值设置为**“从不”**。

测试,高级

  • “禁用测试”

    • 若要提高性能,请选择**“True”**。

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

发布符号

  • “发布符号的路径”:若要提高性能,请将此值留空。

高级

  • 代理设置

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

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

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

有关默认模板生成过程参数的更多信息,请参阅对生成过程使用默认模板

避免阻碍您的团队

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

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

    例如,如果在一个批处理中同时生成三个签入,并且生成失败,则系统将对所有三个签入的各个生成进行排队。

    但是,此选项存在某种风险,即一个签入干扰其他签入。 这可能会发生,例如,当多个签入修改相同的文件并且出现版本控制冲突时。 在此情况下,将提交较早的签入,而拒绝较晚的签入。

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

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

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

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

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

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

有关详细信息,请参阅对生成进行排队