view hgeditor @ 766:b444a7e053f1

Get addremove to use new walk code. It is now more verbose than it used to be. If given file names, it prints nothing, as before. But if given patterns or nothing, it prints the names of the files it is operating on, to remove that air of mystery. It also now operates at or below the current directory.
author Bryan O'Sullivan <bos@serpentine.com>
date Fri, 22 Jul 2005 19:45:48 -0800
parents 3e73bf876f17
children 0c033ef053ab
line wrap: on
line source

#!/bin/sh
#
# This is an example of using HGEDITOR to automate the signing of
# commits and so on.

# change this to one to turn on GPG support
SIGN=0

T1=""; T2=""
cleanup_exit() {
    rm -f "$T1" "$T2"
    exit $1
}

# If you want to pass your favourite editor some other parameters
# only for Mercurial, modify this:
case "${EDITOR:=vi}" in
    emacs)
        EDITOR="$EDITOR -nw"
        ;;
    gvim|vim)
        EDITOR="$EDITOR -f -o"
        ;;
esac

# Remove temporary files even if we get interrupted
trap "cleanup_exit 255" TERM KILL INT QUIT ABRT
T1=`mktemp`; T2=`mktemp`
(
    cd "`hg root`"
    grep '^HG: changed' "$1" | cut -b 13- | while read changed; do
        hg diff "$changed" >> "$T2"
    done
)

echo > "$T1"
if [ "$SIGN" == "1" ]; then
    MANIFEST=`grep '^HG: manifest hash' "$1" | cut -b 19-`
    echo -e "\nmanifest hash: $MANIFEST" >> "$T1"
fi
grep -vE '^(HG: manifest hash .*)?$' "$1" >> "$T1"

CHECKSUM=`md5sum "$T1"`
$EDITOR "$T1" "$T2" || cleanup_exit $?
echo "$CHECKSUM" | md5sum -c 2>/dev/null && cleanup_exit 13

if [ "$SIGN" == "1" ]; then
    {
        head -n 1 "$T1"
        echo
        grep -v "^HG:" "$T1" | gpg -t -a -u "${HGUSER}" --clearsign
    } > "$T2" && mv "$T2" "$1"
else
    mv "$T1" "$1"
fi

cleanup_exit $?