Ste*_*fan 6 git continuous-integration gitlab
我正在我的 Gitlab 服务器上运行 ci 任务。其中一项操作是在构建运行器计算机上调用执行一些更新的 exe。
$CI_COMMIT_BEFORE_SHA我从和传递 SHA1,$CI_COMMIT_SHA代码调用:
git diff --name-only $CI_COMMIT_BEFORE_SHA $CI_COMMIT_SHA
Run Code Online (Sandbox Code Playgroud)
通常它会给我一个在提交中已更改的文件名列表,但有时我会收到错误:
fatal: bad object abcd1234
^
|-- This is the $CI_COMMIT_SHA
Run Code Online (Sandbox Code Playgroud)
存储库刚刚下载到构建运行器,因此它是最新的,为什么 git diff 会在这里返回一个错误的对象?
小智 1
git fetch origin $CI_MERGE_REQUEST_TARGET_BRANCH_NAME git diff-tree --no-commit-id --name-only -r $CI_COMMIT_BEFORE_SHA -r $CI_COMMIT_SHA
它帮助了我!