Show More
@@ -1,21 +1,42 | |||||
1 | #!/bin/bash |
|
1 | #!/bin/bash | |
2 | # |
|
2 | # | |
3 | # This is an example of using HGEDITOR to automate the signing of |
|
3 | # This is an example of using HGEDITOR to automate the signing of | |
4 | # commits and so on. |
|
4 | # commits and so on. | |
5 |
|
5 | |||
6 | MANIFEST=`grep '^HG: manifest hash' $1 | cut -b 19-` |
|
6 | T1=""; T2="" | |
7 | if grep -q "^HG: merge resolve" $1 ; then |
|
7 | cleanup_exit() { | |
|
8 | rm -f "$T1" "$T2" | |||
|
9 | exit $1 | |||
|
10 | } | |||
|
11 | ||||
|
12 | case "${EDITOR:=vi}" in | |||
|
13 | emacs) | |||
|
14 | EDITOR="$EDITOR -nw" | |||
|
15 | ;; | |||
|
16 | gvim|vim) | |||
|
17 | EDITOR="$EDITOR -f -o" | |||
|
18 | ;; | |||
|
19 | esac | |||
|
20 | ||||
|
21 | if grep -q "^HG: merge resolve" "$1" ; then | |||
8 | # we don't sign merges |
|
22 | # we don't sign merges | |
9 | $EDITOR $1 |
|
23 | exec $EDITOR "$1" | |
10 | else |
|
24 | else | |
11 | T=`mktemp` |
|
25 | T1=`mktemp`; T2=`mktemp` | |
12 |
|
|
26 | MANIFEST=`grep '^HG: manifest hash' "$1" | cut -b 19-` | |
13 | # show a diff so writing commit comments is easier |
|
27 | ||
14 | hg diff $CHANGED >> $T |
|
28 | echo -e "\n\nmanifest hash: $MANIFEST" >> "$T1" | |
15 | echo -e "\n\nmanifest hash: $MANIFEST" > $1 |
|
29 | grep -vE '^(HG: manifest hash .*)?$' "$1" >> "$T1" | |
16 | emacs -nw $T $1 |
|
30 | hg diff >> "$T2" | |
17 | head -1 $1 > $T |
|
31 | ||
18 | echo >> $T |
|
32 | CHECKSUM=`md5sum "$T1"` | |
19 | gpg -a -u $HGUSER -o - --clearsign $1 >> $T |
|
33 | $EDITOR "$T1" "$T2" || cleanup_exit $? | |
20 | mv $T $1 |
|
34 | echo "$CHECKSUM" | md5sum -c 2>/dev/null && cleanup_exit 0 | |
|
35 | { | |||
|
36 | head -1 "$T1" | |||
|
37 | echo | |||
|
38 | grep -v "^HG:" "$T1" | gpg -a -u "${HGUSER:-$EMAIL}" --clearsign | |||
|
39 | } > "$T2" && mv "$T2" "$1" | |||
|
40 | cleanup_exit $? | |||
21 | fi |
|
41 | fi | |
|
42 |
General Comments 0
You need to be logged in to leave comments.
Login now