hgeditor
changeset 348 442eb02cf870
parent 280 a69c3b2957d1
child 349 b2293093b89e
equal deleted inserted replaced
347:a0b2758edee7 348:442eb02cf870
     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     CHANGED=`grep '^HG: changed' $1 | cut -b 13-`
    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