104 lines
2.0 KiB
Plaintext
104 lines
2.0 KiB
Plaintext
|
#!/bin/bash
|
||
|
# Copyright (c) 2012, 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 +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
|
||
|
|