author | Radoslaw "AstralStorm" Szkodzinski <astralstorm@gorzow.mm.pl> |
Sun, 10 Jul 2005 16:00:56 -0800 | |
changeset 666 | 0100a43788ca |
parent 665 | 40fd5722c669 |
child 682 | d6723636c172 |
permissions | -rwxr-xr-x |
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 |
||
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 | 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 | 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 | 52 |
fi |
348
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
53 |