]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
SCRIPTS: mk-patch-list: produce a list of patches
authorWilly Tarreau <w@1wt.eu>
Mon, 18 Dec 2023 19:34:38 +0000 (20:34 +0100)
committerWilly Tarreau <w@1wt.eu>
Mon, 18 Dec 2023 19:50:51 +0000 (20:50 +0100)
There does not seem to be a convenient way to tell git-show-backports to
produce individual patches with numbers. That's what this script does by
calling git-format-patch for each specified commit ID, letting git do all
the painful work (formatting etc). This has been mostly used during
backport sessions but was apparently never committed!

scripts/mk-patch-list.sh [new file with mode: 0755]

diff --git a/scripts/mk-patch-list.sh b/scripts/mk-patch-list.sh
new file mode 100755 (executable)
index 0000000..aa6aa6d
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+die() {
+       [ "$#" -eq 0 ] || echo "$*" >&2
+       exit 1
+}
+
+err() {
+       echo "$*" >&2
+}
+
+quit() {
+       [ "$#" -eq 0 ] || echo "$*"
+       exit 0
+}
+
+#### Main
+
+USAGE="Usage: ${0##*/} [-o <output_dir>] [-s <start_num>] [-b <base>] commit_id..."
+OUTPUT=
+BASE=
+NUM=
+
+while [ -n "$1" -a -z "${1##-*}" ]; do
+       case "$1" in
+               -b)        BASE="$2"      ; shift 2 ;;
+               -o)        OUTPUT="$2"    ; shift 2 ;;
+               -s)        NUM="$2"       ; shift 2 ;;
+               -h|--help) quit "$USAGE" ;;
+               *)         die  "$USAGE" ;;
+       esac
+done
+
+PATCHES=( "$@" )
+NUM=${NUM:-1}
+
+for p in ${PATCHES[@]}; do
+        if [ -n "$BASE" ]; then
+                # find the patch number from the base.
+                # E.g. v2.9-dev0-774-gd710dfbac
+                NUM=$(git describe --match "$BASE" "$p")
+                NUM=${NUM#"$BASE"-}
+                NUM=${NUM%-*}
+        fi
+        git format-patch -k -1 --start-number=$NUM ${OUTPUT:+-o $OUTPUT} "$p"
+        ((NUM++))
+done