出于多种原因,我的团队正在尝试将两个存储库合并为一个单一存储库。我按照此处的说明将它们合二为一。然而,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 启动,那么什么可能导致行为差异?