QGIS/tools/qgiscommit
jobi 58aafaf055 ** fixed qgiscommit (didn't work when in qgis root)
** cosmetics for qgis-config to be more "standardconform"


git-svn-id: http://svn.osgeo.org/qgis/trunk@1153 c8812cc2-4d05-0410-92ff-de0c093fc19c
2004-04-04 22:53:48 +00:00

115 lines
2.7 KiB
Bash
Executable File

#!/bin/sh
# $Id$
#
# sanity check to insure that the user invoked this from somewhere within
# the qgis source hieararchy
if [ ! -f CVS/Repository -a ! `grep qgis CVS/Root` ]; then
echo "You are not in a qgis source directory!"
exit -1
fi
#
# Get Changes
#
# This will hold the diffs between what's to be checked in and currently in the repository.
TMPFILE=`mktemp /tmp/qgis-commit-tmp.XXXXXXXXXX`
echo "************************************************************" > ${TMPFILE}
echo "Please write above that line of stars! Rest will be removed." >> ${TMPFILE}
cvs diff $@ 2> /dev/null | sed -e "/^?/d" -e "/^Index: /d" >> ${TMPFILE}
if [ $? -ne 0 ]; then
echo cvs diff failed;
rm $TMPFILE;
exit -2
fi
${EDITOR} ${TMPFILE}
if [ $? -ne 0 ]; then
echo edit session failed;
rm $TMPFILE;
exit -3
fi
#
# Increment the extra version number in the configure.in; also add the message along
# with the version number to the ChangeLog.
#
# find out where the top directory is
WAY2ROOT="`dirname $PWD | sed -e 's#\(.*\)\/qgis.*#\1#'`/qgis"
# if we're not already in the top directory, push the current directory on stack and
# cd to the top directory
if [ "a${WAY2ROOT}" != "a" ]; then
pushd $WAY2ROOT > /dev/null
fi
# The top level directory *should* contain a configure.in; if not, then something went
# horribly awry.
if [ ! -f configure.in ]; then
popd
echo "Not in qgis top directory!"
rm $TMPFILE
exit -4
fi
# Get the user's sourceforge username.
NAME=`sed -e 's/.*:\([^:]*\)@.*/\1/' CVS/Root`
MAJOR_VERSION=`sed -n -e 's/MAJOR_VERSION=//p' configure.in`
MINOR_VERSION=`sed -n -e 's/MINOR_VERSION=//p' configure.in`
MICRO_VERSION=`sed -n -e 's/MICRO_VERSION=//p' configure.in`
EXTRA_VERSION=`sed -n -e 's/EXTRA_VERSION=//p' configure.in`
# I *think* this means that if the user *didn't* specify any files, then add in
# the ChangeLog and configure.in.
# XXX I'm not sure why this should be done.
if [ "a$@" != "a" ]; then
EXTRAS="$WAY2ROOT/ChangeLog $WAY2ROOT/configure.in"
else
EXTRAS=""
fi
#
# Change Extra Version
#
# increment extra version in configure.in
NEXTRA_VERSION=`expr ${EXTRA_VERSION} + 1`
sed -e "/EXTRA_VERSION=/s/${EXTRA_VERSION}/${NEXTRA_VERSION}/" configure.in > configure.in.tmp
mv configure.in.tmp configure.in
CLINES=`wc -l ChangeLog | awk '{print $1}'`
DIFFLINES=`expr $CLINES - 4`
DATE=`date +%F`
MSG=`sed -e '/\*\{20\}/,$d' ${TMPFILE}`
head -n 5 ChangeLog > ChangeLog.tmp
echo "${DATE} [${NAME}] ${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}devel${NEXTRA_VERSION}" >> ChangeLog.tmp
echo "${MSG}" >> ChangeLog.tmp
tail -n $DIFFLINES ChangeLog >> ChangeLog.tmp
mv ChangeLog.tmp ChangeLog
#
# Commit
#
if [ "a${WAY2ROOT}" != "a" ]; then
popd
fi
cvs commit -m "${MSG}" $@ ${EXTRAS}
rm ${TMPFILE}