在 gitlab CI 上:“致命:不明确的参数‘master..HEAD’:未知修订版或路径不在工作树中。”

kde*_*iry 9 git gitlab-ci

在基于合并请求运行的 gitlab CI 作业上,我这样做:

git rev-list master..branch_name
Run Code Online (Sandbox Code Playgroud)

我希望在branch_name 中有 SHA 列表,而不是在 master 中。但我收到错误:

fatal: ambiguous argument 'master..branch_name': unknown revision or path not in the working tree.
Run Code Online (Sandbox Code Playgroud)

和是正确masterbranch_name。该命令在针对我的本地存储库运行时有效。

知道为什么吗?以及如何解决这个问题?

Tom*_*art 5

Gitlab CI 默认情况下会进行浅拷贝。检查项目设置 > CI/CD 设置 > Git 策略:

  • git clone慢的
  • git fetch带可选--depth参数

但是,如果您指定只想merge_requests在您的 中运行此阶段.gitlab-ci.yml,例如:

test:
  script:
    - git diff-tree --name-only --no-commit-id -r ${CI_MERGE_REQUEST_DIFF_BASE_SHA}..${CI_COMMIT_SHA}
  only:
    - merge_requests
Run Code Online (Sandbox Code Playgroud)

CI 作业中将包含一组特殊的环境变量。然后您应该能够使用例如$CI_MERGE_REQUEST_DIFF_BASE_SHA作为目标分支的参考,而无需签出整个存储库。

管道的分支merge_requests称为egrefs/merge-requests/1而不是eg branch_name

为了改变fetch/clone行为使用:

test:
  script:
    - git diff-tree --name-only --no-commit-id -r ${CI_MERGE_REQUEST_DIFF_BASE_SHA}..${CI_COMMIT_SHA}
  only:
    - merge_requests
Run Code Online (Sandbox Code Playgroud)