Merge "pjproject: Add cache_pools debugging option."
[asterisk/asterisk.git] / build_tools / make_version
index d81325f..ce3bf6e 100755 (executable)
@@ -1,8 +1,13 @@
 #!/bin/sh
 
+AWK=${AWK:-awk}
+GIT=${GIT:-git}
+GREP=${GREP:-grep}
+MAINLINE_BRANCH=master
+
 if [ -f ${1}/.version ]; then
     cat ${1}/.version
-elif [ -d .svn ]; then
+elif [ -d ${1}/.svn ]; then
     PARTS=`LANG=C svn info ${1} | ${GREP} URL | ${AWK} '{print $2;}' | sed -e 's:^.*/svn/asterisk/::' | sed -e 's:/: :g'`
     BRANCH=0
     TEAM=0
@@ -36,11 +41,7 @@ elif [ -d .svn ]; then
         fi
 
         if [ ${BRANCH} != 0 ] ; then
-            if [ -z "${RESULT}" ] ; then
-                RESULT="${PART}"
-            else
-                RESULT="${RESULT}-${PART}"
-            fi
+            RESULT="${RESULT}-${PART}"
             if [ ${FEATURE} != 0 ] ; then
                 RESULT="${RESULT}-${FEATURE_NAME}"
             fi
@@ -84,6 +85,106 @@ elif [ -d .svn ]; then
     else
         echo SVN-${RESULT}-r${REV}${BASE:+-${BASE}}
     fi
+elif [ -d ${1}/.git ]; then
+    if [ -z ${GIT} ]; then
+        GIT="git"
+    fi
+
+    if ! command -v ${GIT} >/dev/null 2>&1; then
+        echo "UNKNOWN__and_probably_unsupported"
+        exit 1
+    fi
+       cd ${1}
+
+    # If the first log commit messages indicates that this is checked into
+    # subversion, we'll just use the SVN- form of the revision.
+    MODIFIED=""
+    SVN_REV=`${GIT} log --pretty=full -1 | ${GREP} -F "git-svn-id:" | sed -e "s/.*\@\([^\s]*\)\s.*/\1/g"`
+    if [ -z "$SVN_REV" ]; then
+        VERSION=`${GIT} describe --long --always --tags --dirty=M 2> /dev/null`
+        if [ $? -ne 0 ]; then
+            if [ "`${GIT} ls-files -m | wc -l`" != "0" ]; then
+                MODIFIED="M"
+            fi
+            # Some older versions of git do not support all the above
+            # options.
+            VERSION=`${GIT} rev-parse --short --verify HEAD`${MODIFIED}
+        fi
+        echo GIT-${MAINLINE_BRANCH}-${VERSION}
+    else
+        PARTS=`LANG=C ${GIT} log --pretty=full | ${GREP} -F "git-svn-id:" | head -1 | ${AWK} '{print $2;}' | sed -e s:^.*/svn/$2/:: | sed -e 's:/: :g' | sed -e 's/@.*$//g'`
+        BRANCH=0
+        TEAM=0
+        TAG=0
+        FEATURE=0
+
+        if [ "`${GIT} ls-files -m | wc -l`" != "0" ]; then
+            MODIFIED="M"
+        fi
+
+        for PART in $PARTS ; do
+            if [ ${TAG} != 0 ] ; then
+                if [ "${PART}" = "autotag_for_be" ] ; then
+                    continue
+                fi
+                if [ "${PART}" = "autotag_for_sx00i" ] ; then
+                    continue
+                fi
+                RESULT="${PART}"
+                break
+            fi
+
+            if [ ${BRANCH} != 0 ] ; then
+                RESULT="${RESULT}-${PART}"
+                if [ ${FEATURE} != 0 ] ; then
+                    RESULT="${RESULT}-${FEATURE_NAME}"
+                fi
+                break
+            fi
+
+            if [ ${TEAM} != 0 ] ; then
+                if [ -z "${RESULT}" ] ; then
+                    RESULT="${PART}"
+                else
+                    RESULT="${RESULT}-${PART}"
+                fi
+                continue
+            fi
+
+            if [ "${PART}" = "certified" ] ; then
+                FEATURE=1
+                FEATURE_NAME="cert"
+                continue
+            fi
+
+            if [ "${PART}" = "branches" ] ; then
+                BRANCH=1
+                RESULT="branch"
+                continue
+            fi
+
+            if [ "${PART}" = "tags" ] ; then
+                TAG=1
+                continue
+            fi
+
+            if [ "${PART}" = "team" ] ; then
+                TEAM=1
+                continue
+            fi
+
+            if [ "${PART}" = "trunk" ]; then
+                echo SVN-trunk-r${SVN_REV}${MODIFIED}
+                exit 0
+            fi
+        done
+
+        if [ ${TAG} != 0 ] ; then
+            echo ${RESULT}
+        else
+            echo SVN-${RESULT##-}-r${SVN_REV}${MODIFIED}
+        fi
+    fi
 else
     echo "UNKNOWN__and_probably_unsupported"
 fi