From 9415696be1595d59b9b6316b493fa02ad73d979c Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Sat, 4 Feb 2012 21:27:15 -0800 Subject: Time-traveled get-scala-revision to 3-way merge base. --- tools/get-scala-revision | 44 ++++++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 16 deletions(-) (limited to 'tools') diff --git a/tools/get-scala-revision b/tools/get-scala-revision index b27b6ddc82..8441b29070 100755 --- a/tools/get-scala-revision +++ b/tools/get-scala-revision @@ -2,23 +2,35 @@ # # Usage: get-scala-revision [dir] # Figures out current scala revision of a git clone. -# # If no dir is given, current working dir is used. +# +# Example build version string: +# v2.10.0-M1-0098-g6f1c486d0b-2012-02-01 +# + +[[ $# -eq 0 ]] || cd "$1" + +ensure_tag () { + # v2.10.0-M1 + fallback=58cb15c40d + [[ -n $(git tag -l v2.10.0-M1) ]] || { + git tag -a -m "generated by get-scala-revision" v2.10.0-M1 $fallback + } +} +ensure_tag -# not like releases come out so often that we are duty-bound -# to recalculate this every time. -# git merge-base v2.8.2 v2.9.1 master -devbase="df13e31bbb" +# the closest tag, obtained separately because we have to +# reconstruct the string around the padded distance. +tag=$(git describe --match 'v2*' --abbrev=0) -# reimplementing git describe hopefully in a way which works -# without any particular tags, branches, or recent versions of git. -# this is supposed to generate -# dev-NNNN-g -# where NNNN is the number of commits since devbase, which -# is the merge-base of the most recent release and master. -# Presently hardcoded to reduce uncertainty, v2.8.2/v2.9.1/master. -commits=$(git --no-pager log --pretty=oneline $devbase..HEAD | wc -l) -sha=$(git rev-list -n 1 HEAD) -datestr=$(date "+%Y-%m-%d") +# the full string - padding correctness depends on abbrev=10. +described=$(git describe --match 'v2*' --abbrev=10) +suffix="${described##${tag}-}" +counter=$(echo $suffix | cut -d - -f 1) +hash=$(echo $suffix | cut -d - -f 2) -printf "rdev-%s-%s-g%s\n" $commits $datestr ${sha:0:7} +# 016 is rocket-surgically-calibrated to pad the distance from the +# tag to the current commit into a 4-digit number - since maven +# will be treating this as a string, the ide depends on +# 10 being greater than 9 (thus 0010 and 00009.) +printf "%s-%04d-%10s-%s\n" "$tag" "$counter" "$hash" $(date "+%Y-%m-%d") -- cgit v1.2.3 From 69c2eb5ad21848ab6b326c71c157288432e6a9f5 Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Sat, 4 Feb 2012 21:34:51 -0800 Subject: Establish more baseline tags. So we can turn out a build string regardless of local conditions. --- tools/get-scala-revision | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) (limited to 'tools') diff --git a/tools/get-scala-revision b/tools/get-scala-revision index 8441b29070..8747fdc3fb 100755 --- a/tools/get-scala-revision +++ b/tools/get-scala-revision @@ -11,26 +11,31 @@ [[ $# -eq 0 ]] || cd "$1" ensure_tag () { - # v2.10.0-M1 - fallback=58cb15c40d - [[ -n $(git tag -l v2.10.0-M1) ]] || { - git tag -a -m "generated by get-scala-revision" v2.10.0-M1 $fallback + sha=$1 + rev=$2 + + [[ -n $(git tag -l $rev) ]] || { + git tag -a -m "generated by get-scala-revision" $rev $sha } } -ensure_tag + +# Ensure some baseline tags are present so if this repository's +# tags are screwed up or stale, we should still have a reference +# point for a build string. +ensure_tag 58cb15c40d v2.10.0-M1 +ensure_tag 29f3eace1e v2.9.1 +ensure_tag b0d78f6b9c v2.8.2 # the closest tag, obtained separately because we have to # reconstruct the string around the padded distance. -tag=$(git describe --match 'v2*' --abbrev=0) +tag=$(git describe --tags --match 'v2*' --abbrev=0) -# the full string - padding correctness depends on abbrev=10. -described=$(git describe --match 'v2*' --abbrev=10) +# printf %016s is not portable for 0-padding, has to be a digit. +# so we're stuck disassembling it. +described=$(git describe --tags --match 'v2*' --abbrev=10) suffix="${described##${tag}-}" counter=$(echo $suffix | cut -d - -f 1) hash=$(echo $suffix | cut -d - -f 2) -# 016 is rocket-surgically-calibrated to pad the distance from the -# tag to the current commit into a 4-digit number - since maven -# will be treating this as a string, the ide depends on -# 10 being greater than 9 (thus 0010 and 00009.) -printf "%s-%04d-%10s-%s\n" "$tag" "$counter" "$hash" $(date "+%Y-%m-%d") +# v2.10.0-M1-0098-g6f1c486d0b-2012-02-01 +printf "%s-%04d-%s-%s\n" "$tag" "$counter" "$hash" $(date "+%Y-%m-%d") -- cgit v1.2.3