@@ -8,31 +8,43 @@ IFS=$'\n\t'
88
99source " $( cd " $( dirname " $0 " ) " && pwd) /../shared.sh"
1010
11- if [[ -z " ${CI_ONLY_WHEN_SUBMODULES_CHANGED+x} " ]]; then
12- echo " Executing the job since there is no skip rule in effect"
13- exit 0
11+ if [[ -n " ${CI_ONLY_WHEN_SUBMODULES_CHANGED-} " ]]; then
12+ git fetch " https://github.com/$GITHUB_REPOSITORY " " $GITHUB_BASE_REF "
13+ BASE_COMMIT=" $( git merge-base FETCH_HEAD HEAD) "
14+
15+ echo " Searching for toolstate changes between $BASE_COMMIT and $( git rev-parse HEAD) "
16+
17+ if git diff " $BASE_COMMIT " | grep --quiet " ^index .* 160000" ; then
18+ # Submodules pseudo-files inside git have the 160000 permissions, so when
19+ # those files are present in the diff a submodule was updated.
20+ echo " Submodules were updated"
21+ elif ! git diff --quiet " $BASE_COMMIT " -- src/tools/clippy src/tools/rustfmt; then
22+ # There is not an easy blanket search for subtrees. For now, manually list
23+ # the subtrees.
24+ echo " Clippy or rustfmt subtrees were updated"
25+ elif ! (git diff --quiet " $BASE_COMMIT " -- \
26+ src/test/rustdoc-gui \
27+ src/librustdoc \
28+ src/tools/rustdoc-gui); then
29+ # There was a change in either rustdoc or in its GUI tests.
30+ echo " Rustdoc was updated"
31+ else
32+ echo " Not executing this job since no submodules nor subtrees were updated"
33+ ciCommandSetEnv SKIP_JOB 1
34+ exit 0
35+ fi
1436fi
1537
16- git fetch " https://github.com/$GITHUB_REPOSITORY " " $GITHUB_BASE_REF "
17- BASE_COMMIT=" $( git merge-base FETCH_HEAD HEAD) "
18-
19- echo " Searching for toolstate changes between $BASE_COMMIT and $( git rev-parse HEAD) "
20-
21- if git diff " $BASE_COMMIT " | grep --quiet " ^index .* 160000" ; then
22- # Submodules pseudo-files inside git have the 160000 permissions, so when
23- # those files are present in the diff a submodule was updated.
24- echo " Executing the job since submodules are updated"
25- elif ! git diff --quiet " $BASE_COMMIT " -- src/tools/clippy src/tools/rustfmt; then
26- # There is not an easy blanket search for subtrees. For now, manually list
27- # the subtrees.
28- echo " Executing the job since clippy or rustfmt subtree was updated"
29- elif ! (git diff --quiet " $BASE_COMMIT " -- \
30- src/test/rustdoc-gui \
31- src/librustdoc \
32- src/tools/rustdoc-gui); then
33- # There was a change in either rustdoc or in its GUI tests.
34- echo " Executing the job since rustdoc was updated"
35- else
36- echo " Not executing this job since no submodules nor subtrees were updated"
37- ciCommandSetEnv SKIP_JOB 1
38+ if [[ -n " ${CI_ONLY_WHEN_CHANNEL-} " ]]; then
39+ if [[ " ${CI_ONLY_WHEN_CHANNEL} " = " $( cat src/ci/channel) " ]]; then
40+ echo " The channel is the expected one"
41+ else
42+ echo " Not executing this job as the channel is not the expected one"
43+ ciCommandSetEnv SKIP_JOB 1
44+ exit 0
45+ fi
3846fi
47+
48+
49+ echo " Executing the job since there is no skip rule preventing the execution"
50+ exit 0
0 commit comments