On 13/09/2022 09:10, Johnny S. Lee via Dnsmasq-discuss wrote:
How about something like the following? diff --git a/VERSION b/VERSION index 998eb1f..29a22f8 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -$Format:%d$ +$Format:%d;%(describe)$ diff --git a/bld/get-version b/bld/get-version index 1f51768..4ba3646 100755 --- a/bld/get-version +++ b/bld/get-version @@ -24,13 +24,19 @@ if which git >/dev/null 2>&1 && \ ([ -d .git ] || grep '^gitdir:' .git >/dev/null 2>&1) && \ git describe >/dev/null 2>&1; then git describe | sed 's/^v//' -elif grep '\$Format:%d\$' $1/VERSION >/dev/null 2>&1; then +elif grep '\$Format:%d;%(describe)\$' $1/VERSION >/dev/null 2>&1; then # unsubstituted VERSION, but no git available. echo UNKNOWN else - vers=`cat $1/VERSION | sed 's/[(), ]/,/ g' | tr ',' '\n' | grep ^v[0-9]` + vers=`cut -d';' -f1 $1/VERSION | sed 's/[(), ]/,/ g' | tr ',' '\n' | grep ^v[0-9]` + ret=$? - if [ $? -eq 0 ]; then + if [ ${ret} -ne 0 ]; then + vers=`cut -d';' -f2 $1/VERSION | grep ^v[0-9]` + ret=$? + fi + + if [ ${ret} -eq 0 ]; then echo "${vers}" | sort -k1.2,1.5Vr -k1.6,1.6 -k1.8,1.9Vr -k1.10,1.11Vr | head -n 1 | sed 's/^v//' else cat $1/VERSION This appends ";%(describe)" to the format. The script will try to parse the contents of %d first, then %(describe). This should have minimal impact.
Thanks for that. Reading up more, I think that just going to %(describe) is the way to go. It seems to do exactly what's needed, and avoids all the crazy sorting to get the latest commit from the output of %d. get-version therefore gets simpler, which is better adding complexity.
Simon. _______________________________________________ Dnsmasq-discuss mailing list Dnsmasq-discuss@lists.thekelleys.org.uk https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss