d86bc7f95e
If no hrev tags are found the revision is blank and shows up as 0 in About System. This commit updates the revision function so that it falls back to the current short hash instead. Only affects devel builds and only if you've deleted your tags.
71 lines
1.9 KiB
Bash
71 lines
1.9 KiB
Bash
#!/bin/sh
|
|
|
|
determineGitRevision()
|
|
{
|
|
haikuTop=$1
|
|
haikuBuildOutputDir=$2
|
|
|
|
revision=`cat ${haikuBuildOutputDir}/haiku-revision 2>/dev/null`
|
|
lastBuiltRevision=`cat ${haikuBuildOutputDir}/last-built-revision \
|
|
2>/dev/null`
|
|
localRev=`git rev-parse HEAD`
|
|
|
|
# only determine the haiku-revision if anything has changed from
|
|
# 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*`
|
|
if [ -z "$revision" ]; then
|
|
# failed to find any hrev tags, use short hash instead
|
|
revision=`git rev-parse --short HEAD`
|
|
elif 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
|
|
echo $localRev >${haikuBuildOutputDir}/last-built-revision
|
|
fi
|
|
}
|
|
|
|
|
|
determineHaikuRevision()
|
|
{
|
|
haikuTop=$1
|
|
haikuBuildOutputDir=$2
|
|
|
|
case `uname` in
|
|
Darwin)
|
|
SED=gsed
|
|
;;
|
|
*)
|
|
SED=sed
|
|
;;
|
|
esac
|
|
export SED
|
|
|
|
originalDir=`pwd`
|
|
cd ${haikuTop}
|
|
export LC_ALL=C
|
|
if [ -d .svn ]; then
|
|
revision=`svn info 2>/dev/null | grep Revision | awk '{printf $2}'`
|
|
elif [ -d .git/svn ]; then
|
|
revision=`git svn info 2>/dev/null | grep Revision | awk '{printf $2}'`
|
|
elif [ -d .git ]; then
|
|
determineGitRevision $haikuTop $haikuBuildOutputDir
|
|
elif [ -d .hg ]; then
|
|
# Try searching hg log for last svn commit
|
|
# Extract from "(svn r12345) ..." line
|
|
revision=`(cd ${haikuTop} &&
|
|
hg log --no-merges --template "{desc|firstline}\n") 2> /dev/null |
|
|
grep --max-count=1 "(svn r" |
|
|
$SED -n -e 's,(svn r\(.*\)).*,\1,p'`
|
|
fi
|
|
if [ -z "$revision" ]; then
|
|
revision=0
|
|
fi
|
|
echo $revision >${haikuBuildOutputDir}/haiku-revision
|
|
cd $originalDir
|
|
}
|