mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-13 07:10:57 +00:00
115 lines
3.3 KiB
Bash
Executable File
115 lines
3.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# $Id$
|
|
|
|
# This file is part of OpenTTD.
|
|
# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
|
# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
# See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
# Arguments given? Show help text.
|
|
if [ "$#" != "0" ]; then
|
|
cat <<EOF
|
|
Usage: ./findversion.sh
|
|
Finds the current revision and if the code is modified.
|
|
|
|
Output: <VERSION>\t<ISODATE>\t<MODIFIED>\t<HASH>
|
|
VERSION
|
|
a string describing what version of the code the current checkout is
|
|
based on.
|
|
This also includes the commit date, an indication of whether the checkout
|
|
was modified and which branch was checked out. This value is not
|
|
guaranteed to be sortable, but is mainly meant for identifying the
|
|
revision and user display.
|
|
|
|
If no revision identifier could be found, this is left empty.
|
|
ISODATE
|
|
the commit date of the revision this checkout is based on.
|
|
The commit date may differ from the author date.
|
|
This can be used to decide upon the age of the source.
|
|
|
|
If no timestamp could be found, this is left empty.
|
|
MODIFIED
|
|
Whether (the src directory of) this checkout is modified or not. A
|
|
value of 0 means not modified, a value of 2 means it was modified.
|
|
|
|
A value of 1 means that the modified status is unknown, because this
|
|
is not an git checkout for example.
|
|
|
|
HASH
|
|
the git revision hash
|
|
|
|
By setting the AWK environment variable, a caller can determine which
|
|
version of "awk" is used. If nothing is set, this script defaults to
|
|
"awk".
|
|
EOF
|
|
exit 1;
|
|
fi
|
|
|
|
# Allow awk to be provided by the caller.
|
|
if [ -z "$AWK" ]; then
|
|
AWK=awk
|
|
fi
|
|
|
|
# Find out some dirs
|
|
cd `dirname "$0"`
|
|
ROOT_DIR=`pwd`
|
|
|
|
# Determine if we are using a modified version
|
|
# Assume the dir is not modified
|
|
MODIFIED="0"
|
|
if [ -d "$ROOT_DIR/.git" ]; then
|
|
# We are a git checkout
|
|
# Refresh the index to make sure file stat info is in sync, then look for modifications
|
|
git update-index --refresh >/dev/null
|
|
if [ -n "`git diff-index HEAD`" ]; then
|
|
MODIFIED="2"
|
|
fi
|
|
HASH=`LC_ALL=C git rev-parse --verify HEAD 2>/dev/null`
|
|
SHORTHASH=`echo ${HASH} | cut -c1-10`
|
|
ISODATE=`LC_ALL=C git show -s --pretty='format:%ci' HEAD | "$AWK" '{ gsub("-", "", $1); print $1 }'`
|
|
BRANCH="`git symbolic-ref -q HEAD 2>/dev/null | sed 's@.*/@@'`"
|
|
TAG="`git name-rev --name-only --tags --no-undefined HEAD 2>/dev/null | sed 's@\^0$@@'`"
|
|
|
|
if [ "$MODIFIED" -eq "0" ]; then
|
|
hashprefix="-g"
|
|
elif [ "$MODIFIED" -eq "2" ]; then
|
|
hashprefix="-m"
|
|
else
|
|
hashprefix="-u"
|
|
fi
|
|
|
|
if [ -n "$TAG" ]; then
|
|
VERSION="${TAG}"
|
|
ISTAG="1"
|
|
if [ -n "`echo \"${TAG}\" | grep \"^[0-9.]*$\"`" ]; then
|
|
ISSTABLETAG="1"
|
|
else
|
|
ISSTABLETAG="0"
|
|
fi
|
|
else
|
|
VERSION="${ISODATE}-${BRANCH}${hashprefix}${SHORTHASH}"
|
|
ISTAG="0"
|
|
ISSTABLETAG="0"
|
|
fi
|
|
|
|
elif [ -f "$ROOT_DIR/.ottdrev" ]; then
|
|
# We are an exported source bundle
|
|
cat $ROOT_DIR/.ottdrev
|
|
exit
|
|
else
|
|
# We don't know
|
|
MODIFIED="1"
|
|
HASH=""
|
|
SHORTHASH=""
|
|
BRANCH=""
|
|
ISODATE=""
|
|
TAG=""
|
|
VERSION=""
|
|
ISTAG="0"
|
|
ISSTABLETAG="0"
|
|
fi
|
|
|
|
echo "$VERSION $ISODATE $MODIFIED $HASH $ISTAG $ISSTABLETAG"
|