hgeditor
author Bryan O'Sullivan <bos@serpentine.com>
Sun, 10 Jul 2005 16:14:06 -0800
changeset 671 efa4a7e2f322
parent 666 0100a43788ca
child 682 d6723636c172
permissions -rwxr-xr-x
Move hgrc documentation out to its own man page, hgrc(5). # HG changeset patch # User Bryan O'Sullivan <bos@serpentine.com> # Node ID 5076cf1fd6a1b8eb410e5e03cb004ca6a52a30f9 # Parent 7369ec5d93f2ffd490a43970edd9adf8d2bbe269 Move hgrc documentation out to its own man page, hgrc(5). The new man page expands on the existing documentation by describing the file format and the purpose of each section and field.
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
348
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
     6
T1=""; T2=""
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
     7
cleanup_exit() {
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
     8
    rm -f "$T1" "$T2"
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
     9
    exit $1
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
    10
}
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
    11
666
0100a43788ca hgeditor: Remove EMAIL default for HGUSER, comment editor selection
Radoslaw "AstralStorm" Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 665
diff changeset
    12
# 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
    13
# only for Mercurial, modify this:
348
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
    14
case "${EDITOR:=vi}" in
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
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
    23
if grep -q "^HG: merge resolve" "$1" ; then
186
9a2075c0b9b8 Add $HGEDITOR hook and example script
mpm@selenic.com
parents:
diff changeset
    24
    # we don't sign merges
348
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
    25
    exec $EDITOR "$1"
186
9a2075c0b9b8 Add $HGEDITOR hook and example script
mpm@selenic.com
parents:
diff changeset
    26
else
665
40fd5722c669 hgeditor: Remove temporary files even if interrupted
Radoslaw "AstralStorm" Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 664
diff changeset
    27
    # Remove temporary files even if we get interrupted
40fd5722c669 hgeditor: Remove temporary files even if interrupted
Radoslaw "AstralStorm" Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 664
diff changeset
    28
    trap "cleanup_exit 255" TERM KILL INT QUIT ABRT
348
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
    29
    T1=`mktemp`; T2=`mktemp`
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
    30
664
e1fbc1982372 hgeditor: Simplify manifest hash adding
Radoslaw "AstralStorm" Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 663
diff changeset
    31
    # Add manifest hash in order to sign whole repository state.
e1fbc1982372 hgeditor: Simplify manifest hash adding
Radoslaw "AstralStorm" Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 663
diff changeset
    32
    # Remove HG: prefix, as we want that to be stored.
e1fbc1982372 hgeditor: Simplify manifest hash adding
Radoslaw "AstralStorm" Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 663
diff changeset
    33
    grep '^HG: manifest hash' "$1" | cut -b 5- >> "$T1"
e1fbc1982372 hgeditor: Simplify manifest hash adding
Radoslaw "AstralStorm" Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 663
diff changeset
    34
    # Add all other state information
e1fbc1982372 hgeditor: Simplify manifest hash adding
Radoslaw "AstralStorm" Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 663
diff changeset
    35
    grep -v '^HG: manifest hash' "$1" >> "$T1"
475
ab53998b9dcd Fixed diff generation in hgeditor if a list of files is given to hg commit.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 350
diff changeset
    36
    (
ab53998b9dcd Fixed diff generation in hgeditor if a list of files is given to hg commit.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 350
diff changeset
    37
        cd "`hg root`"
ab53998b9dcd Fixed diff generation in hgeditor if a list of files is given to hg commit.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 350
diff changeset
    38
        grep '^HG: changed' "$1" | cut -b 13- | while read changed; do
ab53998b9dcd Fixed diff generation in hgeditor if a list of files is given to hg commit.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 350
diff changeset
    39
            hg diff "$changed" >> "$T2"
ab53998b9dcd Fixed diff generation in hgeditor if a list of files is given to hg commit.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 350
diff changeset
    40
        done
ab53998b9dcd Fixed diff generation in hgeditor if a list of files is given to hg commit.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 350
diff changeset
    41
    )
348
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
    42
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
    43
    CHECKSUM=`md5sum "$T1"`
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
    44
    $EDITOR "$T1" "$T2" || cleanup_exit $?
663
562404de61fb hgeditor: Fix some parameters to commands
Radoslaw "AstralStorm" Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 547
diff changeset
    45
    echo "$CHECKSUM" | md5sum -c --status && cleanup_exit 13
348
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
    46
    {
663
562404de61fb hgeditor: Fix some parameters to commands
Radoslaw "AstralStorm" Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 547
diff changeset
    47
        head -n 1 "$T1"
348
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
    48
        echo
666
0100a43788ca hgeditor: Remove EMAIL default for HGUSER, comment editor selection
Radoslaw "AstralStorm" Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 665
diff changeset
    49
        grep -v "^HG:" "$T1" | gpg -t -a -u "${HGUSER}" --clearsign
348
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
    50
    } > "$T2" && mv "$T2" "$1"
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
    51
    cleanup_exit $?
186
9a2075c0b9b8 Add $HGEDITOR hook and example script
mpm@selenic.com
parents:
diff changeset
    52
fi
348
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
    53