Mercurial > hg
diff contrib/editmerge @ 26771:a723f900d212
editmerge: properly quote variables
Previously, files with spaces would break editmerge.
author | Ryan McElroy <rmcelroy@fb.com> |
---|---|
date | Sat, 17 Oct 2015 15:48:14 -0700 |
parents | 58b04a538caa |
children | 612502900a2d |
line wrap: on
line diff
--- 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