summaryrefslogtreecommitdiff
path: root/dev/lint-commits.sh
diff options
context:
space:
mode:
Diffstat (limited to 'dev/lint-commits.sh')
-rwxr-xr-xdev/lint-commits.sh39
1 files changed, 39 insertions, 0 deletions
diff --git a/dev/lint-commits.sh b/dev/lint-commits.sh
new file mode 100755
index 00000000..d8043558
--- /dev/null
+++ b/dev/lint-commits.sh
@@ -0,0 +1,39 @@
+#!/usr/bin/env bash
+
+# A script to check prettyness for a range of commits
+
+CALLNAME="$0"
+
+function usage
+{
+ >&2 echo "usage: $CALLNAME <commit> <commit>"
+ >&2 echo "The order of commits is as given to 'git diff'"
+}
+
+if [ "$#" != 2 ];
+then
+ usage
+ exit 1
+fi
+
+BASE_COMMIT="$1"
+HEAD_COMMIT="$2"
+
+bad=()
+while IFS= read -r commit; do
+ echo Checking "$commit"
+ # git diff --check
+ # uses .gitattributes to know what to check
+ if ! git diff --check "${commit}^" "$commit";
+ then
+ bad+=("$commit")
+ fi
+done < <(git rev-list "$HEAD_COMMIT" --not "$BASE_COMMIT" --)
+
+if [ "${#bad[@]}" != 0 ]
+then
+ >&2 echo "Whitespace errors!"
+ >&2 echo "In commits ${bad[*]}"
+ >&2 echo "If you use emacs, you can prevent this kind of error from reocurring by installing ws-butler and enabling ws-butler-convert-leading-tabs-or-spaces."
+ exit 1
+fi