diff options
Diffstat (limited to 'src/ci/scripts')
| -rwxr-xr-x | src/ci/scripts/should-skip-this.sh | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/ci/scripts/should-skip-this.sh b/src/ci/scripts/should-skip-this.sh index 36bf4368990..631a7b247d5 100755 --- a/src/ci/scripts/should-skip-this.sh +++ b/src/ci/scripts/should-skip-this.sh @@ -10,15 +10,23 @@ source "$(cd "$(dirname "$0")" && pwd)/../shared.sh" if [[ -z "${CI_ONLY_WHEN_SUBMODULES_CHANGED+x}" ]]; then echo "Executing the job since there is no skip rule in effect" -elif git diff HEAD^ | grep --quiet "^index .* 160000"; then + exit 0 +fi + +git fetch "https://github.com/$GITHUB_REPOSITORY" "$GITHUB_BASE_REF" +BASE_COMMIT="$(git merge-base FETCH_HEAD HEAD)" + +echo "Searching for toolstate changes between $BASE_COMMIT and $(git rev-parse HEAD)" + +if git diff "$BASE_COMMIT" | grep --quiet "^index .* 160000"; then # Submodules pseudo-files inside git have the 160000 permissions, so when # those files are present in the diff a submodule was updated. echo "Executing the job since submodules are updated" -elif git diff --name-only HEAD^ | grep --quiet src/tools/clippy; then +elif ! git diff --quiet "$BASE_COMMIT" -- src/tools/clippy src/tools/rustfmt; then # There is not an easy blanket search for subtrees. For now, manually list - # clippy. - echo "Executing the job since clippy subtree was updated" + # the subtrees. + echo "Executing the job since clippy or rustfmt subtree was updated" else - echo "Not executing this job since no submodules were updated" + echo "Not executing this job since no submodules nor subtrees were updated" ciCommandSetEnv SKIP_JOB 1 fi |
