Skip to content

Commit 9c91d08

Browse files
committed
Merge branch 'ci/git-diff-output-optimization' into 'master'
ci: optimize `git diff` handling to address "Argument list too long" error See merge request espressif/esp-idf!34960
2 parents f3c95b6 + 0045550 commit 9c91d08

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

.gitlab/ci/common.yml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -319,26 +319,32 @@ variables:
319319
- *git_init
320320
- *git_fetch_from_mirror_url_if_exists
321321
- |
322+
# Store the diff output in a temporary file
323+
TEMP_FILE=$(mktemp)
322324
# merged results pipelines, by default
323325
if [[ -n $CI_MERGE_REQUEST_SOURCE_BRANCH_SHA ]]; then
324326
git fetch origin $CI_MERGE_REQUEST_DIFF_BASE_SHA --depth=1 ${GIT_FETCH_EXTRA_FLAGS}
325327
git fetch origin $CI_MERGE_REQUEST_SOURCE_BRANCH_SHA --depth=1 ${GIT_FETCH_EXTRA_FLAGS}
326-
export GIT_DIFF_OUTPUT=$(git diff --name-only $CI_MERGE_REQUEST_DIFF_BASE_SHA $CI_MERGE_REQUEST_SOURCE_BRANCH_SHA)
328+
git diff --name-only $CI_MERGE_REQUEST_DIFF_BASE_SHA $CI_MERGE_REQUEST_SOURCE_BRANCH_SHA > "$TEMP_FILE"
329+
GIT_DIFF_OUTPUT=$(cat "$TEMP_FILE")
327330
git fetch origin $CI_COMMIT_SHA --depth=1 ${GIT_FETCH_EXTRA_FLAGS}
328331
# merge request pipelines, when the mr got conflicts
329332
elif [[ -n $CI_MERGE_REQUEST_DIFF_BASE_SHA ]]; then
330333
git fetch origin $CI_MERGE_REQUEST_DIFF_BASE_SHA --depth=1 ${GIT_FETCH_EXTRA_FLAGS}
331334
git fetch origin $CI_COMMIT_SHA --depth=1 ${GIT_FETCH_EXTRA_FLAGS}
332-
export GIT_DIFF_OUTPUT=$(git diff --name-only $CI_MERGE_REQUEST_DIFF_BASE_SHA $CI_COMMIT_SHA)
335+
git diff --name-only $CI_MERGE_REQUEST_DIFF_BASE_SHA $CI_COMMIT_SHA > "$TEMP_FILE"
336+
GIT_DIFF_OUTPUT=$(cat "$TEMP_FILE")
333337
# other pipelines, like the protected branches pipelines
334338
elif [[ "$CI_COMMIT_BEFORE_SHA" != "0000000000000000000000000000000000000000" ]]; then
335339
git fetch origin $CI_COMMIT_BEFORE_SHA --depth=1 ${GIT_FETCH_EXTRA_FLAGS}
336340
git fetch origin $CI_COMMIT_SHA --depth=1 ${GIT_FETCH_EXTRA_FLAGS}
337-
export GIT_DIFF_OUTPUT=$(git diff --name-only $CI_COMMIT_BEFORE_SHA $CI_COMMIT_SHA)
341+
git diff --name-only $CI_COMMIT_BEFORE_SHA $CI_COMMIT_SHA > "$TEMP_FILE"
342+
GIT_DIFF_OUTPUT=$(cat "$TEMP_FILE")
338343
else
339344
# pipeline source could be web, scheduler, etc.
340345
git fetch origin $CI_COMMIT_SHA --depth=2 ${GIT_FETCH_EXTRA_FLAGS}
341-
export GIT_DIFF_OUTPUT=$(git diff --name-only $CI_COMMIT_SHA~1 $CI_COMMIT_SHA)
346+
git diff --name-only $CI_COMMIT_SHA~1 $CI_COMMIT_SHA > "$TEMP_FILE"
347+
GIT_DIFF_OUTPUT=$(cat "$TEMP_FILE")
342348
fi
343349
- *git_checkout_ci_commit_sha
344350
- *common-before_scripts

0 commit comments

Comments
 (0)