summaryrefslogtreecommitdiff
path: root/.githooks/pre-commit
diff options
context:
space:
mode:
Diffstat (limited to '.githooks/pre-commit')
-rw-r--r--.githooks/pre-commit13
1 files changed, 13 insertions, 0 deletions
diff --git a/.githooks/pre-commit b/.githooks/pre-commit
new file mode 100644
index 0000000..220fc19
--- /dev/null
+++ b/.githooks/pre-commit
@@ -0,0 +1,13 @@
+#!/bin/sh
+# .githooks/pre-commit
+# This repo is checked out on Windows, which doesn't reliably preserve
+# the executable bit (that's why core.fileMode is false - see
+# statuspage/README.md). Without this hook, a newly-added *.sh file
+# silently stages as non-executable, and render.sh skips non-executable
+# files with no error - a broken check script wouldn't even show up as
+# a down/warn row, it'd just vanish.
+#
+# Force +x on every staged *.sh file so that can't happen.
+git diff --cached --name-only --diff-filter=ACM -- '*.sh' | while IFS= read -r f; do
+ git update-index --chmod=+x "$f"
+done