由于各种原因,我的团队正在尝试将两个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启动的,那么是什么可能导致行为上的差异呢?
1条答案
按热度按时间f4t66c6m1#
这是由
Depth=1
自动附加引起的。您可以编辑管道yaml ->单击右上角的垂直3个点-> triggers -> Yaml Tab->
Get sources
页面,禁用shallow fetch
选项。(对于经典构建管道,它也在获取源代码页面中)x1c 0d1x的数据
我的PR管道供您参考:
的