summaryrefslogtreecommitdiff
path: root/commit.sh
blob: 316657251257383ffe9b49779655467e9f886b66 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#! /bin/sh
DO=""
TOPDIR=`dirname $0`
VERSIONIN=$TOPDIR/hieroglyph/version.h.in.in
VERSION_H=${VERSIONIN//.in.in}.in

which svn > /dev/null 2>&1
if [ $? -ne 0 ]; then
    echo "Cannot find svn command. stopped."
    exit
fi
which awk > /dev/null 2>&1
if [ $? -ne 0 ]; then
    echo "Cannot find awk command. stopped."
    exit
fi
which sed > /dev/null 2>&1
if [ $? -ne 0 ]; then
    echo "Cannot find sed command. stopped."
    exit
fi


if [ "x`svn stat`" = "x" ]; then
    echo "No changes has been made. any changes has never committed."
    exit
fi
LOG=''
if test "$1" = "--message" || test "$1" = "-m"; then
    shift
    LOG="$1"
    shift
fi
FILES=''
while [ $# -ne 0 ]; do
    FILES="$FILES $1"
    shift
done
if [ "x$FILES" != "x" ]; then
    FILES="$FILES ChangeLog $VERSION_H"
fi
if [ "x$LOG" = "x" ]; then
    LOG="`svn diff | awk 'BEGIN{P=0;F=0}$0 ~ /^+++ ChangeLog/{F=1}F == 1 && $0 ~ /^@@/{P=1}P == 1 && $0 ~ /^+/{print $0}P == 1 && /^Index/{P=0;F=0}' | sed -e 's/^+//'`"
fi
if [ "x$LOG" = "x" ]; then
    while [ 1 ]; do
	echo -n "Are you sure that you want to commit file(s) without commit log? [y/N]: "
	read DOCOMMIT
	if [ "x$DOCOMMIT" = "x" -o "x$DOCOMMIT" = "xn" -o "x$DOCOMMIT" = "xN" ]; then
	    echo "Abort."
	    exit
	elif [ "x$DOCOMMIT" = "xy" -o "x$DOCOMMIT" = "xY" ]; then
	    break
	else
	    echo "Answer must be y or n."
	fi
    done
fi

if [ "x$DO" = "x" ]; then
    $TOPDIR/update-version
fi

LANG=C $DO svn ci -m "$LOG" $FILES