From 06a5d8b1aaed777ba584c2a93eb358342cdd6526 Mon Sep 17 00:00:00 2001 From: Martin Holters Date: Thu, 21 Jul 2016 10:43:20 +0200 Subject: [PATCH] Revise build number computation Use commits since last change to VERSION file instead of commits since last tag. Build number is appended if VERSION ends in -dev or -pre. To maintain consistency for 0.5.0-dev versions, the number of commits is incremented by one for these (last tag was one commit before change to VERSION). --- base/version.jl | 15 ++++++++++++--- base/version_git.sh | 14 +++++++++----- contrib/commit-name.sh | 33 ++++++++++++++++++++++++++++++--- 3 files changed, 51 insertions(+), 11 deletions(-) diff --git a/base/version.jl b/base/version.jl index 60410e390e563..219d1e08c6774 100644 --- a/base/version.jl +++ b/base/version.jl @@ -206,9 +206,18 @@ A `VersionNumber` object describing which version of Julia is in use. For detail [Version Number Literals](:ref:`man-version-number-literals`). """ const VERSION = try - # Include build number if we've got at least some distance from a tag (e.g. a release) - build_number = GIT_VERSION_INFO.build_number != 0 ? "+$(GIT_VERSION_INFO.build_number)" : "" - convert(VersionNumber, "$(VERSION_STRING)$(build_number)") + ver = convert(VersionNumber, VERSION_STRING) + if !isempty(ver.prerelease) + build_number = GIT_VERSION_INFO.build_number + if ver == v"0.5.0-pre" + # due to change of reference for counting commits from last tag to last change of VERSION file + build_number += 5578 + end + ver = VersionNumber(ver.major, ver.minor, ver.patch, ver.prerelease, (build_number,)) + elseif GIT_VERSION_INFO.build_number != 0 + println("WARNING: ignoring non-zero build number for VERSION") + end + ver catch e println("while creating Base.VERSION, ignoring error $e") VersionNumber(0) diff --git a/base/version_git.sh b/base/version_git.sh index 38699a59092ee..97d3cc05d78f5 100644 --- a/base/version_git.sh +++ b/base/version_git.sh @@ -30,7 +30,6 @@ origin=$(git config -l 2>/dev/null | grep 'remote\.\w*\.url.*JuliaLang/julia.git if [ -z "$origin" ]; then origin="origin/" fi -last_tag=$(git describe --tags --abbrev=0) git_time=$(git log -1 --pretty=format:%ct) #collect the contents @@ -41,10 +40,15 @@ if [ -n "$(git status --porcelain)" ]; then commit_short="$commit_short"* fi branch=$(git branch | sed -n '/\* /s///p') -# Some versions of wc (eg on OS X) add extra whitespace to their output. -# The sed(1) call stops this from breaking the generated Julia's indentation by -# stripping all non-digits. -build_number=$(git rev-list HEAD ^$last_tag | wc -l | sed -e 's/[^[:digit:]]//g') + +topdir=$(git rev-parse --show-toplevel) +verchanged=$(git blame -L ,1 -sl -- "$topdir/VERSION" | cut -f 1 -d " ") +if [ $verchanged = 0000000000000000000000000000000000000000 ]; then + # uncommited change to VERSION + build_number=0 +else + build_number=$(git rev-list --count HEAD "^$verchanged") +fi date_string=$git_time case $(uname) in diff --git a/contrib/commit-name.sh b/contrib/commit-name.sh index aa8b6a1f37dc8..09c8dcded1e75 100755 --- a/contrib/commit-name.sh +++ b/contrib/commit-name.sh @@ -6,7 +6,34 @@ gitref=${1:-HEAD} -last_tag=$(git describe --tags --abbrev=0 "$gitref") ver=$(git show "$gitref:VERSION") -nb=$(git rev-list --count "$gitref" "^$last_tag") -echo "$ver+$nb" +major=$(echo $ver | cut -f 1 -d .) +minor=$(echo $ver | cut -f 2 -d .) + +if [ $major = 0 -a $minor -lt 5 ]; then + # use tag based build number prior to 0.5.0- + last_tag=$(git describe --tags --abbrev=0 "$gitref") + nb=$(git rev-list --count "$gitref" "^$last_tag") + if [ $nb = 0 ]; then + echo $ver + else + echo "$ver+$nb" + fi +else + topdir=$(git rev-parse --show-toplevel) + verchanged=$(git blame -L ,1 -sl $gitref -- "$topdir/VERSION" | cut -f 1 -d " ") + nb=$(git rev-list --count "$gitref" "^$verchanged") + pre=$(echo $ver | cut -s -f 2 -d "-") + if [ $ver = "0.5.0-dev" ]; then + # bump to 0.5.0-dev was one commit after tag during 0.5.0-dev + nb=$(expr $nb + 1) + elif [ $ver = "0.5.0-pre" ]; then + # bump to 0.5.0-pre was 5578 commits after tag + nb=$(expr $nb + 5578) + fi + if [ -n "$pre" ]; then + echo "$ver+$nb" + else + echo $ver + fi +fi