aboutsummaryrefslogtreecommitdiff
path: root/git
diff options
context:
space:
mode:
Diffstat (limited to 'git')
-rw-r--r--git/template/hooks/applypatch-msg.awk39
1 files changed, 39 insertions, 0 deletions
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]
+}