Mercurial > hg
view contrib/editmerge @ 42945:40f78072fda9
narrow: add option for automatically removing unused includes
It's been a somewhat common request among our users to have Mercurial
automatically pick includes to remove. This patch adds an option for
that: `hg tracked --auto-remove-includes`. I'm not sure if this is the
right name and semantics for it. Perhaps the feature should also add
excludes of large subdirectories even if other files in the include
are needed? Narrow clones are experimental, so we can change the name
and/or semantics later if necessary.
Differential Revision: https://phab.mercurial-scm.org/D6848
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Thu, 12 Sep 2019 21:55:45 -0700 |
parents | 612502900a2d |
children |
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 https://mercurial-scm.org/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