如何在Azure DevOps中获取跨仓库的两个构建版本之间的变更记录
你遇到的返回结果为空的原因是,GetChangesBetweenBuildsAsync和GetBuildChangesAsync两个接口默认仅返回流水线所属仓库的变更记录,不会拉取跨仓库的关联提交,所以你存在Repo2的变更不会被默认返回。
解决方案
方法1:使用带跨仓库查询参数的SDK接口重载
你当前使用的TeamFoundationServer.Client 16.170.0版本SDK已经提供了控制是否返回跨仓库变更的参数,只需要在调用接口时显式将includeExternalSourceChanges参数设为true即可:
查询两个构建之间的跨仓库变更
var changes1 = buildClient.GetChangesBetweenBuildsAsync( project: "PipelineTest", fromBuildId: 2, toBuildId: 3, includeExternalSourceChanges: true ).Result;
查询单个构建的跨仓库变更
var buildChanges = buildClient.GetBuildChangesAsync( project: "PipelineTest", buildId: 3, includeExternalSourceChanges: true ).Result;
调用后返回的结果就会包含所有关联仓库的变更记录,和Web门户展示的内容一致。
方法2:兼容旧版本SDK的手动请求方案
如果你使用的SDK版本未暴露上述参数,可以直接调用Azure DevOps REST API获取数据,请求时在查询参数中添加includeExternalSourceChanges=true即可,你可以复用SDK已有的身份验证凭据发起HTTP请求,不需要额外配置权限。
内容的提问来源于stack exchange,提问作者MakePeaceGreatAgain
相关产品推荐
相关产品推荐

