Move hgrc documentation out to its own man page, hgrc(5).
# HG changeset patch
# User Bryan O'Sullivan <bos@serpentine.com>
# Node ID 5076cf1fd6a1b8eb410e5e03cb004ca6a52a30f9
# Parent 7369ec5d93f2ffd490a43970edd9adf8d2bbe269
Move hgrc documentation out to its own man page, hgrc(5).
The new man page expands on the existing documentation by describing
the file format and the purpose of each section and field.
#!/bin/sh
#
# This is an example of using HGEDITOR to automate the signing of
# commits and so on.
T1=""; T2=""
cleanup_exit() {
rm -f "$T1" "$T2"
exit $1
}
# If you want to pass your favourite editor some other parameters
# only for Mercurial, modify this:
case "${EDITOR:=vi}" in
emacs)
EDITOR="$EDITOR -nw"
;;
gvim|vim)
EDITOR="$EDITOR -f -o"
;;
esac
if grep -q "^HG: merge resolve" "$1" ; then
# we don't sign merges
exec $EDITOR "$1"
else
# Remove temporary files even if we get interrupted
trap "cleanup_exit 255" TERM KILL INT QUIT ABRT
T1=`mktemp`; T2=`mktemp`
# Add manifest hash in order to sign whole repository state.
# Remove HG: prefix, as we want that to be stored.
grep '^HG: manifest hash' "$1" | cut -b 5- >> "$T1"
# Add all other state information
grep -v '^HG: manifest hash' "$1" >> "$T1"
(
cd "`hg root`"
grep '^HG: changed' "$1" | cut -b 13- | while read changed; do
hg diff "$changed" >> "$T2"
done
)
CHECKSUM=`md5sum "$T1"`
$EDITOR "$T1" "$T2" || cleanup_exit $?
echo "$CHECKSUM" | md5sum -c --status && cleanup_exit 13
{
head -n 1 "$T1"
echo
grep -v "^HG:" "$T1" | gpg -t -a -u "${HGUSER}" --clearsign
} > "$T2" && mv "$T2" "$1"
cleanup_exit $?
fi