hgeditor
author Pierre-Yves David <pierre-yves.david@fb.com>
Sat, 27 Feb 2016 18:02:12 +0100
changeset 28280 dc6032a1d888
parent 26781 1aee2ab0f902
permissions -rwxr-xr-x
rebase: remove experimental option from 'rebase' config section Changeset f0e9f38d250f introduced a guard against case where obsolete changesets are included in the rebase in a way this will result in divergence (because rebase create new successors for changeset which already have successors). In the same go a 'rebase.allowdivergence' option was introduced to control that behavior. We rename this config option to 'experimental.allowdivergence' for multiple reasons: * First this behavior is attached to changeset evolution, a feature still experimental. * Second, there was no 'rebase' section in config before we introduced this option. I would like to avoid proliferation of micro config section and therefore would like to avoid the creation of this new section just for an experimental feature. * Third, this guard (warning the user about a history rewriting operation that will create divergence) will very likely be generalised to all history rewriting operations, making this not rebase specific. * Finally, because this will likely be a general guard present a bit everywhere in the UI we'll likely end up with something better than a config option to control this behavior, so having the current config option living in experimental will allow us make it disappear in the future. So we banish this config option back to the experimental section where it belongs, killing the newly born 'rebase' config section in the process.

#!/bin/sh
#
# This is an example of using HGEDITOR to create of diff to review the
# changes while committing.

# If you want to pass your favourite editor some other parameters
# only for Mercurial, modify this:
case "${EDITOR}" in
    "")
        EDITOR="vi"
        ;;
    emacs)
        EDITOR="$EDITOR -nw"
        ;;
    gvim|vim)
        EDITOR="$EDITOR -f -o"
        ;;
esac


HGTMP=""
cleanup_exit() {
    rm -rf "$HGTMP"
}

# Remove temporary files even if we get interrupted
trap "cleanup_exit" 0 # normal exit
trap "exit 255" HUP INT QUIT ABRT TERM

HGTMP=$(mktemp -d ${TMPDIR-/tmp}/hgeditor.XXXXXX)
[ x$HGTMP != x -a -d $HGTMP ] || {
  echo "Could not create temporary directory! Exiting." 1>&2
  exit 1
}

(
    grep '^HG: changed' "$1" | cut -b 13- | while read changed; do
        "$HG" diff "$changed" >> "$HGTMP/diff"
    done
)

cat "$1" > "$HGTMP/msg"

MD5=$(which md5sum 2>/dev/null) || \
    MD5=$(which md5 2>/dev/null)
[ -x "${MD5}" ] && CHECKSUM=`${MD5} "$HGTMP/msg"`
if [ -s "$HGTMP/diff" ]; then
    $EDITOR "$HGTMP/msg" "$HGTMP/diff" || exit $?
else
    $EDITOR "$HGTMP/msg" || exit $?
fi
[ -x "${MD5}" ] && (echo "$CHECKSUM" | ${MD5} -c >/dev/null 2>&1 && exit 13)

mv "$HGTMP/msg" "$1"

exit $?