1b3d2b0c46
* 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
68 lines
1.8 KiB
Bash
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
|
|
}
|