You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制TeamCity REST API的changes输出至指定分支?

问题

我通过以下请求地址查询某VCS提交之后的变更:
https://teamcity.mycompany.com/app/rest/changes?locator=buildType:(id:myCfgId),sinceChange(version:mySHA)&fields=change(*)
该请求会返回mySHA提交后所有追踪分支的变更,但ChangeLocator参数本身不支持分支筛选,请问如何将结果限定到特定分支?

解决方法

因为ChangeLocator没有直接的分支筛选参数,你可以用下面两种方式实现:

方法1:通过分支构建关联筛选变更

  1. 先获取特定分支下、在目标SHA之后的所有构建ID:
    https://teamcity.mycompany.com/app/rest/builds?locator=buildType:(id:myCfgId),branch:(name:myBranchName),sinceChange(version:mySHA)&fields=build(id)
  2. 针对每个返回的构建ID,单独请求该构建对应的变更列表:
    https://teamcity.mycompany.com/app/rest/builds/id:{buildId}/changes?fields=change(*)
  3. 把这些变更结果合并去重,就能得到目标分支在mySHA之后的所有变更。

方法2:客户端本地过滤变更

  1. 先执行你原本的请求,拿到所有分支在mySHA之后的变更数据。
  2. 遍历每条变更,检查其中的branchName字段(如果API返回该字段),只保留与目标分支名称匹配的条目。

    要是返回的变更里没有直接的分支信息,可以通过变更关联的构建数据来判断所属分支,或者解析变更对象里的分支相关链接字段。

内容的提问来源于stack exchange,提问作者Andrey Kuznetsov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 20:01:12