SCRIPTS: teach git-show-backports how to report upstream commits
When git-show-backports is called with -u, instead of reporting the
commit IDs of the original branch on the left, it will display the
upstream commit IDs when such IDs are known, and will also display
them in the suggested "git cherry-pick" command line. This is useful
when the new branch is more recent than the one being checked and/or
it is desired to get rid of intermediary changes.
diff --git a/scripts/git-show-backports b/scripts/git-show-backports
index 0f4382b..d8854bf 100755
--- a/scripts/git-show-backports
+++ b/scripts/git-show-backports
@@ -28,7 +28,7 @@
# show-backports -q -m -r hapee-r2 hapee-r1
-USAGE="Usage: ${0##*/} [-q] [-m] [-r reference] [-l logexpr] [-s subject] [-b base] branch [...]"
+USAGE="Usage: ${0##*/} [-q] [-m] [-u] [-r reference] [-l logexpr] [-s subject] [-b base] branch [...]"
BRANCHES=( )
REF=master
BASE=
@@ -36,6 +36,7 @@
LOGEXPR=
SUBJECT=
MISSING=
+UPSTREAM=
die() {
[ "$#" -eq 0 ] || echo "$*" >&2
@@ -73,7 +74,7 @@
upstream="none"
missing=0
- line="$(short $ref)"
+ line=""
for branch in "${BRANCHES[@]}"; do
set -- $(grep -m 1 $ref "$WORK/${branch//\//_}")
newhash=$1 ; shift
@@ -116,7 +117,11 @@
if [ -z "$MISSING" -o $missing -gt 0 ]; then
[ $((count++)) -gt 0 ] || echo $title
[ "$QUIET" != "" -o $count -lt 20 ] || count=0
- echo "$line"
+ if [ -z "$UPSTREAM" -o "$upstream" = "none" -o -z "$upstream" ]; then
+ echo "$(short $ref) $line"
+ else
+ echo "$(short $upstream) $line"
+ fi
fi
done < "$WORK/${REF//\//_}"
}
@@ -129,6 +134,7 @@
-s) SUBJECT="$2" ; shift 2 ;;
-q) QUIET=1 ; shift ;;
-m) MISSING=1 ; shift ;;
+ -u) UPSTREAM=1 ; shift ;;
-h|--help) quit "$USAGE" ;;
*) die "$USAGE" ;;
esac