git 为什么Azure DevOps通过提交而不是PR引用来检查PR?

7eumitmz  于 2023-11-15  发布在  Git
关注(0)|答案(1)|浏览(166)

由于各种原因,我的团队正在尝试将两个repo合并到一个monorepo中。我按照here的说明将它们合并为一个。然而,为了减少构建时间,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。
以前在旧repo上工作的日志:

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启动的,那么是什么可能导致行为上的差异呢?

f4t66c6m

f4t66c6m1#

这是由Depth=1自动附加引起的。
您可以编辑管道yaml ->单击右上角的垂直3个点-> triggers -> Yaml Tab-> Get sources页面,禁用shallow fetch选项。(对于经典构建管道,它也在获取源代码页面中)
x1c 0d1x的数据
我的PR管道供您参考:


相关问题