Mercurial > hg
view contrib/editmerge @ 23749:a387b0390082
localrepo: show headline notes in commitctx before showing filenames
commitctx already showed notes with filenames but didn't provide any context.
It is just as relevant to know when manifest or changelog is committed.
So, in addition to filenames, also show headlines 'committing files:',
'committing manifest' and 'committing changelog'.
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Fri, 18 Apr 2014 13:33:20 +0200 |
parents | 864c56cb8945 |
children | 4b0fc75f9403 |
line wrap: on
line source
#!/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