##// END OF EJS Templates
import-checker: resolve relative imports...
import-checker: resolve relative imports "from . import X" will produce an ImportFrom ast node with .module = None. This resulted in a run-time error from attempting to concatenate None with a str. Another problem with relative imports is that the prefix may be dynamic based on the "level" attribute of the import. e.g. "from ." has level 1 and "from .." has level 2. We teach the "fromlocal" function how to cope with relative imports. Where appropriate, the consumer passes in the level so relative module names may be resolved properly.

File last commit:

r20831:864c56cb default
r25701:1f88c0f6 default
Show More
editmerge
58 lines | 1.4 KiB | text/plain | TextLexer
#!/usr/bin/env bash
# A simple script for opening merge conflicts in the editor.
# Use the following Mercurial settings to enable it.
#
# [ui]
# merge = editmerge
#
# [merge-tools]
# editmerge.args=$output
# editmerge.check=changed
# editmerge.premerge=keep
FILE=$1
getlines() {
grep -n "<<<<<<" $FILE | cut -f1 -d:
}
# editor preference loosely based on http://mercurial.selenic.com/wiki/editor
# hg showconfig is at the bottom though, since it's slow to run (0.15 seconds)
ED=$HGEDITOR
if [ "$ED" = "" ] ; then
ED=$VISUAL
fi
if [ "$ED" = "" ] ; then
ED=$EDITOR
fi
if [ "$ED" = "" ] ; then
ED=$(hg showconfig ui.editor)
fi
if [ "$ED" = "" ] ; then
echo "merge failed - unable to find editor"
exit 1
fi
if [ "$ED" = "emacs" ] || [ "$ED" = "nano" ] || [ "$ED" = "vim" ] ; then
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)
done
else
$ED $FILE
fi
# get the line numbers of the remaining conflicts
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
fi
exit 0