diff options
Diffstat (limited to 'scripts/mk-patch-list.sh')
-rwxr-xr-x | scripts/mk-patch-list.sh | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/scripts/mk-patch-list.sh b/scripts/mk-patch-list.sh new file mode 100755 index 0000000..aa6aa6d --- /dev/null +++ b/scripts/mk-patch-list.sh @@ -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 |