# HG changeset patch # Parent a88d0ef8a8985c81ef60e703f12f0296d0e240a3 # Date 1302634821 -7200 Flyspray: http://bugs.openttd.org/task/4588 - Support for Mercurial Patch Queue - don't grep the whole history log for svn revision detection diff --git a/findversion.sh b/findversion.sh --- a/findversion.sh +++ b/findversion.sh @@ -106,22 +106,29 @@ fi elif [ -d "$ROOT_DIR/.hg" ]; then # We are a hg checkout - if [ -n "`hg status | grep -v '^?'`" ]; then - MODIFIED="2" - fi HASH=`LC_ALL=C hg id -i | cut -c1-12` REV="h`echo $HASH | cut -c1-8`" BRANCH="`hg branch | sed 's@^default$@@'`" - TAG="`hg id -t | grep -v 'tip$'`" + if [ "`hg id -t | grep qtip`" ]; then + # Mercurial Patch Queue + TAG="`hg id -t -rqparent | sed "s/ /\n/g" | grep -v qparent | head -n1`" + REV_NR=`LC_ALL=C hg --debug log -rqparent | grep "extra: convert_revision=svn:" | sed "s/.*@//"` + MODIFIED="2" + else + TAG="`hg id -t | grep -v 'tip$'`" + REV_NR=`LC_ALL=C hg --debug parent | grep "extra: convert_revision=svn:" | sed "s/.*@//"` + if [ -n "`hg status | grep -v '^?'`" ]; then + MODIFIED="2" + fi + fi + if [ -z "$REV_NR" ]; then + # No rev? try alternative way + REV_NR=`LC_ALL=C hg log -f -k "(svn r" -l 1 --template "{desc|firstline}\n" | grep "^(svn r[0-9]*)" | sed "s@.*(svn r\([0-9]*\)).*@\1@"` + fi if [ -n "$TAG" ]; then BRANCH="" REV="$TAG" fi - REV_NR=`LC_ALL=C hg log -f -k "(svn r" -l 1 --template "{desc|firstline}\n" | grep "^(svn r[0-9]*)" | sed "s@.*(svn r\([0-9]*\)).*@\1@"` - if [ -z "$REV_NR" ]; then - # No rev? Maybe it is a custom hgsubversion clone - REV_NR=`LC_ALL=C hg parent --template="{svnrev}"` - fi elif [ -f "$ROOT_DIR/.ottdrev" ]; then # We are an exported source bundle cat $ROOT_DIR/.ottdrev