3a9aa8e51b
Since we will be transitioning to git, stop considering svn the primary source. If HEAD is a git-svn revision, return the svn revision number as before (this means that if you check out old versions they keep their previously canonical version numbers) but if it's not, then just print the short SHA1. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31480 a1c6a512-1295-4272-9138-f99709370657
89 lines
2.6 KiB
Bash
Executable file
89 lines
2.6 KiB
Bash
Executable file
#!/bin/sh
|
|
# __________ __ ___.
|
|
# Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
|
# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
|
# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
|
# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
|
# \/ \/ \/ \/ \/
|
|
# $Id$
|
|
#
|
|
|
|
# Usage: version.sh [source-root]
|
|
|
|
# Prints the revision of the repository.
|
|
#
|
|
# The format is rNNNNN[M]-YYMMDD
|
|
#
|
|
# The M indicates the revision isn't matched to a pure Subversion ID, usually
|
|
# because it's built from something like GIT.
|
|
|
|
svnversion_safe() {
|
|
# LANG=C forces svnversion to not localize "exported".
|
|
if OUTPUT=`LANG=C svnversion "$@"`; then
|
|
if [ "$OUTPUT" = "exported" ]; then
|
|
echo "unknown"
|
|
else
|
|
echo "r$OUTPUT"
|
|
fi
|
|
else
|
|
echo "unknown"
|
|
fi
|
|
}
|
|
|
|
# This logic is pulled from the Linux's scripts/setlocalversion (also GPL) and tweaked for
|
|
# rockbox. If the commit information for HEAD has a svn-id in it we report that instead of
|
|
# the git id
|
|
gitversion() {
|
|
export GIT_DIR="$1/.git"
|
|
|
|
# This verifies we are in a git directory
|
|
if head=`git rev-parse --verify --short HEAD 2>/dev/null`; then
|
|
|
|
# Get the svn revision of the most recent git-svn commit
|
|
version=`git log --pretty=format:'%b' --grep='git-svn-id: svn' -1 | tail -n 1 | perl -ne 'm/@(\d*)/; print "r" . $1;'`
|
|
mod=""
|
|
# Is this a git-svn commit?
|
|
if ! git log -1 --pretty=format:"%b" | grep -q "git-svn-id: svn" ; then
|
|
version="$head"
|
|
fi
|
|
# Are there uncommitted changes?
|
|
export GIT_WORK_TREE="$1"
|
|
if git diff --name-only HEAD | read dummy; then
|
|
mod="M"
|
|
elif git diff --name-only --cached HEAD | read dummy; then
|
|
mod="M"
|
|
fi
|
|
|
|
echo "${version}${mod}"
|
|
# All done with git
|
|
exit
|
|
fi
|
|
}
|
|
|
|
#
|
|
# First locate the top of the src tree (passed in usually)
|
|
#
|
|
if [ -n "$1" ]; then TOP=$1; else TOP=..; fi
|
|
|
|
# setting VERSION var on commandline has precedence
|
|
if [ -z $VERSION ]; then
|
|
# If the VERSIONFILE exisits we use that
|
|
VERSIONFILE=docs/VERSION
|
|
if [ -r $TOP/$VERSIONFILE ]; then VER=`cat $TOP/$VERSIONFILE`;
|
|
else
|
|
# Ok, we need to derive it from the Version Control system
|
|
if [ -d "$TOP/.git" ]; then
|
|
VER=`gitversion $TOP`
|
|
else
|
|
VER=`svnversion_safe $TOP`;
|
|
if [ "$VER" = "unknown" ]; then
|
|
# try getting it from a subdir to test if perhaps they are symlinked
|
|
# from the root
|
|
VER=`svnversion_safe $TOP/tools`;
|
|
fi
|
|
fi
|
|
fi
|
|
VERSION=$VER-`date -u +%y%m%d`
|
|
fi
|
|
echo $VERSION
|
|
|