[PATCH] conrib: properly quote variables in editmerge
Ryan McElroy
rm at fb.com
Sat Oct 17 22:49:06 UTC 2015
# HG changeset patch
# User Ryan McElroy <rmcelroy at fb.com>
# Date 1445122094 25200
# Sat Oct 17 15:48:14 2015 -0700
# Node ID eb4b0e4b5d6e920b0769cb103fdc6bee4176ad0b
# Parent 50fc80e46786301bcf775649ef8f6d121f62fa5c
conrib: properly quote variables in editmerge
Previously, files with spaces would break editmerge.
diff --git a/contrib/editmerge b/contrib/editmerge
--- a/contrib/editmerge
+++ b/contrib/editmerge
@@ -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 @@ if [ "$ED" = "" ] ; then
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
More information about the Mercurial-devel
mailing list