在基于合并请求运行的 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)
和是正确master
的branch_name
。该命令在针对我的本地存储库运行时有效。
知道为什么吗?以及如何解决这个问题?
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)
归档时间: |
|
查看次数: |
3515 次 |
最近记录: |