hgeditor
author bos@serpentine.internal.keyresearch.com
Thu, 01 Sep 2005 07:47:26 -0700
changeset 1187 120aa5fc7ced
parent 1009 1bc619b12025
child 1599 f93fde8f5027
permissions -rwxr-xr-x
From mercurial-bounces@selenic.com Thu Sep 1 07:01:32 2005 Return-Path: <mercurial-bounces@selenic.com> X-Original-To: bos@serpentine.com Delivered-To: bos@serpentine.com Received: from waste.org (waste.org [216.27.176.166]) by demesne.serpentine.com (Postfix) with ESMTP id 3616A20B571 for <bos@serpentine.com>; Thu, 1 Sep 2005 07:01:32 -0700 (PDT) Received: from waste.org (localhost [127.0.0.1]) by waste.org (8.13.4/8.13.4/Debian-3) with ESMTP id j81DxodQ028829; Thu, 1 Sep 2005 08:59:51 -0500 Received: from web32904.mail.mud.yahoo.com (web32904.mail.mud.yahoo.com [68.142.206.51]) by waste.org (8.13.4/8.13.4/Debian-3) with SMTP id j81DxnNA028824 for <mercurial@selenic.com>; Thu, 1 Sep 2005 08:59:49 -0500 Received: (qmail 25859 invoked by uid 60001); 1 Sep 2005 13:59:17 -0000 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=Message-ID:Received:Date:From:Subject:To:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=O6sELrlCknW3M/gKVqijWs82e/CbDEum1sEitcuLKXaP9dHU175PszOqMgcSKykMY+BVXtcH3NeaXLM3FyBmqNkoPAvesezyFbgQsHSM1S028oOexybCKMvtGQJmz66hzd1fDb0QoPj1gCcGU2VDevQaOesSmo1xF9jJwy2LlLE= ; Message-ID: <20050901135917.25856.qmail@web32904.mail.mud.yahoo.com> Received: from [60.48.222.94] by web32904.mail.mud.yahoo.com via HTTP; Thu, 01 Sep 2005 06:59:17 PDT Date: Thu, 1 Sep 2005 06:59:17 -0700 (PDT) From: TK Soh <teekaysoh@yahoo.com> To: mercurial@selenic.com In-Reply-To: <20050828075808.GO27787@waste.org> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 X-Virus-Scanned: by amavisd-new Subject: Re: add -p to hg tip X-BeenThere: mercurial@selenic.com X-Mailman-Version: 2.1.5 Precedence: list List-Id: mercurial.selenic.com List-Unsubscribe: <http://selenic.com/mailman/listinfo/mercurial>, <mailto:mercurial-request@selenic.com?subject=unsubscribe> List-Archive: <http://www.selenic.com/pipermail/mercurial> List-Post: <mailto:mercurial@selenic.com> List-Help: <mailto:mercurial-request@selenic.com?subject=help> List-Subscribe: <http://selenic.com/mailman/listinfo/mercurial>, <mailto:mercurial-request@selenic.com?subject=subscribe> Sender: mercurial-bounces@selenic.com Errors-To: mercurial-bounces@selenic.com X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on demesne.serpentine.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.0.4 X-Evolution-Source: imap://bos@www.serpentine.com/ Content-Transfer-Encoding: 8bit
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
544
3d4d5f2aba9a Remove bashisms and use /bin/sh instead of /bin/bash.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 484
diff changeset
     1
#!/bin/sh
186
9a2075c0b9b8 Add $HGEDITOR hook and example script
mpm@selenic.com
parents:
diff changeset
     2
#
9a2075c0b9b8 Add $HGEDITOR hook and example script
mpm@selenic.com
parents:
diff changeset
     3
# This is an example of using HGEDITOR to automate the signing of
9a2075c0b9b8 Add $HGEDITOR hook and example script
mpm@selenic.com
parents:
diff changeset
     4
# commits and so on.
9a2075c0b9b8 Add $HGEDITOR hook and example script
mpm@selenic.com
parents:
diff changeset
     5
684
4ccf3de52989 Turn off signing with hgeditor by default
Matt Mackall <mpm@selenic.com>
parents: 683
diff changeset
     6
# change this to one to turn on GPG support
4ccf3de52989 Turn off signing with hgeditor by default
Matt Mackall <mpm@selenic.com>
parents: 683
diff changeset
     7
SIGN=0
4ccf3de52989 Turn off signing with hgeditor by default
Matt Mackall <mpm@selenic.com>
parents: 683
diff changeset
     8
666
0100a43788ca hgeditor: Remove EMAIL default for HGUSER, comment editor selection
Radoslaw "AstralStorm" Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 665
diff changeset
     9
# If you want to pass your favourite editor some other parameters
0100a43788ca hgeditor: Remove EMAIL default for HGUSER, comment editor selection
Radoslaw "AstralStorm" Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 665
diff changeset
    10
