Use .gitreview defaultbranch setting to determine the mainline branch. This allows the script to be used against other directories which might not be on the same defaultbranch. This can be used by CI scripts to report the testsuite version being used: ./build_tools/make_version ${TESTSUITE_DIR} Change-Id: Ifdad4a9d8a26138c41bc6b630ecc3e34ea1c2758
191 lines
4.9 KiB
Bash
Executable file
191 lines
4.9 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
AWK=${AWK:-awk}
|
|
GIT=${GIT:-git}
|
|
GREP=${GREP:-grep}
|
|
|
|
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
|
|
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
|
|
MAINLINE_BRANCH=$(git config -f .gitreview --get gerrit.defaultbranch)
|
|
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
|