X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=generate-version.sh;h=7d2ef6fd0bf651f77ee5ea098018283b2f90f8f5;hb=HEAD;hp=c2c4b639818e2b6b4b9dba90a85bffc2451b12b2;hpb=db237f92af6442ca970be4f5af9d10d9d247e4ef;p=sbcl.git diff --git a/generate-version.sh b/generate-version.sh index c2c4b63..7d2ef6f 100755 --- a/generate-version.sh +++ b/generate-version.sh @@ -4,18 +4,19 @@ git_available_p() { # Check that (1) we have git (2) this is a git tree. if ( which git >/dev/null 2>/dev/null && git describe >/dev/null 2>/dev/null ) then - true + echo "ok" else - false + echo "" fi } generate_version() { - if [ -f version.lisp-expr -a ! git_available_p ] + AVAILABLE=`git_available_p` + if [ -f version.lisp-expr -a -z "$AVAILABLE" ] then # Relase tarball, leave version.lisp-expr alone. return - elif [ ! git_available_p ] + elif [ -z "$AVAILABLE" ] then echo "Can't run 'git describe' and version.lisp-expr is missing." >&2 echo "To fix this, either install git or create a fake version.lisp-expr file." >&2 @@ -25,9 +26,23 @@ generate_version() { fi # Build it. version_head=`git rev-parse HEAD` + if grep -q "ref: refs/heads/.*" .git/HEAD > /dev/null 2>&1 + then + version_branchname=`cut -d / -f 3- < .git/HEAD` + else + # Detached head. + version_branchname="HEAD" + fi if [ -z "$SBCL_BUILDING_RELEASE_FROM" ] then - version_root="origin/master" + if [ "`git rev-list HEAD --not origin/master`" = '' ] + then + # If origin/master contains all the commits on current + # branch, use current head as the root instead. + version_root="$version_branchname" + else + version_root="origin/master" + fi else version_root="$SBCL_BUILDING_RELEASE_FROM" fi @@ -70,7 +85,6 @@ EOF else echo "base=$version_base" echo "head=$version_head" - version_branchname=`git describe --contains --all HEAD` printf "\"%s.%s.%s.%s%s%s\"\n" \ $version_release $version_n_root \ $version_branchname $version_n_branch \