# only for Mercurial, modify this:
796
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    11
case "${EDITOR}" in
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    12
    "")
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    13
        EDITOR="vi"
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    14
        ;;
348
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
    15
    emacs)
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
    16
        EDITOR="$EDITOR -nw"
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
    17
        ;;
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
    18
    gvim|vim)
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
    19
        EDITOR="$EDITOR -f -o"
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
    20
        ;;
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
    21
esac
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
    22
796
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    23
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    24
HGTMP=""
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    25
cleanup_exit() {
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    26
    rm -rf "$HGTMP"
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    27
}
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    28
754
3e73bf876f17 Fixes and cleanups to hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 684
diff changeset
    29
# Remove temporary files even if we get interrupted
831
232d0616a80a Cleaned up trap handling:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 814
diff changeset
    30
trap "cleanup_exit" 0 # normal exit
232d0616a80a Cleaned up trap handling:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 814
diff changeset
    31
trap "exit 255" 1 2 3 6 15 # HUP INT QUIT ABRT TERM
796
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    32
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    33
HGTMP="${TMPDIR-/tmp}/hgeditor.$RANDOM.$RANDOM.$RANDOM.$$"
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    34
(umask 077 && mkdir "$HGTMP") || {
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    35
    echo "Could not create temporary directory! Exiting." 1>&2
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    36
    exit 1
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    37
}
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    38
754
3e73bf876f17 Fixes and cleanups to hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 684
diff changeset
    39
(
3e73bf876f17 Fixes and cleanups to hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 684
diff changeset
    40
    cd "`hg root`"
3e73bf876f17 Fixes and cleanups to hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 684
diff changeset
    41
    grep '^HG: changed' "$1" | cut -b 13- | while read changed; do
796
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    42
        hg diff "$changed" >> "$HGTMP/diff"
754
3e73bf876f17 Fixes and cleanups to hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 684
diff changeset
    43
    done
3e73bf876f17 Fixes and cleanups to hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 684
diff changeset
    44
)
348
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
    45
796
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    46
echo > "$HGTMP/msg"
754
3e73bf876f17 Fixes and cleanups to hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 684
diff changeset
    47
if [ "$SIGN" == "1" ]; then
3e73bf876f17 Fixes and cleanups to hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 684
diff changeset
    48
    MANIFEST=`grep '^HG: manifest hash' "$1" | cut -b 19-`
796
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    49
    echo -e "\nmanifest hash: $MANIFEST" >> "$HGTMP/msg"
754
3e73bf876f17 Fixes and cleanups to hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 684
diff changeset
    50
fi
796
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    51
grep -vE '^(HG: manifest hash .*)?$' "$1" >> "$HGTMP/msg"
684
4ccf3de52989 Turn off signing with hgeditor by default
Matt Mackall <mpm@selenic.com>
parents: 683
diff changeset
    52
796
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    53
CHECKSUM=`md5sum "$HGTMP/msg"`
1009
1bc619b12025 Don't show the diff in hgeditor if there are no changes in file contents.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 839
diff changeset
    54
if [ -s "$HGTMP/diff" ]; then
1bc619b12025 Don't show the diff in hgeditor if there are no changes in file contents.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 839
diff changeset
    55
    $EDITOR "$HGTMP/msg" "$HGTMP/diff" || exit $?
1bc619b12025 Don't show the diff in hgeditor if there are no changes in file contents.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 839
diff changeset
    56
else
1bc619b12025 Don't show the diff in hgeditor if there are no changes in file contents.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 839
diff changeset
    57
    $EDITOR "$HGTMP/msg" || exit $?
1bc619b12025 Don't show the diff in hgeditor if there are no changes in file contents.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 839
diff changeset
    58
fi
831
232d0616a80a Cleaned up trap handling:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 814
diff changeset
    59
echo "$CHECKSUM" | md5sum -c >/dev/null 2>&1 && exit 13
754
3e73bf876f17 Fixes and cleanups to hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 684
diff changeset
    60
3e73bf876f17 Fixes and cleanups to hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 684
diff changeset
    61
if [ "$SIGN" == "1" ]; then
3e73bf876f17 Fixes and cleanups to hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 684
diff changeset
    62
    {
796
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    63
        head -n 1 "$HGTMP/msg"
754
3e73bf876f17 Fixes and cleanups to hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 684
diff changeset
    64
        echo
796
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    65
        grep -v "^HG:" "$HGTMP/msg" | gpg -t -a -u "${HGUSER}" --clearsign
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    66
    } > "$HGTMP/msg.gpg" && mv "$HGTMP/msg.gpg" "$1"
754
3e73bf876f17 Fixes and cleanups to hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 684
diff changeset
    67
else
796
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
    68
    mv "$HGTMP/msg" "$1"
186
9a2075c0b9b8 Add $HGEDITOR hook and example script
mpm@selenic.com
parents:
diff changeset
    69
fi
348
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
    70
831
232d0616a80a Cleaned up trap handling:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 814
diff changeset
    71
exit $?