Make git more attractive for managing work-in-progress. Especially convenient when a potential patch set needs to be tested on multiple platforms since one can use git to keep all the test environments in sync independent of a subversion server. Now the Asterisk version will show the exact git SHA5 that was used when building (still appended by "M" if there are local modifications) from a git clone of the Asterisk repository so the developer can more easily know what is actually under test. You will now get this: $ asterisk -V Asterisk GIT-1698298 Instead of this: $ asterisk -V Asterisk UNKNOWN__and_probably_unsupported This has zero impact for those not using git with the exception of an extra test in the configure script to gather git's path. This is necessary to prevent "sudo make install" from failing since git may not be in the path in make's shell environment. (closes issue ASTERISK-20483) Reported by: Shaun Ruffell Patches: 0001-build_tools-Allow-Asterisk-to-report-git-SHAs-in-ver.patch (license #5417) patch uploaded by Shaun Ruffell Modified ........ Merged revisions 375189 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 375190 from http://svn.asterisk.org/svn/asterisk/branches/10 ........ Merged revisions 375191 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@375192 65c4cc65-6c06-0410-ace0-fbb531ad65f3
184 lines
4.8 KiB
Bash
Executable file
184 lines
4.8 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
if [ -f ${1}/.version ]; then
|
|
cat ${1}/.version
|
|
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
|
|
TAG=0
|
|
FEATURE=0
|
|
|
|
REV=`svnversion -c ${1} | cut -d: -f2`
|
|
|
|
INTEGRATED=`LANG=C svn pg automerge-propname ${1}`
|
|
if [ -z "${INTEGRATED}" ] ; then
|
|
INTEGRATED=svnmerge-integrated
|
|
fi
|
|
|
|
BASE=`LANG=C svn pg ${INTEGRATED} ${1} | cut -d: -f1`
|
|
|
|
if [ "${PARTS}" = "trunk" ] ; then
|
|
echo SVN-trunk-r${REV}
|
|
exit 0
|
|
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
|
|
done
|
|
|
|
if [ ${TAG} != 0 ] ; then
|
|
echo ${RESULT}
|
|
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
|
|
# 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-`${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-`${GIT} rev-parse --short --verify HEAD`${MODIFIED}
|
|
fi
|
|
echo ${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
|