TeamCity On-Premises 2024.03 Help

VCS 签出模式

在构建配置中的 版本控制设置 页面允许配置如何从 VCS 中检索项目源代码:您可以 附加一个 VCS 根 并配置检出选项。

VCS Checkout mode 是一个影响项目源代码如何到达 agent 的设置。 此模式仅影响源代码的签出。 当前的修订和更改数据检索逻辑由 TeamCity 服务器执行,因此 TeamCity 服务器需要在任何模式下访问 VCS 服务器。

根据使用的版本控制,代理可能需要在 PATH 上安装和可用的命令行客户端(例如,Perforce,Git,Mercurial)。

签出模式在构建配置的 版本控制设置 页面上进行配置,在 签出设置 部分(高级设置)。

TeamCity 有以下的 VCS 检出模式:

签出模式

描述

喜欢在 agent 上检出文件

这是新创建的构建配置的默认设置。 在升级过程中,现有构建配置的检出模式设置将被保留。

启用此设置后,如果可能,TeamCity 将使用代理端签出(请参见下方的 “始终在代理上签出文件”模式)。 如果无法进行代理端检出,TeamCity 将显示相应的 健康报告项,并将使用服务器端检出(参见下面的 "始终在服务器上检出文件" 模式)。

在以下情况下,TeamCity 将回退到服务器端检出:

  • 代理上未找到 Git 或 Mercurial 客户端。

  • 代理上有 Git 或 Mercurial 客户端,但是版本错误。

  • Perforce:

    • 如果代理上找不到 Perforce 客户端。

    • 如果使用了流存储库,并且签出规则非常复杂(而不仅仅是 . => A)。 要在此情况下禁用回退,您可以在 Perforce 根目录设置中启用 创建非流工作区 选项。 请注意,在构建过程中,它会阻止提交到流。

始终在服务器上检出文件

TeamCity 服务器将在每次构建之前,将 源码 导出并传递给代理。 由于源文件是被导出而非检出的,因此代理的文件系统中不会存储任何管理数据,且无法从代理执行版本控制操作(如检入、标签或更新)。 TeamCity 通过 缓存源代码 以优化与 VCS 服务器的通信,并且只从 VCS 服务器检索必要的更改。 除非执行 clean checkout ,否则服务器会向代理发送增量补丁,仅更新给定签出目录中自上次在代理上构建以来更改的文件。

始终在代理上检出文件

构建代理将在构建之前 签出源代码。 代理端签出可以释放更多服务器资源,并能够访问特定版本控制的目录( .svnCVS.git );也就是说,构建脚本可以执行 VCS 操作(例如,签入到版本控制中)-在这种情况下,请确保构建脚本使用进行签入所需的凭据。

VCS 客户端软件必须安装在代理上(适用于 Perforce,Mercurial,Git)。

请不要自动检出文件

TeamCity 将不会自动检出任何源文件,但是 默认构建检出目录 仍然会被创建,以便您可以使用它通过构建脚本来检出源文件。 请注意,只有在对由 build.vcs.number.* 属性传递给构建的修订版进行签出时,TeamCity 才会准确报告变化。

构建检出目录将不会自动清理,除非已配置目录过期期限。

最后修改日期: 16日 7月 2024年