summaryrefslogtreecommitdiffstats
path: root/.travis.yml
diff options
context:
space:
mode:
authorAmmar Askar <ammar_askar@hotmail.com>2018-01-27 20:53:56 (GMT)
committerBerker Peksag <berker.peksag@gmail.com>2018-01-27 20:53:56 (GMT)
commitb2ec3615c81ca4f3c938245842a45956da8d5acb (patch)
tree5ba9bd10baa43d0da4057679e2fd99dc88269cab /.travis.yml
parentb1a6ac4c4026d648b3d948945b734a4d0f175a3c (diff)
downloadcpython-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.yml16
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