Markus Rothe wrote: [Tue Aug 09 2005, 07:36:18AM EDT] > Personaly I find it a little bit annoying to write changes twise. > One time in Changelog and one time in --commitmsg. How about using > the commitmsg for Changelog as default, but if a Changelog entry > already exists, then write nothing to Changelog.
A few others have posted their solutions to this problem. Perhaps
some people will find my solution useful, since it's a bit more
sophisticated. I've been using this for literally years now with no
modifications.
- handles using editor for echangelog
- fixes spacing before re-using the message for cvs commit
- post-runs eviewcvs (for the sake of pasting into bugs)
# echangelog and repoman combined
er() {
echangelog ${1:+"$*"} || return 1
rc
}
# repoman commit with the message from the ChangeLog
rc() {
declare msg
if [[ -n $* ]]; then
msg="$*"
echo "Using msg from command-line" >&2
else
msg=$(perl <ChangeLog -0777 -pe \
's/^.*?\n \d{2} \w{3} \d{4};.*?:\n//s || exit 1; # trim top
s/\n(?:\*| \d{2} \w{3} \d{4};).*//s; # trim bottom
s/^\s*//; s/\s*$//; s/^(?: |\t)//gm; # fix spacing
#/^ /m || s/\s+/ /g; # normalize spacing unless formatted
')
if [[ $? != 0 || -z $msg ]]; then
echo "couldn't parse message from ChangeLog" >&2
return 1
fi
echo "Parsed msg from ChangeLog" >&2
fi
echo "----------" >&2
echo "$msg" >&2
echo "----------" >&2
repoman commit -m "$msg" || return 1
if [[ -x /usr/bin/eviewcvs ]]; then
local f entry=$(perl -00ne '/^ \d/ and print, last' ChangeLog)
entry=${entry%%:*}
entry=${entry##*>}
entry=${entry//,/ }
for f in $entry; do
[[ $f == -* ]] && continue
f=${f#+}
echo "$f"
done | xargs -n1 eviewcvs
fi
}
Regards,
Aron
--
Aron Griffis
Gentoo Linux Developer
pgpwoTbgK9bLI.pgp
Description: PGP signature
