view hgeditor @ 668:d93f0b127b6a

Dont trap SIGHUP on the other OS # HG changeset patch # User Edouard Gomez <ed.gomez@free.fr> # Node ID 34a547cb33fe515ef4cdc8ccd173546671253ae9 # Parent 8c89408a7154d2da94766e957a088407fd0fef93 Dont trap SIGHUP on the other OS HG doesn't work anymore on the other OS since signals are trapped. This is due to the fact that as explained in Python docs not all signals are defined for all platforms, so python was complaning about missing signal.SIGHUP.
author Edouard Gomez <ed.gomez@free.fr>
date Sun, 10 Jul 2005 16:02:39 -0800
parents 0100a43788ca
children d6723636c172
line wrap: on
line source

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

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

if grep -q "^HG: merge resolve" "$1" ; then
    # we don't sign merges
    exec $EDITOR "$1"
else
    # Remove temporary files even if we get interrupted
    trap "cleanup_exit 255" TERM KILL INT QUIT ABRT
    T1=`mktemp`; T2=`mktemp`

    # Add manifest hash in order to sign whole repository state.
    # Remove HG: prefix, as we want that to be stored.
    grep '^HG: manifest hash' "$1" | cut -b 5- >> "$T1"
    # Add all other state information
    grep -v '^HG: manifest hash' "$1" >> "$T1"
    (
        cd "`hg root`"
        grep '^HG: changed' "$1" | cut -b 13- | while read changed; do
            hg diff "$changed" >> "$T2"
        done
    )

    CHECKSUM=`md5sum "$T1"`
    $EDITOR "$T1" "$T2" || cleanup_exit $?
    echo "$CHECKSUM" | md5sum -c --status && cleanup_exit 13
    {
        head -n 1 "$T1"
        echo
        grep -v "^HG:" "$T1" | gpg -t -a -u "${HGUSER}" --clearsign
    } > "$T2" && mv "$T2" "$1"
    cleanup_exit $?
fi