haiku/build/scripts/determine_haiku_revision
Oliver Tappe 1b3d2b0c46 Simplify haiku-revision for git, now that we provide revision-tags in our central git repo:
* instead of describing the changeset from perspective of the current branch's root,
  we describe it relative to the last reachable hrev-tag


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41979 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-06 18:20:38 +00:00

68 lines
1.8 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-list -n1 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 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 [ "$revision" = "" ]; then
revision=0
fi
echo $revision >${haikuBuildOutputDir}/haiku-revision
cd $originalDir
}