1218893Sdim#!/bin/sh 2193326Sed 3193326SeddetermineGitRevision() 4193326Sed{ 5193326Sed haikuTop=$1 6193326Sed haikuBuildOutputDir=$2 7193326Sed 8193326Sed revision=`cat ${haikuBuildOutputDir}/haiku-revision 2>/dev/null` 9193326Sed lastBuiltRevision=`cat ${haikuBuildOutputDir}/last-built-revision \ 10193326Sed 2>/dev/null` 11226633Sdim localRev=`git rev-parse HEAD` 12193326Sed 13193326Sed # only determine the haiku-revision if anything has changed from 14263508Sdim # last build 15193326Sed if [ -z "$revision" -o "$lastBuiltRevision" != "$localRev" ]; then 16193326Sed # the revision we use is the description of HEAD with respect to the 17205219Srdivacky # last reachable hrev-(haiku-revision-)tag 18205219Srdivacky revision=`git describe --dirty --tags --match=hrev*` 19205219Srdivacky if [ -z "$revision" ]; then 20205219Srdivacky # failed to find any hrev tags, use short hash instead 21193326Sed revision=`git rev-parse --short HEAD` 22193326Sed elif echo "$revision" | grep -- '-' >/dev/null; then 23193326Sed # HEAD is not directly a changeset from Haiku's central repo, so we 24193326Sed # add the current branch name as additional info 25193326Sed branchName=`git branch | grep '*' | cut -b 3-` 26193326Sed revision="$revision [$branchName]" 27193326Sed fi 28193326Sed echo $localRev >${haikuBuildOutputDir}/last-built-revision 29193326Sed fi 30234353Sdim} 31193326Sed 32193326Sed 33193326SeddetermineHaikuRevision() 34193326Sed{ 35210299Sed haikuTop=$1 36226633Sdim haikuBuildOutputDir=$2 37193326Sed 38198092Srdivacky case `uname` in 39226633Sdim Darwin) 40193326Sed SED=gsed 41193326Sed ;; 42234353Sdim *) 43234353Sdim SED=sed 44198092Srdivacky ;; 45193326Sed esac 46193326Sed export SED 47193326Sed 48234353Sdim originalDir=`pwd` 49234353Sdim cd ${haikuTop} 50198092Srdivacky export LC_ALL=C 51193326Sed if [ -d .svn ]; then 52193326Sed revision=`svn info 2>/dev/null | grep Revision | awk '{printf $2}'` 53193326Sed elif [ -d .git/svn ]; then 54234353Sdim revision=`git svn info 2>/dev/null | grep Revision | awk '{printf $2}'` 55234353Sdim elif [ -d .git ]; then 56193326Sed determineGitRevision $haikuTop $haikuBuildOutputDir 57193326Sed elif [ -d .hg ]; then 58193326Sed # Try searching hg log for last svn commit 59193326Sed # Extract from "(svn r12345) ..." line 60198092Srdivacky revision=`(cd ${haikuTop} && 61193326Sed hg log --no-merges --template "{desc|firstline}\n") 2> /dev/null | 62193326Sed grep --max-count=1 "(svn r" | 63193326Sed $SED -n -e 's,(svn r\(.*\)).*,\1,p'` 64234353Sdim fi 65234353Sdim if [ -z "$revision" ]; then 66193326Sed revision=0 67193326Sed fi 68193326Sed echo $revision >${haikuBuildOutputDir}/haiku-revision 69193326Sed cd $originalDir 70234353Sdim} 71234353Sdim