Mercurial > hg-stable
view contrib/editmerge @ 20391:466e4c574db0
import-checker: handle standard modules with arch in the filename
Installations with module names like
/usr/lib/python2.7/lib-dynload/bz2.x86_64-linux-gnu.so occurs in the wild.
Let's just ignore everything after first '.' when guessing the Python module
name.
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Fri, 07 Feb 2014 02:59:46 +0100 |
parents | 34d720b3b33e |
children | 864c56cb8945 |
line wrap: on
line source
#!/bin/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