From e7bcef0f0ba8a31ecaa467dcdadea32eec4108d5 Mon Sep 17 00:00:00 2001 From: Tonye Jack Date: Wed, 18 Jan 2023 16:35:50 -0700 Subject: [PATCH] fix: handling since last remote commits for the first pr branch commit (#953) --- .github/workflows/test.yml | 55 ++++++++++++++++++++++++++++++++------ diff-sha.sh | 31 +++++++++------------ test/test.txt | 2 +- test/test2/test.txt | 2 +- 4 files changed, 62 insertions(+), 28 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index bef40065..05de1885 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -858,8 +858,11 @@ jobs: ( !contains(steps.changed-files-specific-source-file.outputs.all_changed_files, 'action.yml') && !contains(steps.changed-files-specific-source-file.outputs.all_changed_files, '.github/workflows/test.yml') && - !contains(steps.changed-files-specific-source-file.outputs.all_changed_files, '.github/workflows/greetings.yml') && - !contains(steps.changed-files-specific-source-file.outputs.all_changed_files, 'test/test.txt') + !contains(steps.changed-files-specific-source-file.outputs.all_changed_files, 'test/test.txt') && + !contains(steps.changed-files-specific-source-file.outputs.all_changed_files, 'test/test2/test.txt') && + !contains(steps.changed-files-specific-source-file.outputs.all_changed_files, 'test/test2/test3/test4/test.txt') && + !contains(steps.changed-files-specific-source-file.outputs.all_changed_files, '[test new].txt') && + !contains(steps.changed-files-specific-source-file.outputs.all_changed_files, '.github/workflows/greetings.yml') ) run: | if [[ "${{ steps.changed-files-specific-source-file.outputs.any_changed }}" != "false" ]]; then @@ -880,8 +883,11 @@ jobs: ( !contains(steps.changed-files-specific-source-file.outputs.all_modified_files, 'action.yml') && !contains(steps.changed-files-specific-source-file.outputs.all_modified_files, '.github/workflows/test.yml') && - !contains(steps.changed-files-specific-source-file.outputs.all_modified_files, '.github/workflows/greetings.yml') && - !contains(steps.changed-files-specific-source-file.outputs.all_modified_files, 'test/test.txt') + !contains(steps.changed-files-specific-source-file.outputs.all_modified_files, 'test/test.txt') && + !contains(steps.changed-files-specific-source-file.outputs.all_modified_files, 'test/test2/test.txt') && + !contains(steps.changed-files-specific-source-file.outputs.all_modified_files, 'test/test2/test3/test4/test.txt') && + !contains(steps.changed-files-specific-source-file.outputs.all_modified_files, '[test new].txt') && + !contains(steps.changed-files-specific-source-file.outputs.all_modified_files, '.github/workflows/greetings.yml') ) run: | if [[ "${{ steps.changed-files-specific-source-file.outputs.any_modified }}" != "false" ]]; then @@ -898,7 +904,16 @@ jobs: shell: bash - name: Verify any_deleted from source files - if: "!contains(steps.changed-files-specific-source-file.outputs.deleted_files, 'action.yml') && !contains(steps.changed-files-specific-source-file.outputs.deleted_files, '.github/workflows/test.yml') && !contains(steps.changed-files-specific-source-file.outputs.deleted_files, 'test/test.txt')" + if: | + ( + !contains(steps.changed-files-specific-source-file.outputs.deleted_files, 'action.yml') && + !contains(steps.changed-files-specific-source-file.outputs.deleted_files, '.github/workflows/test.yml') && + !contains(steps.changed-files-specific-source-file.outputs.deleted_files, 'test/test.txt') && + !contains(steps.changed-files-specific-source-file.outputs.deleted_files, 'test/test2/test.txt') && + !contains(steps.changed-files-specific-source-file.outputs.deleted_files, 'test/test2/test3/test4/test.txt') && + !contains(steps.changed-files-specific-source-file.outputs.deleted_files, '[test new].txt') && + !contains(steps.changed-files-specific-source-file.outputs.deleted_files, '.github/workflows/greetings.yml') + ) run: | if [[ "${{ steps.changed-files-specific-source-file.outputs.any_deleted }}" != "false" ]]; then echo "Invalid output: Expected (false) got (${{ steps.changed-files-specific-source-file.outputs.any_deleted }})" @@ -924,7 +939,15 @@ jobs: shell: bash - name: Verify any_changed files comma separator - if: "!contains(steps.changed-files-specific-comma-source-file.outputs.all_changed_files, 'action.yml') && !contains(steps.changed-files-specific-comma-source-file.outputs.all_changed_files, '.github/workflows/test.yml') && !contains(steps.changed-files-specific-comma.outputs.all_changed_files, 'test/test.txt')" + if: | + ( + !contains(steps.changed-files-specific-comma-source-file.outputs.all_changed_files, 'action.yml') && + !contains(steps.changed-files-specific-comma-source-file.outputs.all_changed_files, '.github/workflows/test.yml') && + !contains(steps.changed-files-specific-comma-source-file.outputs.all_changed_files, 'test/test.txt') && + !contains(steps.changed-files-specific-comma-source-file.outputs.all_changed_files, 'test/test2/test.txt') && + !contains(steps.changed-files-specific-comma-source-file.outputs.all_changed_files, 'test/test2/test3/test4/test.txt') && + !contains(steps.changed-files-specific-comma-source-file.outputs.all_changed_files, '[test new].txt') + ) run: | if [[ "${{ steps.changed-files-specific-comma-source-file.outputs.any_changed }}" != "false" ]]; then echo "Invalid output: Expected (false) got (${{ steps.changed-files-specific-comma-source-file.outputs.any_changed }})" @@ -933,7 +956,15 @@ jobs: shell: bash - name: Verify any_modified files comma separator - if: "!contains(steps.changed-files-specific-comma-source-file.outputs.all_modified_files, 'action.yml') && !contains(steps.changed-files-specific-comma-source-file.outputs.all_modified_files, '.github/workflows/test.yml') && !contains(steps.changed-files-specific-comma.outputs.all_modified_files, 'test/test.txt')" + if: | + ( + !contains(steps.changed-files-specific-comma-source-file.outputs.all_modified_files, 'action.yml') && + !contains(steps.changed-files-specific-comma-source-file.outputs.all_modified_files, '.github/workflows/test.yml') && + !contains(steps.changed-files-specific-comma-source-file.outputs.all_modified_files, 'test/test.txt') && + !contains(steps.changed-files-specific-comma-source-file.outputs.all_modified_files, 'test/test2/test.txt') && + !contains(steps.changed-files-specific-comma-source-file.outputs.all_modified_files, 'test/test2/test3/test4/test.txt') && + !contains(steps.changed-files-specific-comma-source-file.outputs.all_modified_files, '[test new].txt') + ) run: | if [[ "${{ steps.changed-files-specific-comma-source-file.outputs.any_modified }}" != "false" ]]; then echo "Invalid output: Expected (false) got (${{ steps.changed-files-specific-comma-source-file.outputs.any_modified }})" @@ -942,7 +973,15 @@ jobs: shell: bash - name: Verify any_deleted files with comma separator - if: "!contains(steps.changed-files-specific-comma-source-file.outputs.deleted_files, 'action.yml') && !contains(steps.changed-files-specific-comma-source-file.outputs.deleted_files, '.github/workflows/test.yml') && !contains(steps.changed-files-specific-comma.outputs.deleted_files, 'test/test.txt')" + if: | + ( + !contains(steps.changed-files-specific-comma-source-file.outputs.deleted_files, 'action.yml') && + !contains(steps.changed-files-specific-comma-source-file.outputs.deleted_files, '.github/workflows/test.yml') && + !contains(steps.changed-files-specific-comma-source-file.outputs.deleted_files, 'test/test.txt') && + !contains(steps.changed-files-specific-comma-source-file.outputs.deleted_files, 'test/test2/test.txt') && + !contains(steps.changed-files-specific-comma-source-file.outputs.deleted_files, 'test/test2/test3/test4/test.txt') && + !contains(steps.changed-files-specific-comma-source-file.outputs.deleted_files, '[test new].txt') + ) run: | if [[ "${{ steps.changed-files-specific-comma-source-file.outputs.any_deleted }}" != "false" ]]; then echo "Invalid output: Expected (false) got (${{ steps.changed-files-specific-comma-source-file.outputs.any_deleted }})" diff --git a/diff-sha.sh b/diff-sha.sh index bdb52699..cf27d5fd 100644 --- a/diff-sha.sh +++ b/diff-sha.sh @@ -103,20 +103,16 @@ if [[ -z $GITHUB_EVENT_PULL_REQUEST_BASE_REF ]]; then PREVIOUS_SHA="" if [[ "$GITHUB_EVENT_FORCED" == "false" || -z "$GITHUB_EVENT_FORCED" ]]; then - PREVIOUS_SHA=$GITHUB_EVENT_BEFORE + PREVIOUS_SHA=$GITHUB_EVENT_BEFORE && exit_status=$? || exit_status=$? + else + PREVIOUS_SHA=$(git rev-list -n 1 "HEAD~1") && exit_status=$? || exit_status=$? fi else - PREVIOUS_SHA=$(git rev-list -n 1 "$TARGET_BRANCH") && exit_status=$? || exit_status=$? - - if [[ -z "$PREVIOUS_SHA" ]]; then - if [[ "$GITHUB_EVENT_FORCED" == "false" || -z "$GITHUB_EVENT_FORCED" ]]; then - PREVIOUS_SHA=$GITHUB_EVENT_BEFORE - fi - fi + PREVIOUS_SHA=$(git rev-list -n 1 "HEAD~1") && exit_status=$? || exit_status=$? fi if [[ -z "$PREVIOUS_SHA" || "$PREVIOUS_SHA" == "0000000000000000000000000000000000000000" ]]; then - PREVIOUS_SHA=$(git rev-parse "$(git branch -r --sort=-committerdate | head -1 | xargs)") + PREVIOUS_SHA=$(git rev-list -n 1 "HEAD~1") && exit_status=$? || exit_status=$? fi if [[ "$PREVIOUS_SHA" == "$CURRENT_SHA" ]]; then @@ -161,7 +157,7 @@ else if [[ -f .git/shallow ]]; then echo "Fetching remote refs..." # shellcheck disable=SC2086 - git fetch $EXTRA_ARGS -u --progress origin pull/"$GITHUB_EVENT_PULL_REQUEST_NUMBER"/head:"$CURRENT_BRANCH" 1>/dev/null + git fetch $EXTRA_ARGS -u --progress --deepen="$INPUT_FETCH_DEPTH" origin "$CURRENT_BRANCH" 1>/dev/null fi echo "::debug::Getting HEAD SHA..." @@ -209,24 +205,23 @@ else git branch --track "$TARGET_BRANCH" origin/"$TARGET_BRANCH" 1>/dev/null 2>&1 || true PREVIOUS_SHA=$(git merge-base "$TARGET_BRANCH" "$CURRENT_SHA") && exit_status=$? || exit_status=$? + + if ! git diff --name-only --ignore-submodules=all "$PREVIOUS_SHA$DIFF$CURRENT_SHA" 1>/dev/null 2>&1; then + PREVIOUS_SHA=$(git rev-parse "$TARGET_BRANCH") && exit_status=$? || exit_status=$? + fi fi if [[ -z "$PREVIOUS_SHA" || "$PREVIOUS_SHA" == "$CURRENT_SHA" ]]; then PREVIOUS_SHA=$GITHUB_EVENT_PULL_REQUEST_BASE_SHA && exit_status=$? || exit_status=$? fi - if ! git diff --name-only --ignore-submodules=all "$PREVIOUS_SHA$DIFF$CURRENT_SHA" 1>/dev/null 2>&1; then - PREVIOUS_SHA=$(git rev-parse "$TARGET_BRANCH") && exit_status=$? || exit_status=$? - DIFF=".." - fi - echo "::debug::Previous SHA: $PREVIOUS_SHA" else PREVIOUS_SHA=$INPUT_BASE_SHA && exit_status=$? || exit_status=$? + fi - if ! git diff --name-only --ignore-submodules=all "$PREVIOUS_SHA$DIFF$CURRENT_SHA" 1>/dev/null 2>&1; then - DIFF=".." - fi + if ! git diff --name-only --ignore-submodules=all "$PREVIOUS_SHA$DIFF$CURRENT_SHA" 1>/dev/null 2>&1; then + DIFF=".." fi echo "::debug::Target branch: $TARGET_BRANCH" diff --git a/test/test.txt b/test/test.txt index 9f4b6d8b..6de7b8c6 100644 --- a/test/test.txt +++ b/test/test.txt @@ -1 +1 @@ -This is a test file +This is a test file. diff --git a/test/test2/test.txt b/test/test2/test.txt index 570d0dbf..6abe068b 100644 --- a/test/test2/test.txt +++ b/test/test2/test.txt @@ -1 +1 @@ -Lorem ipsum dolor sit amet, consectetur adip eget, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. \ No newline at end of file +Lorem ipsum dolor sit amet, consectetur adipiscing elit et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. \ No newline at end of file