diff --git a/maint/version.sh b/maint/version.sh index cd5fa0657..82c20753f 100755 --- a/maint/version.sh +++ b/maint/version.sh @@ -1,44 +1,47 @@ #!/bin/sh -git --version >/dev/null || exit +if [ -z "$1" ] + then + echo "usage: $0 " + exit 1 +fi -curr_dir=$(pwd) +src_top_dir="$1" -src_top_dir= -[ -d ${curr_dir}/.git ] && { - src_top_dir=${curr_dir} -} || { - curr_dir=$(dirname ${curr_dir}) - [ -d ${curr_dir}/.git ] && { - src_top_dir=${curr_dir} - } || { - [ -z "$1" ] && exit - src_top_dir=$1 - } -} -[ -z "${src_top_dir}" ] && exit +VERSION_FILE="${src_top_dir}/version.h" +PREV_MC_VERSION="unknown" +CURR_MC_VERSION="${PREV_MC_VERSION}" +if [ -r ${VERSION_FILE} ] + then + PREV_MC_VERSION=`sed -rn 's/^#define MC_CURRENT_VERSION "(.*)"$/\1/p' "${VERSION_FILE}"` + CURR_MC_VERSION="${PREV_MC_VERSION}" +fi -VERSION_FILE=${src_top_dir}/version.h +mc_print_version(){ -git_head=$(git --git-dir "${src_top_dir}/.git" rev-parse --verify HEAD 2>/dev/null) -[ -z "${git_head}" ] && exit - -new_version="$(git --git-dir "${src_top_dir}/.git" describe 2>/dev/null)" -[ -z "${new_version}" ] && exit - - -saved_version= -[ -r ${VERSION_FILE} ] && { - saved_version=$(sed -rn 's/^#define MC_CURRENT_VERSION "(.*)"$/\1/p' ${VERSION_FILE}) -} - -[ -z "${saved_version}" -o "${saved_version}" != "${new_version}" ] && { - cat >${VERSION_FILE} <"${VERSION_FILE}" </dev/null) +[ -z "${git_head}" ] && mc_print_version + +# try to store sha1 +CURR_MC_VERSION="${git_head}" + +new_version="$(git --git-dir "${src_top_dir}/.git" describe 2>/dev/null)" +[ -z "${new_version}" ] && mc_print_version + +# store pretty tagged version +CURR_MC_VERSION="${new_version}" +mc_print_version