scuffed-code/tools/scripts/reticket

108 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
#
# Copyright (C) 2017 and later: Unicode, Inc. and others.
# License & terms of use: http://www.unicode.org/copyright.html
#
# Copyright (c) 2012-2014, International Business Machines Corporation and others. All Rights Reserved.
# for fixing misticketted
# see http://bugs.icu-project.org/trac/wiki/MisTicketted
# TODO: cleanup ${TMPF}*
rev=
from=
to=
usage()
{
echo "$0 -r rev -f frombug -t tobug"
}
while getopts "r:f:t:" opt; do
case $opt in
r)
rev=$OPTARG
;;
f)
from=$OPTARG
;;
t)
to=$OPTARG
;;
\?)
echo "Invalid: -$OPTARG" >&2
usage
exit 1
;;
esac
done
if [[ ! $rev ]];
then
echo "need -r rev option" >&2
usage
exit 1
fi
if [[ ! $from ]];
then
echo "need -f oldbug option" >&2
usage
exit 1
fi
if [[ ! $to ]];
then
echo "need -t newbug option" >&2
usage
exit 1
fi
if [[ ! -d .svn ]];
then
echo ".svn is not a directory. Please cd somewhere else." >&2
exit 1
fi
if [[ ! -d ${TMPDIR} ]];
then
TMPDIR=/tmp
fi
TMPF=${TMPDIR}/reticket.r${rev}.f${from}.t${to}.txt
echo "Getting log for r${rev}" >&2
( svn pg svn:log --revprop -r ${rev} . | tee ${TMPF} | sed -e 's%^%< %g' ) || exit 1
head -1 ${TMPF} > ${TMPF}.1
if grep -q "^ticket:${from}[^0-9]" ${TMPF}.1;
then
echo "-- old/new --"
else
if grep -q "^ticket:${to}[^0-9]" ${TMPF}.1;
then
echo "r${rev} already references ticket:${to} - exitting." >&2
exit 0
else
echo "Error: r${rev} doesn't pertain to ticket:${from} - was this already fixed?" >&2
exit 1
fi
fi
( ( sed -e "s%^ticket:${from}%ticket:${to}%" ${TMPF}.1 && tail -n +2 ${TMPF} ) || exit 2 ) | tee ${TMPF}.fix | sed -e 's%^%> %g'
CMD="svn ps svn:log --revprop -r ${rev} -F ${TMPF}.fix"
echo "# ${CMD}"
echo "type YES to do, ^C to kill"
read foo
if [[ $foo = "YES" ]];
then
echo "## Remember the server still needs to be resynced. See http://bugs.icu-project.org/trac/wiki/FixingMisTicketted"
exec ${CMD}
else
exit 0
fi