VCS 检出规则
VCS 签出规则允许您签出配置的 VCS 根的一部分,并将版本控制中的目录映射到构建代理上的 构建签出目录 的子目录中。 因此,您可以为整个仓库定义一个 VCS 根,并指导每个构建配置只检出它的相关部分。
检出规则影响在用户界面中显示的构建更改以及代理进行构建时检出的文件。 如果提交的内容与构建的 VCS 根目录的任何检出规则模式都不匹配,TeamCity 将完全忽略它。 此类更改将不会显示为待处理,而且无法在当前配置中触发任何构建。
要显示更改但不触发提交的构建,请使用 VCS 触发规则。
一般建议尽可能减少指向存储库根的 VCS 根的数量,并通过签出规则定义特定构建配置检出的内容。
添加签出规则
前往 Administration 并点击您想要配置的项目。
从项目的 常规设置页面,点击相关的构建,位于 构建配置 下面
从侧边栏中选择 Version Control Settings。
在列表中找到 VCS 根,然后点击 编辑检出规则 来打开一个用于输入规则的表单。
使用 VCS 存储库浏览器 选择要签出的目录。
请注意,TeamCity 中的 Perforce 支持将检出规则视为区分大小写。 对基于 Perforce 的构建配置启用不区分大小写,可以在 版本控制设置 页面中通过在 编辑检出规则 表格中添加以下注释来实现: ##teamcity 忽略大小写
。
语法
在下面的示例中,仓库中的路径( VCSPath
)是相对于配置的 VCS 根目录的,代理上的路径( AgentPath
)是相对于构建检出目录的。
单个检出规则的一般语法如下:
如果未指定规则,将包含所有文件。
当您开始输入规则时,请注意,只要您输入任何 +:
规则,TeamCity 就会删除默认的 "包含全部" 设置。
要显式包含所有文件,请使用 +:.
规则。
请注意,排除 checkout 规则(以 -:
的形式)通常只能加快服务器端的 checkout 速度,除非您使用 Perforce 和 TFS 代理端的 checkout,这里的排除规则能够得到有效的处理。
对于其他版本控制系统,代理自身的 checkout 可能会通过检出所有被提及为包括规则的根目录并删除被排除的目录,以模拟排除 checkout 规则。 对于这样的系统,通常应避免对代理端签出规则使用排除规则。 请参考 VCS 检出模式页面获得更多信息。
当使用 Git 代理端检出时,TeamCity 将某些检出规则转换为稀疏检出模式,这限制了受支持的 VCS 检出规则集。
如果有多个具有交叉检出规则(例如,两个 VCS 根具有检出规则 +: foo => bar
)的 VCS 根附加到构建配置上,并且文件在 代理 上被检出,可能在检出过程中跳过一些文件。 以下警告将在用户界面中显示:
一个版本控制系统(VCS)根目录中的检出规则中指定的路径与另一个 VCS 根目录的检出规则冲突(交叉)。 这可能会在 "代理检出" 模式下造成问题。
为了解决这个问题,解决签出规则之间的冲突或者将签出模式更改为 “server-side"。
输入规则时,请注意以下几点:
要输入多条规则,每条规则应该分别输入在单独的一行。
对于每个文件,如果文件被包含在内,最特定的规则将会应用,无论规则的列出顺序如何。
如果您不输入运算符,它将默认为
+:
。
规则可用于执行以下操作:
语法 | 说明 |
---|---|
| 在构建代理上将根检出到 |
| 排除 |
| 将 |
| 将 VCS 中的 |
| 将 VCS 中的 |
具有三个 VCS 检出规则的示例:
在上述示例中,第一条规则将 src / help
目录及其内容排除在检出之外。 第三条规则比第二条规则更为具体,将 src/samples
路径映射到构建代理的默认工作目录中的 示例
路径。 第二条规则将 src
路径的内容映射到构建代理上的 生产/源代码
,除了第一条规则排除的 src / help
和第三条规则将其映射到另一位置的 src/samples
。
Git 根目录的检出规则限制
Git 插件使用 git sparse-checkout
在代理上检出 Git 文件。 该插件只能执行简单的文件映射操作,这限制了对 Git 支持的 VCS 检出规则 的集合。
支持以下规则:
请注意,规则不能重新映射文件。 也就是说,以下规则 不受支持: +":dirA/dirA1 => dirA/dirA2
。
如果您为一个根目录指定了多个检出规则,请确保它们的检出目录(规则的右侧部分)有一个共同的父目录( [前缀/]
)。 仅支持代理端签出的规则 +:dirA => [prefix/]dirA
,而且所有规则的 [前缀/]
必须相同。
例如:
请注意,以下规则 不受支持: +:dirA=>[prefix/]dirA/postfix
。 如果您在检出目录路径后添加 [/后缀]
,并且配置的 VCS 检出模式 设为 "始终在代理上检出文件",则新的构建将无法启动。