scripts/getver.sh: try to get branch/upstream automatically
authorJonas Gorski <jonas.gorski@gmail.com>
Sat, 25 Jun 2016 13:58:35 +0000 (15:58 +0200)
committerJonas Gorski <jonas.gorski@gmail.com>
Wed, 13 Jul 2016 14:55:32 +0000 (16:55 +0200)
Instead of assuming master is the current branch and origin the right
upstream, try to get both dynamically. If the current branch is not
tracking any upstream, use the origin of the master branch.

Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
scripts/getver.sh

index 5d8788f20200906fa8c0326d2e7e3242b3b1c691..38d526cb532cc00be0e91c8575674de733fb15d9 100755 (executable)
@@ -23,14 +23,23 @@ try_git() {
                REV="$(git rev-parse HEAD~$((BASE_REV - GET_REV)))"
                ;;
        *)
-               UPSTREAM_BASE="$(git merge-base $GET_REV origin/master)"
-               UPSTREAM_REV="$(git rev-list reboot..$UPSTREAM_BASE | wc -l | awk '{print $1}')"
+               BRANCH="$(git rev-parse --abbrev-ref HEAD)"
+               ORIGIN="$(git rev-parse --symbolic-full-name ${BRANCH}@{u} 2>/dev/null)"
+               [ -n "$ORIGIN" ] || ORIGIN="$(git rev-parse --symbolic-full-name master@{u} 2>/dev/null)"
                REV="$(git rev-list reboot..$GET_REV | wc -l | awk '{print $1}')"
-               if [ -n "$REV" -a -n "$UPSTREAM_REV" -a "$REV" -gt "$UPSTREAM_REV" ]; then
-                       REV="r${UPSTREAM_REV}+$((REV - UPSTREAM_REV))"
+
+               if [ -n "$ORIGIN" ]; then
+                       UPSTREAM_BASE="$(git merge-base $GET_REV $ORIGIN)"
+                       UPSTREAM_REV="$(git rev-list reboot..$UPSTREAM_BASE | wc -l | awk '{print $1}')"
                else
-                       REV="${REV:+r$REV}"
+                       UPSTREAM_REV=$REV
+               fi
+
+               if [ "$REV" -gt "$UPSTREAM_REV" ]; then
+                       REV="${UPSTREAM_REV}+$((REV - UPSTREAM_REV))"
                fi
+
+               REV="${REV:+r$REV}"
                ;;
        esac