author | Thomas Arendsen Hein <thomas@intevation.de> |
Fri, 17 Jun 2005 15:05:32 +0100 | |
changeset 390 | 50aea13227a2 |
parent 350 | b4e0e20646bb |
child 475 | ab53998b9dcd |
child 484 | 934279f3ca53 |
permissions | -rwxr-xr-x |
186 | 1 |
#!/bin/bash |
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 |
|
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
12 |
case "${EDITOR:=vi}" in |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
13 |
emacs) |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
14 |
EDITOR="$EDITOR -nw" |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
15 |
;; |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
16 |
gvim|vim) |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
17 |
EDITOR="$EDITOR -f -o" |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
18 |
;; |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
19 |
esac |
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 |
if grep -q "^HG: merge resolve" "$1" ; then |
186 | 22 |
# we don't sign merges |
348
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
23 |
exec $EDITOR "$1" |
186 | 24 |
else |
348
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
25 |
T1=`mktemp`; T2=`mktemp` |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
26 |
MANIFEST=`grep '^HG: manifest hash' "$1" | cut -b 19-` |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
27 |
|
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
28 |
echo -e "\n\nmanifest hash: $MANIFEST" >> "$T1" |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
29 |
grep -vE '^(HG: manifest hash .*)?$' "$1" >> "$T1" |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
30 |
hg diff >> "$T2" |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
31 |
|
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
32 |
CHECKSUM=`md5sum "$T1"` |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
33 |
$EDITOR "$T1" "$T2" || cleanup_exit $? |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
34 |
echo "$CHECKSUM" | md5sum -c 2>/dev/null && cleanup_exit 0 |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
35 |
{ |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
36 |
head -1 "$T1" |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
37 |
echo |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
38 |
grep -v "^HG:" "$T1" | gpg -a -u "${HGUSER:-$EMAIL}" --clearsign |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
39 |
} > "$T2" && mv "$T2" "$1" |
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
40 |
cleanup_exit $? |
186 | 41 |
fi |
348
442eb02cf870
Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
280
diff
changeset
|
42 |