From 5ef3c988ebae9fe2c8f31a3fb870adea9643994c Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Sun, 4 Aug 2019 13:29:59 +0100 Subject: [PATCH] bin: add script to test all commits compile for git bisect --- bin/test-all-commits-compile.sh | 36 +++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 bin/test-all-commits-compile.sh diff --git a/bin/test-all-commits-compile.sh b/bin/test-all-commits-compile.sh new file mode 100755 index 000000000..d9f5e4d3b --- /dev/null +++ b/bin/test-all-commits-compile.sh @@ -0,0 +1,36 @@ +#!/bin/sh +# This tests rclone compiles for all the commits in the branch +# +# It assumes that the branch is rebased onto master and checks all the commits from branch root to master +# +# Adapted from: https://blog.ploeh.dk/2013/10/07/verifying-every-single-commit-in-a-git-branch/ + +BRANCH=$(git rev-parse --abbrev-ref HEAD) +if [ "$BRANCH" = "master" ]; then + echo "Don't run on master branch" + exit 1 +fi +COMMITS=$(git log --oneline --reverse master.. | cut -d " " -f 1) +CODE=0 + +for COMMIT in $COMMITS +do + git checkout $COMMIT + + # run-tests + echo "------------------------------------------------------------" + go install ./... + + if [ $? -eq 0 ] + then + echo $COMMIT - passed + else + echo $COMMIT - failed + git checkout ${BRANCH} + exit + fi + echo "------------------------------------------------------------" +done + +git checkout ${BRANCH} +echo "All OK"