Detect branch better when getting git revision information
[synfig.git] / synfig-studio / trunk / build_tools / autorevision.sh
index 3de1b2b..e7e7b7a 100644 (file)
@@ -1,6 +1,7 @@
 #!/bin/sh
 
 # Copyright 2008 Paul Wise
+# Copyright 2009 Konstantin Dmitriev
 #
 # This package is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License as
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 # General Public License for more details.
 
+get_git_id(){
+       export SCM=git
+       export REVISION_ID=`cd "$1"; git log --no-color -1 | head -n 1 | cut -f 2 -d ' '`
+       BRANCH=`cd "$1"; git branch -a --no-color --contains HEAD | sed -e s/\*\ // | sed -e s/\(no\ branch\)//`
+       if ( echo $BRANCH | egrep origin/master > /dev/null ); then
+               #give a priority to master branch
+               BRANCH='master'
+       else
+               BRANCH=`echo $BRANCH | cut -d ' ' -f 1`
+               BRANCH=${BRANCH#*/}
+       fi
+       export REVISION=`git-show --pretty=format:%ci HEAD |  head -c 10`
+       REVISION=${REVISION:0:4}${REVISION:5:2}${REVISION:8:2}
+       export COMPARE="$1/.git/"
+       # The extra * at the end is for Modified
+       #REVISION="$REVISION"`cd "$1"; [[ $(git status 2> /dev/null | tail -n1) != "nothing to commit (working directory clean)" ]] && echo "*"`
+}
 
 get_git_svn_id(){
        export SCM=git-svn
@@ -41,7 +59,9 @@ fi
 
 
 # Extract the revision from SVN/git/etc
-if [ -d "$1/.git/svn" ] ; then
+if [ -e "$1/../../.git/refs/remotes/origin" ] ; then
+       get_git_id "$1/../.."
+elif [ -d "$1/.git/svn" ] ; then
        get_git_svn_id "$1"
 elif [ -d "$1/../.git/svn" ] ; then
        get_git_svn_id "$1/.."
@@ -66,7 +86,6 @@ fi
 # Abort if the header is newer
 if [ "$COMPARE" -ot "$HEADER" ] ; then exit; fi
 
-
 # Set the development version string
 if [ x = "x$DEVEL_VERSION" ] ; then
        if [ x != "x$REVISION" ] ; then
@@ -74,6 +93,8 @@ if [ x = "x$DEVEL_VERSION" ] ; then
                        DEVEL_VERSION="SVN r$REVISION"
                elif [ $SCM = git-svn ] ; then
                        DEVEL_VERSION="SVN r$REVISION (via git)"
+               elif [ $SCM = git ] ; then
+                       DEVEL_VERSION="Revision: $REVISION\\nBranch: ${BRANCH}\\nRevision ID: $REVISION_ID"
                elif [ $SCM = manual ] ; then
                        DEVEL_VERSION="$REVISION (manually configured)"
                fi