Skip to content

Commit a066a90

Browse files
dschogitster
authored andcommitted
ci(check-whitespace): restrict to the intended commits
During a run of the `check-whitespace` we want to verify that the commits introduced in the Pull Request have no whitespace issues. We only want to look at those commits, not the upstream commits (because the contributor cannot do anything about the latter). However, by using the `-<count>` form in `git log --check`, we run the risk of looking at the wrong commits. The reason is that the `actions/checkout` step does _not_ check out the tip commit of the Pull Request's branch: Instead, it checks out a merge commit that merges that branch into the target branch. For that reason, we already adjust the commit count by incrementing it, but that is not enough: if the upstream branch has newer commits, they are traversed _first_. And obviously we will then miss some of the commits that we _actually_ wanted to look at. Therefore, let's be careful to stop assuming a linear, up to date commit topology in the contributed commits, and instead specify the correct commit range. Unfortunately, this means that we no longer can rely on a shallow clone: There is no way of knowing just how many commits the upstream branch advanced after the commit from which the PR branch branched off. So let's just go with a full clone instead, and be safe rather than sorry (if we have "too shallow" a situation, a commit range `@{u}..` may very well include a shallow commit itself, and the output of `git show --check <shallow>` is _not_ pretty). Signed-off-by: Johannes Schindelin <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent cc00362 commit a066a90

File tree

1 file changed

+2
-8
lines changed

1 file changed

+2
-8
lines changed

.github/workflows/check-whitespace.yml

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,9 @@ jobs:
1212
check-whitespace:
1313
runs-on: ubuntu-latest
1414
steps:
15-
- name: Set commit count
16-
shell: bash
17-
run: echo "COMMIT_DEPTH=$((1+$COMMITS))" >>$GITHUB_ENV
18-
env:
19-
COMMITS: ${{ github.event.pull_request.commits }}
20-
2115
- uses: actions/checkout@v2
2216
with:
23-
fetch-depth: ${{ env.COMMIT_DEPTH }}
17+
fetch-depth: 0
2418

2519
- name: git log --check
2620
id: check_out
@@ -47,7 +41,7 @@ jobs:
4741
echo "${dash} ${etc}"
4842
;;
4943
esac
50-
done <<< $(git log --check --pretty=format:"---% h% s" -${{github.event.pull_request.commits}})
44+
done <<< $(git log --check --pretty=format:"---% h% s" ${{github.event.pull_request.base.sha}}..)
5145
5246
if test -n "${log}"
5347
then

0 commit comments

Comments
 (0)