aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Makefile3
-rw-r--r--git/template/hooks/applypatch-msg.awk39
3 files changed, 42 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
index 6b634a75..eac8c28d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -170,6 +170,7 @@
/games/zs
/git/gitconfig
/git/gitconfig.m4
+/git/template/hooks/applypatch-msg
/git/template/hooks/post-update
/gnupg/gpg.conf
/gnupg/gpg.conf.m4
diff --git a/Makefile b/Makefile
index 27b2ad2b..e9d05aeb 100644
--- a/Makefile
+++ b/Makefile
@@ -263,7 +263,8 @@ GAMES = games/aaf \
games/xyzzy \
games/zs
-GIT_TEMPLATE_HOOKS = git/template/hooks/post-update
+GIT_TEMPLATE_HOOKS = git/template/hooks/applypatch-msg \
+ git/template/hooks/post-update
all: $(BINS) git/gitconfig $(GIT_TEMPLATE_HOOKS) gnupg/gpg.conf
diff --git a/git/template/hooks/applypatch-msg.awk b/git/template/hooks/applypatch-msg.awk
new file mode 100644
index 00000000..d1c08c56
--- /dev/null
+++ b/git/template/hooks/applypatch-msg.awk
@@ -0,0 +1,39 @@
+# Filter to clean up a merge commit; still experimental on tejr's part.
+
+# If the first word of the subject line of the commit message is 'Merge', we
+# know we need to rewrite this; otherwise we can just bail out directly
+NR == 1 {
+ if (!(rewrite = ($1 == "Merge")))
+ exit(0)
+}
+
+# We're starting a new branch; save the whole line into a variable and skip to
+# the next line
+/^\* / {
+ branch = $0
+ next
+}
+
+# Skip this commit, it's just a version number bump
+# Other patterns to skip go HERE; be as precise as you can
+/^ Bump VERSION$/ { next }
+
+# If we got past this point, we have an actual commit line to include, so if
+# there's a branch heading yet to print, we should do so now; add it to the
+# line buffer
+length(branch) {
+ lines[++l] = branch
+ branch = ""
+}
+
+# Add the current line to the line buffer
+{ lines[++l] = $0 }
+
+# When we get to the end of the file, we need to decide whether we're going to
+# rewrite the whole thing; note that the exit(0) call above still ends up down
+# here, so we have to check and set a flag
+END {
+ if (rewrite)
+ for (i = 1; i <= l; i++)
+ print lines[i] > ARGV[1]
+}