mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 00:45:18 +03:00
merge: add a config to specify merge tool in interactive mode
Summary: Add a way to specify different merge tools for interactive and non-interactive mode. This will be used for the default `editmerge` merge tool, which pops up the `EDITOR` (vim) regardless of interactive mode, causing various user complains and hangs, including `arc pull` running rebase triggering editor, or VS Code running rebase triggering editor, and some other rebase hangs or vim errors. Reviewed By: DurhamG Differential Revision: D24069105 fbshipit-source-id: ec16fdc704cab6daeedb0c23d4028b4309d96d3f
This commit is contained in:
parent
4c08208f85
commit
ecc8e7187a
@ -220,7 +220,12 @@ def _picktool(repo, ui, path, binary, symlink, changedelete):
|
||||
disabled.add(t)
|
||||
names = tools.keys()
|
||||
tools = sorted([(-p, tool) for tool, p in tools.items() if tool not in disabled])
|
||||
uimerge = ui.config("ui", "merge")
|
||||
interactive = ui.interactive() and ui.formatted
|
||||
uimerge = None
|
||||
if interactive:
|
||||
uimerge = ui.config("ui", "merge:interactive")
|
||||
if not uimerge:
|
||||
uimerge = ui.config("ui", "merge")
|
||||
if uimerge:
|
||||
# external tools defined in uimerge won't be able to handle
|
||||
# change/delete conflicts
|
||||
|
@ -2492,6 +2492,10 @@ User interface controls.
|
||||
For more information on merge tools see :hg:`help merge-tools`.
|
||||
For configuring merge tools see the ``[merge-tools]`` section.
|
||||
|
||||
``merge:interactive``
|
||||
If set, override ``ui.merge`` in interactive mode (usually when both
|
||||
stdin and stdout are ttys).
|
||||
|
||||
``mergemarkers``
|
||||
Sets the merge conflict marker label styling. The ``detailed``
|
||||
style uses the ``mergemarkertemplate`` setting to style the labels.
|
||||
|
@ -1379,3 +1379,15 @@ specified file as expected
|
||||
couldn't find merge tool true (for pattern f)
|
||||
couldn't find merge tool true
|
||||
f = false
|
||||
|
||||
test ui.merge:interactive
|
||||
|
||||
$ hg debugpickmergetool --config ui.formatted=false --config ui.interactive=false --config ui.merge=nonint --config ui.merge:interactive=int f
|
||||
f = nonint
|
||||
$ hg debugpickmergetool --config ui.formatted=false --config ui.interactive=true --config ui.merge=nonint --config ui.merge:interactive=int f
|
||||
f = nonint
|
||||
$ hg debugpickmergetool --config ui.formatted=true --config ui.interactive=false --config ui.merge=nonint --config ui.merge:interactive=int f
|
||||
f = nonint
|
||||
$ hg debugpickmergetool --config ui.formatted=true --config ui.interactive=true --config ui.merge=nonint --config ui.merge:interactive=int f
|
||||
f = int
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user