D932: filemerge: introduce functions to halt merge flow
ryanmce (Ryan McElroy)
phabricator at mercurial-scm.org
Thu Oct 5 05:28:41 EDT 2017
ryanmce updated this revision to Diff 2457.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D932?vs=2413&id=2457
REVISION DETAIL
https://phab.mercurial-scm.org/D932
AFFECTED FILES
mercurial/configitems.py
mercurial/filemerge.py
mercurial/help/config.txt
CHANGE DETAILS
diff --git a/mercurial/help/config.txt b/mercurial/help/config.txt
--- a/mercurial/help/config.txt
+++ b/mercurial/help/config.txt
@@ -1239,6 +1239,17 @@
different contents. Similar to ``merge.checkignored``, except for files that
are not ignored. (default: ``abort``)
+``onfailure``
+ When set to ``continue`` (the default), the merge process attempts to
+ merge all unresolved files using the merge chosen tool, regardless of
+ whether previous file merge attempts during the process succeeded or not.
+ Setting this to ``prompt`` will prompt after any merge failure continue
+ or halt the merge process. Setting this to ``halt`` will automatically
+ halt the merge process on any merge tool failure. The merge process
+ can be restarted by using the ``resolve`` command. When a merge is
+ halted, the repository is left in a normal ``unresolved`` merge state.
+ (default: ``continue``)
+
``merge-patterns``
------------------
diff --git a/mercurial/filemerge.py b/mercurial/filemerge.py
--- a/mercurial/filemerge.py
+++ b/mercurial/filemerge.py
@@ -721,6 +721,21 @@
if not r and back is not None:
util.unlink(back)
+def _haltmerge():
+ msg = _('merge halted after failed merge (see hg resolve)')
+ raise error.InterventionRequired(msg)
+
+def _onfilemergefailure(ui):
+ action = ui.config('merge', 'onfailure')
+ if action == 'continue':
+ return
+ if action == 'prompt':
+ msg = _('continue merge operation (yn)?' '$$ &Yes $$ &No')
+ if ui.promptchoice(msg, 0) == 1:
+ _haltmerge()
+ if action == 'halt':
+ _haltmerge()
+
def _check(repo, r, ui, tool, fcd, files):
fd = fcd.path()
unused, unused, unused, back = files
diff --git a/mercurial/configitems.py b/mercurial/configitems.py
--- a/mercurial/configitems.py
+++ b/mercurial/configitems.py
@@ -299,6 +299,9 @@
coreconfigitem('merge', 'followcopies',
default=True,
)
+coreconfigitem('merge', 'onfailure',
+ default='continue',
+)
coreconfigitem('pager', 'ignore',
default=list,
)
To: ryanmce, #hg-reviewers, krbullock
Cc: krbullock, pulkit, mercurial-devel
More information about the Mercurial-devel
mailing list