summaryrefslogtreecommitdiff
path: root/contrib/post-merge-hook
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/post-merge-hook')
-rwxr-xr-xcontrib/post-merge-hook44
1 files changed, 44 insertions, 0 deletions
diff --git a/contrib/post-merge-hook b/contrib/post-merge-hook
new file mode 100755
index 00000000..fa9ab5b6
--- /dev/null
+++ b/contrib/post-merge-hook
@@ -0,0 +1,44 @@
+#!/bin/sh
+#
+# git post-merge hook, used by propellor's author to maintain a
+# joeyconfig branch with some changes while being able to merge
+# between it and branches without the changes.
+#
+# Each time this hook is run, it checks if it's on a branch with
+# name ending in "config". If so, config.hs is pointed at $branch.hs
+# and privdata/relocate is written to make files in privdata/.$branch/ be
+# used.
+#
+# Otherwise, config.hs is pointed at config-simple.hs, and
+# privdata/relocate is removed.
+
+set -e
+
+commit () {
+ if [ -n "$(git status --short privdata/relocate config.hs)" ]; then
+ git commit privdata/relocate config.hs -m "$1"
+ fi
+}
+
+branch="$(git symbolic-ref --short HEAD)"
+case "$branch" in
+ "")
+ true
+ ;;
+ *config)
+ ln -sf "$branch".hs config.hs
+ git add config.hs
+ echo ".$branch" > privdata/relocate
+ git add privdata/relocate
+ commit "setting up $branch after merge"
+ ;;
+ *)
+ ln -sf config-simple.hs config.hs
+ git add config.hs
+ if [ -e privdata/relocate ]; then
+ rm -f privdata/relocate
+ git rm --quiet privdata/relocate
+ fi
+ commit "clean up after merge"
+ ;;
+esac