0
0
mirror of https://git.openwrt.org/openwrt/openwrt.git synced 2025-10-30 19:05:47 +00:00
Files
openwrt/scripts/getver.sh
Bjørn Mork ae9c9d0f8e build: parsing "git log" breaks with gpg signature verification
Parsing "git log" is fragile.  The actual output depends on both global and
local configuration files. Enabling "log.showSignature" makes "git log" prefix
signed commits with multiple lines of gpg verify output, regardless of the
configured log format.

Add "--no-show-signature" to "git log" commands to work around this particular
issue.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Link: https://github.com/openwrt/openwrt/pull/20127
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-23 21:49:54 +02:00

63 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
export LANG=C
export LC_ALL=C
[ -n "$TOPDIR" ] && cd $TOPDIR
GET_REV=$1
try_version() {
[ -f version ] || return 1
REV="$(cat version)"
[ -n "$REV" ]
}
try_git() {
REBOOT=ee53a240ac902dc83209008a2671e7fdcf55957a
git rev-parse --git-dir >/dev/null 2>&1 || return 1
[ -n "$GET_REV" ] || GET_REV="HEAD"
case "$GET_REV" in
r*)
GET_REV="$(echo $GET_REV | tr -d 'r')"
BASE_REV="$(git rev-list ${REBOOT}..HEAD 2>/dev/null | wc -l | awk '{print $1}')"
[ $((BASE_REV - GET_REV)) -ge 0 ] && REV="$(git rev-parse HEAD~$((BASE_REV - GET_REV)))"
;;
*-*-*) # ISO date format - for approximating when packages were removed or renamed
GET_REV="$(git log -n 1 --format="%h" --until "$GET_REV")"
;& # FALLTHROUGH
*)
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
ORIGIN="$(git rev-parse --verify --symbolic-full-name ${BRANCH}@{u} 2>/dev/null)"
[ -n "$ORIGIN" ] || ORIGIN="$(git rev-parse --verify --symbolic-full-name main@{u} 2>/dev/null)"
REV="$(git rev-list ${REBOOT}..$GET_REV 2>/dev/null | wc -l | awk '{print $1}')"
if [ -n "$ORIGIN" ]; then
UPSTREAM_BASE="$(git merge-base $GET_REV $ORIGIN)"
UPSTREAM_REV="$(git rev-list ${REBOOT}..$UPSTREAM_BASE 2>/dev/null | wc -l | awk '{print $1}')"
else
UPSTREAM_REV=0
fi
if [ "$REV" -gt "$UPSTREAM_REV" ]; then
REV="${UPSTREAM_REV}+$((REV - UPSTREAM_REV))"
fi
REV="${REV:+r$REV-$(git log -n 1 --no-show-signature --format="%h" $UPSTREAM_BASE)}"
;;
esac
[ -n "$REV" ]
}
try_hg() {
[ -d .hg ] || return 1
REV="$(hg log -r-1 --template '{desc}' | awk '{print $2}' | sed 's/\].*//')"
REV="${REV:+r$REV}"
[ -n "$REV" ]
}
try_version || try_git || try_hg || REV="unknown"
echo "$REV"