X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=GIT-VERSION-GEN;h=e18a30a16a6bd671290ac466745c218fed669755;hb=e443bdfe1e8e1ef8b3665cfd1c1295bd73e13773;hp=65709437ff06a2b371fe70fd846922c73ebc23b0;hpb=942e6baa92846e5628752c65a22bc4957d8de4d0;p=git.git diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN index 65709437f..e18a30a16 100755 --- a/GIT-VERSION-GEN +++ b/GIT-VERSION-GEN @@ -1,80 +1,42 @@ #!/bin/sh GVF=GIT-VERSION-FILE -DEF_VER=0.16.GITGUI +DEF_VER=v1.7.8.GIT LF=' ' -tree_search () -{ - head=$1 - tree=$2 - for p in $(git rev-list --parents --max-count=1 $head 2>/dev/null) - do - test $tree = $(git rev-parse $p^{tree} 2>/dev/null) && - vn=$(git describe --abbrev=4 $p 2>/dev/null) && - case "$vn" in - gitgui-[0-9]*) echo $vn; break;; - esac - done -} - -# Always use the tarball version file if found, just -# in case we are somehow contained in a larger git -# repository that doesn't actually track our state. -# (At least one package manager is doing this.) -# -# We may be a subproject, so try looking for the merge -# commit that supplied this directory content if we are -# not at the toplevel. We probably will always be the -# second parent in the commit, but we shouldn't rely on -# that fact. -# -# If we are at the toplevel or the merge assumption fails -# try looking for a gitgui-* tag. - -if test -f version && - VN=$(cat version) +# First see if there is a version file (included in release tarballs), +# then try git-describe, then default. +if test -f version then - : happy -elif prefix="$(git rev-parse --show-prefix 2>/dev/null)" - test -n "$prefix" && - head=$(git rev-list --max-count=1 HEAD -- . 2>/dev/null) && - tree=$(git rev-parse --verify "HEAD:$prefix" 2>/dev/null) && - VN=$(tree_search $head $tree) - case "$VN" in - gitgui-[0-9]*) : happy ;; - *) (exit 1) ;; - esac + VN=$(cat version) || VN="$DEF_VER" +elif test -d .git -o -f .git && + VN=$(git describe --match "v[0-9]*" --abbrev=4 HEAD 2>/dev/null) && + case "$VN" in + *$LF*) (exit 1) ;; + v[0-9]*) + git update-index -q --refresh + test -z "$(git diff-index --name-only HEAD --)" || + VN="$VN-dirty" ;; + esac then - VN=$(echo "$VN" | sed -e 's/^gitgui-//;s/-/./g'); -elif VN=$(git describe --abbrev=4 HEAD 2>/dev/null) && - case "$VN" in - gitgui-[0-9]*) : happy ;; - *) (exit 1) ;; - esac -then - VN=$(echo "$VN" | sed -e 's/^gitgui-//;s/-/./g'); + VN=$(echo "$VN" | sed -e 's/-/./g'); else VN="$DEF_VER" fi -dirty=$(sh -c 'git diff-index --name-only HEAD' 2>/dev/null) || dirty= -case "$dirty" in -'') - ;; -*) - VN="$VN-dirty" ;; -esac +VN=$(expr "$VN" : v*'\(.*\)') if test -r $GVF then - VC=$(sed -e 's/^GITGUI_VERSION = //' <$GVF) + VC=$(sed -e 's/^GIT_VERSION = //' <$GVF) else VC=unset fi test "$VN" = "$VC" || { - echo >&2 "GITGUI_VERSION = $VN" - echo "GITGUI_VERSION = $VN" >$GVF + echo >&2 "GIT_VERSION = $VN" + echo "GIT_VERSION = $VN" >$GVF } + +