haiku/build/scripts/determine_haiku_revision
Augustin Cavalier 563a1a0da1 determine_haiku_revision: Rework "no tag on HEAD" output.
When HEAD is tagged, the output will be identical to what it was
before (the latest hrev tag and nothing else.) When HEAD is not tagged,
and the most recent tag is further back, we now use a format like this:

hrevXXXXX+N(+dirty)

... where N is the number of commits since hrevXXXXX, and +dirty is added
if the working tree is dirty. This is significantly shorter than the
previous model (as it does not have the Git revision.)

Fixes #14445.

Change-Id: Ide7f66cf0ac1c1f05402afc52b6be3b68b66d6dc
Reviewed-on: https://review.haiku-os.org/566
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2018-09-16 00:09:14 +00:00

57 lines
1.4 KiB
Bash
Executable File

#!/bin/sh
haikuTop=$1
revisionFile=$2
haikuBuildOutputDir=`dirname $revisionFile`
lastBuiltRevisionFile=${haikuBuildOutputDir}/last-built-revision
case `uname` in
Darwin)
SED=gsed
;;
*)
SED=sed
;;
esac
export SED
revision=`cat ${revisionFile} 2>/dev/null`
lastBuiltRevision=`cat $lastBuiltRevisionFile 2>/dev/null`
originalDir=`pwd`
cd ${haikuTop}
export LC_ALL=C
localRev=`git rev-parse HEAD`
# only determine the haiku-revision if anything has changed from the
# last build
if [ -z "$revision" -o "$lastBuiltRevision" != "$localRev" ]; then
# the revision we use is the description of HEAD with respect to the
# last reachable hrev-(haiku-revision-)tag
revision=`git describe --dirty --tags --match=hrev* --abbrev=1`
if [ -z "$revision" ]; then
# failed to find any hrev tags, bail out
echo "Error: you are using a Haiku clone without tags, please set"
echo " the revision tag to use (e.g. HAIKU_REVISION=hrev43210)"
exit 1
fi
revision=`echo $revision | sed 's/-g.....//' | sed 's/-/+/g'`
if echo "$revision" | grep -- '-' >/dev/null; then
# HEAD is not directly a changeset from Haiku's central repo, so we
# add the current branch name as additional info
branchName=`git branch | grep '*' | cut -b 3-`
revision="$revision [$branchName]"
fi
fi
cd $originalDir
if [ -z "$revision" ]; then
revision=0
fi
echo $localRev >${lastBuiltRevisionFile}
echo $revision >${revisionFile}