Mercurial > hg
view contrib/editmerge @ 26998:4414d500604f
localrepo: put bookmark move following commit in one transaction
Before this patch, making a commit on a local repo could move a bookmark and
both operations would not be grouped as one transaction. This patch makes both
operations part of one transaction. This is necessary to switch to the new api
to save bookmarks repo._bookmarks.recordchange if we don't want to change the
current behavior of rollback.
Dirstate change happening after the commit is done is now part of the
transaction mentioned above. This leads to a change in the expected output of
several tests.
The change to test-fncache happens because both lock are now released in the
same finally clause. The lock release is made explicitly buggy in this test.
Previously releasing lock would crash triggering release of wlock that crashes
too. Now lock release crash does not directly result in the release of wlock.
Instead wlock is released at garbage collection time and the error raised at
that time "confuses" python.
author | Laurent Charignon <lcharignon@fb.com> |
---|---|
date | Wed, 18 Nov 2015 01:36:58 -0800 |
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