mirror of https://git.code.sf.net/p/isync/isync
Browse Source
this avoids the need for bumping the version, which is particularly helpful if one doesn't know yet whether the next release will be a patch, minor, or major. we cache the version extracted from git, which also provides a fallback for the case of somebody rebuilding configure from a tar-ball. note that it's impossible to determine the version at configure time, so after git-tagging you need to remember to run version.sh (or autoconf) prior to rolling a tar-ball.master
Oswald Buddenhagen
5 months ago
4 changed files with 40 additions and 2 deletions
@ -0,0 +1,36 @@
|
||||
#!/bin/sh |
||||
# SPDX-FileCopyrightText: (C) 2024 Oswald Buddenhagen <ossi@users.sf.net> |
||||
# SPDX-License-Identifier: GPL-2.0-or-later |
||||
|
||||
cd $(dirname $0) |
||||
|
||||
test -e .git || exit |
||||
|
||||
mb=$(git merge-base HEAD "@{upstream}" 2> /dev/null) |
||||
if test -z "$mb"; then |
||||
# we presume that a failure to find a merge base means no upstream. |
||||
# and no upstream may mean detached head in the middle of a rebase |
||||
br=$(git branch | sed -n -e 's/^\* (no branch, rebasing \([^\)]*\))$/\1/p') |
||||
if test -n "$br"; then |
||||
mb=$(git merge-base HEAD "$br@{upstream}" 2> /dev/null) |
||||
fi |
||||
fi |
||||
if test -z "$mb"; then |
||||
# still no upstream, so just describe HEAD as-is. |
||||
gver=$(git describe --tags HEAD) |
||||
else |
||||
# find out whether we have local work, and if so, collapse it into |
||||
# a single suffix. otherwise, we'd cause pointless rebuilds during |
||||
# development. |
||||
gver=$(git describe --tags $mb) |
||||
lcl=$(git rev-list -n 1 $mb..HEAD) |
||||
if test -n "$lcl"; then |
||||
gver="$gver-plus" |
||||
fi |
||||
fi |
||||
gver=${gver#v} |
||||
pgver=$(cat VERSION 2> /dev/null) |
||||
if [ "x$gver" != "x$pgver" ]; then |
||||
echo "$gver" > VERSION |
||||
fi |
||||
|
Loading…
Reference in new issue