为什么 Azure DevOps 通过提交而不是 PR 参考来检查 PR?

问题描述 投票:0回答:1

出于多种原因,我的团队正在尝试将两个存储库合并为一个单一存储库。我按照此处的说明将它们合二为一。然而,UI 门控构建 YML 为了减少构建时间,尝试仅针对 PR 中发生的更改运行测试。这是通过获取先前的提交 ID,将其设置为变量,然后使用它来执行测试来完成的:

BRANCH=$(git rev-parse --verify HEAD~1) && echo testing branch $BRANCH
npm run branch && vitest run --changed $BRANCH

我不断收到错误

fatal: Needed a single revision
。深入研究,这是因为 ADO 是通过提交 ID 拉取 PR 来构建,而不是通过引用拉取 PR。

以前在旧存储库上运行的日志:

git --config-env=http.extraheader=env_var_http.extraheader fetch --force --tags --prune --prune-tags --progress --no-recurse-submodules origin  +refs/heads/*:refs/remotes/origin/* +refs/pull/8847/merge:refs/remotes/pull/8847/merge

新存储库上的新日志:

git --config-env=http.extraheader=env_var_http.extraheader fetch --force --tags --prune --prune-tags --progress --no-recurse-submodules origin --depth=1 +f77dbabe86180eabf1a9a0ebe3450ed4afe67eab:refs/remotes/origin/f77dbabe86180eabf1a9a0ebe3450ed4afe67eab

因为它是通过提交 ID 拉取的,所以它只拉取单个提交,因此没有之前的提交可供

rev-parse
抓取,并且会发生错误。

知道为什么 PR 构建是通过提交而不是像以前那样通过 PR 引用来拉动吗?构建仍在由 PR 启动,那么什么可能导致行为差异?

git azure-devops build pull-request
1个回答
0
投票

这是由自动附加的

Depth=1
造成的。

您可以编辑管道 yaml -> 单击右上角垂直 3 个点 -> 触发器 -> Yaml 选项卡 ->

Get sources
页面,禁用
shallow fetch
选项。(对于经典构建管道,它也在获取源页面中)

我的PR管道供您参考:

© www.soinside.com 2019 - 2024. All rights reserved.