Skip to content

Commit 22d9440

Browse files
authored
Merge pull request #17531 from martinholters/revise_version
RFC: Revise version number generation
2 parents fe193b5 + 10670ab commit 22d9440

File tree

4 files changed

+52
-11
lines changed

4 files changed

+52
-11
lines changed

base/version.jl

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -206,9 +206,18 @@ A `VersionNumber` object describing which version of Julia is in use. For detail
206206
[Version Number Literals](:ref:`man-version-number-literals`).
207207
"""
208208
const VERSION = try
209-
# Include build number if we've got at least some distance from a tag (e.g. a release)
210-
build_number = GIT_VERSION_INFO.build_number != 0 ? "+$(GIT_VERSION_INFO.build_number)" : ""
211-
convert(VersionNumber, "$(VERSION_STRING)$(build_number)")
209+
ver = convert(VersionNumber, VERSION_STRING)
210+
if !isempty(ver.prerelease)
211+
build_number = GIT_VERSION_INFO.build_number
212+
if ver == v"0.5.0-pre"
213+
# due to change of reference for counting commits from last tag to last change of VERSION file
214+
build_number += 5578
215+
end
216+
ver = VersionNumber(ver.major, ver.minor, ver.patch, ver.prerelease, (build_number,))
217+
elseif GIT_VERSION_INFO.build_number != 0
218+
println("WARNING: ignoring non-zero build number for VERSION")
219+
end
220+
ver
212221
catch e
213222
println("while creating Base.VERSION, ignoring error $e")
214223
VersionNumber(0)

base/version_git.sh

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ origin=$(git config -l 2>/dev/null | grep 'remote\.\w*\.url.*JuliaLang/julia' |
3030
if [ -z "$origin" ]; then
3131
origin="origin/"
3232
fi
33-
last_tag=$(git describe --tags --abbrev=0)
3433
git_time=$(git log -1 --pretty=format:%ct)
3534

3635
#collect the contents
@@ -41,10 +40,15 @@ if [ -n "$(git status --porcelain)" ]; then
4140
commit_short="$commit_short"*
4241
fi
4342
branch=$(git branch | sed -n '/\* /s///p')
44-
# Some versions of wc (eg on OS X) add extra whitespace to their output.
45-
# The sed(1) call stops this from breaking the generated Julia's indentation by
46-
# stripping all non-digits.
47-
build_number=$(git rev-list HEAD ^$last_tag | wc -l | sed -e 's/[^[:digit:]]//g')
43+
44+
topdir=$(git rev-parse --show-toplevel)
45+
verchanged=$(git blame -L ,1 -sl -- "$topdir/VERSION" | cut -f 1 -d " ")
46+
if [ $verchanged = 0000000000000000000000000000000000000000 ]; then
47+
# uncommited change to VERSION
48+
build_number=0
49+
else
50+
build_number=$(git rev-list --count HEAD "^$verchanged")
51+
fi
4852

4953
date_string=$git_time
5054
case $(uname) in

contrib/commit-name.sh

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,34 @@
66

77
gitref=${1:-HEAD}
88

9-
last_tag=$(git describe --tags --abbrev=0 "$gitref")
109
ver=$(git show "$gitref:VERSION")
11-
nb=$(git rev-list --count "$gitref" "^$last_tag")
12-
echo "$ver+$nb"
10+
major=$(echo $ver | cut -f 1 -d .)
11+
minor=$(echo $ver | cut -f 2 -d .)
12+
13+
if [ $major = 0 -a $minor -lt 5 ]; then
14+
# use tag based build number prior to 0.5.0-
15+
last_tag=$(git describe --tags --abbrev=0 "$gitref")
16+
nb=$(git rev-list --count "$gitref" "^$last_tag")
17+
if [ $nb = 0 ]; then
18+
echo $ver
19+
else
20+
echo "$ver+$nb"
21+
fi
22+
else
23+
topdir=$(git rev-parse --show-toplevel)
24+
verchanged=$(git blame -L ,1 -sl $gitref -- "$topdir/VERSION" | cut -f 1 -d " ")
25+
nb=$(git rev-list --count "$gitref" "^$verchanged")
26+
pre=$(echo $ver | cut -s -f 2 -d "-")
27+
if [ $ver = "0.5.0-dev" ]; then
28+
# bump to 0.5.0-dev was one commit after tag during 0.5.0-dev
29+
nb=$(expr $nb + 1)
30+
elif [ $ver = "0.5.0-pre" ]; then
31+
# bump to 0.5.0-pre was 5578 commits after tag
32+
nb=$(expr $nb + 5578)
33+
fi
34+
if [ -n "$pre" ]; then
35+
echo "$ver+$nb"
36+
else
37+
echo $ver
38+
fi
39+
fi

test/version.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ import Base.issupbuild
116116
# basic comparison
117117
VersionNumber(2, 3, 1) == VersionNumber(Int8(2), UInt32(3), Int32(1)) == v"2.3.1"
118118
@test v"2.3.0" < v"2.3.1" < v"2.4.8" < v"3.7.2"
119+
@test v"0.6.0-" < v"0.6.0-dev" < v"0.6.0-dev.123" < v"0.6.0-dev.unknown" < v"0.6.0-pre" < v"0.6.0"
119120

120121
#lowerbound and upperbound
121122
import Base: lowerbound, upperbound

0 commit comments

Comments
 (0)