#!/bin/sh # ----------------------------------------------------------------------------- # Shell script to determine the last commit version of the project It # checks for CVS and .git repositories. The output is a string that # can be used in a define at compile time to automatically mark # repository versions. For CVS repositories the string contains the # date and time of the commit that lead to the current version of # files. For git repositories the output contains the git-id of the # current tree. An indication if localy modified files exist is # added currently only for CVS. # ----------------------------------------------------------------------------- [ $# -lt 1 ] && echo "USAGE: version-util [-F] " && exit 1 VERS_FILE=$1 FORCE_EMPTY=0 [ "$VERS_FILE" == "-F" -a $# -lt 2 ] && echo "USAGE: version-util [-F] " && exit 1 if [ $# -gt 1 ]; then VERS_FILE=$2 FORCE_EMPTY=1 fi SCRIPT_PATH=`dirname $0` # echo "file: ${VERS_FILE}, force = $FORCE_EMPTY" # exit 0 createVers() { cat < /dev/null } cvsData() { fileVersions cvsLog } cvsVers() { d=`cvsData \ | awk -f ${SCRIPT_PATH}/version-util.awk \ | sort -u \ | tail -1 \ | tr -d ' \-:'` m=`cvs status 2> /dev/null \ | grep 'Status: Locally Modified' > /dev/null && echo "_MOD"` echo "_cvs_${d}${m}" } gitVers() { b=`git branch \ | grep '^*' \ | sed -e's/^* //'` h=`git show --pretty=format:"%h_%ci" HEAD \ | head -1 \ | tr -d ' \-:'` echo "_git_${b}_${h}" } emptyVers() { echo "" } checkVers() { s=`$1` if [ ! -e ${VERS_FILE} ]; then echo "$VERS_FILE does not exist! creating a new one." createVers $s > ${VERS_FILE} else v=`grep '^#define VERSION_SUFFIX' ${VERS_FILE} \ | awk '{print $3}'` if [ "$v" != "\"$s\"" ]; then echo "$VERS_FILE is being recreated!" createVers $s > ${VERS_FILE} fi fi } if [ $FORCE_EMPTY -eq 1 ]; then checkVers emptyVers exit 0 fi if [ -d CVS ]; then checkVers cvsVers exit 0 fi if [ -d .git ]; then checkVers gitVers exit 0 fi checkVers emptyVers