#!/bin/sh # ----------------------------------------------------------------------------- # Small 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. # ----------------------------------------------------------------------------- [ $# -lt 1 ] && echo "USAGE: version-util " && exit 1 VERS_FILE=$1 function createVers () { cat < /dev/null \ | grep '^date:' \ | cut -d ' ' -f 2-4 \ | sort -u \ | tail -1 \ | tr -d ' \-:'` m=`cvs status 2> /dev/null \ | grep 'Status: Locally Modified' > /dev/null && echo "_MOD"` echo "_cvs_${d}${m}" } function gitVers () { b=`git branch \ | grep '^*' \ | sed -e's/^* //'` h=`git show --pretty=format:"%h_%ci" HEAD \ | head -1 \ | tr -d ' \-:'` echo "_git_${b}_${h}" } function 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}'` echo "s: $s" echo "v: $v" if [ "$v" != "\"$s\"" ]; then echo "$VERS_FILE is being recreated!" createVers $s > ${VERS_FILE} fi fi } if [ -d CVS ]; then checkVers cvsVers fi if [ -d .git ]; then checkVers gitVers fi