diff options
author | Ammar Askar <ammar_askar@hotmail.com> | 2018-01-27 20:53:56 (GMT) |
---|---|---|
committer | Berker Peksag <berker.peksag@gmail.com> | 2018-01-27 20:53:56 (GMT) |
commit | b2ec3615c81ca4f3c938245842a45956da8d5acb (patch) | |
tree | 5ba9bd10baa43d0da4057679e2fd99dc88269cab /.travis.yml | |
parent | b1a6ac4c4026d648b3d948945b734a4d0f175a3c (diff) | |
download | cpython-b2ec3615c81ca4f3c938245842a45956da8d5acb.zip cpython-b2ec3615c81ca4f3c938245842a45956da8d5acb.tar.gz cpython-b2ec3615c81ca4f3c938245842a45956da8d5acb.tar.bz2 |
Fix changed file detection on Travis (GH-3129)
Travis when merging changes from a pull request onto the target branch
does not perform a rebase, instead it does a simple merge which causes
the PR commits to retain their commit dates. This means that the commit
log can potentially look like:
PR merge <-- HEAD
normal master commit <- master
more commits from normal workflow
PR commit 1
another master commit
PR commit 2
Performing a git diff from PR commit 2 to master will accidentally
include files that should not be there.
Closes python/core-workflow#14
Diffstat (limited to '.travis.yml')
-rw-r--r-- | .travis.yml | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/.travis.yml b/.travis.yml index 687d021..d7387e5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -83,7 +83,21 @@ matrix: before_script: - | set -e - if ! git diff --name-only $TRAVIS_COMMIT_RANGE | grep -qvE '(\.rst$)|(^Doc)|(^Misc)' + if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then + files_changed=$(git diff --name-only $TRAVIS_COMMIT_RANGE) + else + # Pull requests are slightly complicated because merging the PR commit without + # rebasing causes it to retain its old commit date. Meaning in history if any + # commits have been made on master that post-date it, they will be accidentally + # included in the diff if we use the TRAVIS_COMMIT_RANGE variable. + files_changed=$(git diff --name-only HEAD $(git merge-base HEAD $TRAVIS_BRANCH)) + fi + + # Prints changed files in this commit to help debug doc-only build issues. + echo "Files changed: " + echo $files_changed + + if ! echo $files_changed | grep -qvE '(\.rst$)|(^Doc)|(^Misc)' then echo "Only docs were updated, stopping build process." exit |