2010-08-28 05:59:27 +08:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
if [ -f ${1}/.version ]; then
|
|
|
|
cat ${1}.version
|
|
|
|
elif [ -f ${1}/.svnrevision ]; then
|
|
|
|
echo SVN-`cat ${1}/.svnbranch`-r`cat ${1}/.svnrevision`
|
|
|
|
elif [ -d .svn ]; then
|
|
|
|
PARTS=`LANG=C svn info ${1} | grep URL | awk '{print $2;}' | sed -e s:^.*/svn/${2}/:: | sed -e 's:/: :g'`
|
|
|
|
BRANCH=0
|
|
|
|
TEAM=0
|
|
|
|
|
|
|
|
REV=`svnversion -c ${1} | cut -d: -f2`
|
|
|
|
|
|
|
|
if [ "${PARTS}" = "trunk" ]
|
|
|
|
then
|
|
|
|
echo SVN-'trunk'-r${REV}
|
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
|
|
|
|
for PART in $PARTS
|
|
|
|
do
|
|
|
|
if [ ${BRANCH} != 0 ]
|
|
|
|
then
|
|
|
|
RESULT="${RESULT}-${PART}"
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ ${TEAM} != 0 ]
|
|
|
|
then
|
|
|
|
RESULT="${RESULT}-${PART}"
|
|
|
|
continue
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "${PART}" = "branches" ]
|
|
|
|
then
|
|
|
|
BRANCH=1
|
|
|
|
RESULT="branch"
|
|
|
|
continue
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "${PART}" = "tags" ]
|
|
|
|
then
|
|
|
|
BRANCH=1
|
|
|
|
RESULT="tag"
|
|
|
|
continue
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "${PART}" = "team" ]
|
|
|
|
then
|
|
|
|
TEAM=1
|
|
|
|
continue
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
echo SVN-${RESULT##-}-r${REV}
|
2010-09-22 03:26:17 +08:00
|
|
|
elif [ -d .git ]; then
|
|
|
|
# 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-`git log --abbrev-commit -1 --pretty=oneline --abbrev=7 | cut -f 1 -d .`${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
|
|
|
|
|
|
|
|
if [[ "`git ls-files -m | wc -l`" != "0" ]]; then
|
|
|
|
MODIFIED="M"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "${PARTS}" = "trunk" ]; then
|
|
|
|
echo SVN-'trunk'-r${SVN_REV}${MODIFIED}
|
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
|
|
|
|
for PART in $PARTS
|
|
|
|
do
|
|
|
|
if [ ${BRANCH} != 0 ]; then
|
|
|
|
RESULT="${RESULT}-${PART}"
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ ${TEAM} != 0 ]; then
|
|
|
|
RESULT="${RESULT}-${PART}"
|
|
|
|
continue
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "${PART}" = "branches" ]; then
|
|
|
|
BRANCH=1
|
|
|
|
RESULT="branch"
|
|
|
|
continue
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "${PART}" = "tags" ]; then
|
|
|
|
BRANCH=1
|
|
|
|
RESULT="tag"
|
|
|
|
continue
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "${PART}" = "team" ]; then
|
|
|
|
TEAM=1
|
|
|
|
continue
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
echo SVN-${RESULT##-}-r${SVN_REV}${MODIFIED}
|
|
|
|
fi
|
2010-08-28 05:59:27 +08:00
|
|
|
fi
|