Procházet zdrojové kódy

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 <[email protected]>
Jonas Gorski před 9 roky
rodič
revize
4eb5aad667
1 změnil soubory, kde provedl 14 přidání a 5 odebrání
  1. 14 5
      scripts/getver.sh

+ 14 - 5
scripts/getver.sh

@@ -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)"
-		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}')"
 		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
+
+		if [ "$REV" -gt "$UPSTREAM_REV" ]; then
+			REV="${UPSTREAM_REV}+$((REV - UPSTREAM_REV))"
 		fi
 		fi
+
+		REV="${REV:+r$REV}"
 		;;
 		;;
 	esac
 	esac