editmerge: properly quote variables
Previously, files with spaces would break editmerge.
--- a/contrib/editmerge Thu Oct 15 01:09:58 2015 -0700
+++ b/contrib/editmerge Sat Oct 17 15:48:14 2015 -0700
@@ -10,23 +10,23 @@
# editmerge.check=changed
# editmerge.premerge=keep
-FILE=$1
+FILE="$1"
getlines() {
- grep -n "^<<<<<<" $FILE | cut -f1 -d:
+ grep -n "^<<<<<<" "$FILE" | cut -f1 -d:
}
# editor preference loosely based on https://mercurial-scm.org/wiki/editor
# hg showconfig is at the bottom though, since it's slow to run (0.15 seconds)
-ED=$HGEDITOR
+ED="$HGEDITOR"
if [ "$ED" = "" ] ; then
- ED=$VISUAL
+ ED="$VISUAL"
fi
if [ "$ED" = "" ] ; then
- ED=$EDITOR
+ ED="$EDITOR"
fi
if [ "$ED" = "" ] ; then
- ED=$(hg showconfig ui.editor)
+ ED="$(hg showconfig ui.editor)"
fi
if [ "$ED" = "" ] ; then
echo "merge failed - unable to find editor"
@@ -34,22 +34,22 @@
fi
if [ "$ED" = "emacs" ] || [ "$ED" = "nano" ] || [ "$ED" = "vim" ] ; then
- FIRSTLINE=$(getlines | head -n 1)
+ FIRSTLINE="$(getlines | head -n 1)"
PREVIOUSLINE=""
# open the editor to the first conflict until there are no more
# or the user stops editing the file
while [ ! "$FIRSTLINE" = "" ] && [ ! "$FIRSTLINE" = "$PREVIOUSLINE" ] ; do
- $ED +$FIRSTLINE $FILE
- PREVIOUSLINE=$FIRSTLINE
- FIRSTLINE=$(getlines | head -n 1)
+ "$ED" "+$FIRSTLINE" "$FILE"
+ PREVIOUSLINE="$FIRSTLINE"
+ FIRSTLINE="$(getlines | head -n 1)"
done
else
- $ED $FILE
+ $ED "$FILE"
fi
# get the line numbers of the remaining conflicts
-CONFLICTS=$(getlines | sed ':a;N;$!ba;s/\n/, /g')
+CONFLICTS="$(getlines | sed ':a;N;$!ba;s/\n/, /g')"
if [ ! "$CONFLICTS" = "" ] ; then
echo "merge failed - resolve the conflicts (line $CONFLICTS) then use 'hg resolve --mark'"
exit 1