Mercurial > hg > mercurial-crew-with-dirclash
annotate hgeditor @ 746:9095e3456ea7
Change C to M in status
author | mpm@selenic.com |
---|---|
date | Thu, 21 Jul 2005 12:24:42 -0500 |
parents | 4ccf3de52989 |
children | 3e73bf876f17 |
rev | line source |
---|---|
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 | 2 # |
3 # This is an example of using HGEDITOR to automate the signing of | |
4 # commits and so on. | |
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 |
348
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
9 T1=""; T2="" |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
10 cleanup_exit() { |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
11 rm -f "$T1" "$T2" |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
12 exit $1 |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
13 } |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
14 |
666
0100a43788ca
hgeditor: Remove EMAIL default for HGUSER, comment editor selection
Radoslaw "AstralStorm" Szkodzinski <astralstorm@gorzow.mm.pl>
parents:
665
diff
changeset
|
15 # 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
|
16 # only for Mercurial, modify this: |
348
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
17 case "${EDITOR:=vi}" in |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
18 emacs) |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
19 EDITOR="$EDITOR -nw" |
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 gvim|vim) |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
22 EDITOR="$EDITOR -f -o" |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
23 ;; |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
24 esac |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
25 |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
26 if grep -q "^HG: merge resolve" "$1" ; then |
186 | 27 # we don't sign merges |
348
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
28 exec $EDITOR "$1" |
186 | 29 else |
665
40fd5722c669
hgeditor: Remove temporary files even if interrupted
Radoslaw "AstralStorm" Szkodzinski <astralstorm@gorzow.mm.pl>
parents:
664
diff
changeset
|
30 # 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
|
31 trap "cleanup_exit 255" TERM KILL INT QUIT ABRT |
348
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
32 T1=`mktemp`; T2=`mktemp` |
683
104d2aee3b44
Revert hgeditor change to manifest bits
Matt Mackall <mpm@selenic.com>
parents:
682
diff
changeset
|
33 MANIFEST=`grep '^HG: manifest hash' "$1" | cut -b 19-` |
348
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
34 |
683
104d2aee3b44
Revert hgeditor change to manifest bits
Matt Mackall <mpm@selenic.com>
parents:
682
diff
changeset
|
35 echo -e "\n\nmanifest hash: $MANIFEST" >> "$T1" |
104d2aee3b44
Revert hgeditor change to manifest bits
Matt Mackall <mpm@selenic.com>
parents:
682
diff
changeset
|
36 grep -vE '^(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
|
37 ( |
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 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
|
39 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
|
40 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
|
41 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
|
42 ) |
348
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
43 |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
44 CHECKSUM=`md5sum "$T1"` |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
45 $EDITOR "$T1" "$T2" || cleanup_exit $? |
684
4ccf3de52989
Turn off signing with hgeditor by default
Matt Mackall <mpm@selenic.com>
parents:
683
diff
changeset
|
46 |
4ccf3de52989
Turn off signing with hgeditor by default
Matt Mackall <mpm@selenic.com>
parents:
683
diff
changeset
|
47 if [ "$SIGN" == "1" ] ; then |
4ccf3de52989
Turn off signing with hgeditor by default
Matt Mackall <mpm@selenic.com>
parents:
683
diff
changeset
|
48 echo "$CHECKSUM" | md5sum -c 2>/dev/null && cleanup_exit 13 |
4ccf3de52989
Turn off signing with hgeditor by default
Matt Mackall <mpm@selenic.com>
parents:
683
diff
changeset
|
49 { |
4ccf3de52989
Turn off signing with hgeditor by default
Matt Mackall <mpm@selenic.com>
parents:
683
diff
changeset
|
50 head -n 1 "$T1" |
4ccf3de52989
Turn off signing with hgeditor by default
Matt Mackall <mpm@selenic.com>
parents:
683
diff
changeset
|
51 echo |
4ccf3de52989
Turn off signing with hgeditor by default
Matt Mackall <mpm@selenic.com>
parents:
683
diff
changeset
|
52 grep -v "^HG:" "$T1" | gpg -t -a -u "${HGUSER}" --clearsign |
4ccf3de52989
Turn off signing with hgeditor by default
Matt Mackall <mpm@selenic.com>
parents:
683
diff
changeset
|
53 } > "$T2" && mv "$T2" "$1" |
4ccf3de52989
Turn off signing with hgeditor by default
Matt Mackall <mpm@selenic.com>
parents:
683
diff
changeset
|
54 else |
4ccf3de52989
Turn off signing with hgeditor by default
Matt Mackall <mpm@selenic.com>
parents:
683
diff
changeset
|
55 mv "$T1" "$1" |
4ccf3de52989
Turn off signing with hgeditor by default
Matt Mackall <mpm@selenic.com>
parents:
683
diff
changeset
|
56 fi |
348
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
57 cleanup_exit $? |
186 | 58 fi |
348
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
59 |