scripts/getver.sh: try to get branch/upstream automatically

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>
This commit is contained in:
Jonas Gorski 2016-06-25 15:58:35 +02:00
parent efa1960abb
commit 4eb5aad667
1 changed files with 14 additions and 5 deletions

View File

@ -23,14 +23,23 @@ try_git() {
REV="$(git rev-parse HEAD~$((BASE_REV - GET_REV)))" REV="$(git rev-parse HEAD~$((BASE_REV - GET_REV)))"
;; ;;
*) *)
UPSTREAM_BASE="$(git merge-base $GET_REV origin/master)" BRANCH="$(git rev-parse --abbrev-ref HEAD)"
UPSTREAM_REV="$(git rev-list reboot..$UPSTREAM_BASE | wc -l | awk '{print $1}')" 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}')" 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 else
REV="${REV:+r$REV}" UPSTREAM_REV=$REV
fi fi
if [ "$REV" -gt "$UPSTREAM_REV" ]; then
REV="${UPSTREAM_REV}+$((REV - UPSTREAM_REV))"
fi
REV="${REV:+r$REV}"
;; ;;
esac esac