Whenever I perform an hg rebase
and there are merge conflicts, it immediately pulls up an editor for me to resolve the conflict. However, it doesn't give me any information about where in the rebase process I am at. For example, if my history looks as follows:
o 12
|
o 11
|
10 o |
\ /
o 9
Performing hg rebase -s 11 -d 10
may have a conflict trying to apply either 11 or 12. It is difficult to tell at a glance just from the merge conflict where I am stopped, especially when the graph is larger than this. How can I tell where in the rebase process the conflict is?
Very recent Mercurials have two configuration options: [ui] mergemarkertemplate
, and [ui] pre-merge-tool-output-template
, which can be used to improve this situation a bit.
pre-merge-tool-output-template
pre-merge-tool-output-template
is printed before running any external merge tool. This can be used to print something before your editor or kdiff3 pops up; note that if you use a terminal-based merge tool (such as most editors unless they're the gui version), it'll likely be hidden by the merge tool. Depending on OS and what program you're using, you may be able to hit Ctrl-Z to suspend your merge tool to see this output.
Example output:
merging path/to/file
Running merge tool for path/to/file (/usr/bin/vim):
- local (working copy): 10:2d1f533d add binary file (#2) tip default
- base (base): 6:abcd1234 some other description default
- other (merge rev): 9:1e7ad7d7 add binary file (#1) default
... vim runs here ...
See https://www.mercurial-scm.org/repo/hg/file/14589f1989e9/tests/test-merge-tools.t#l1956 for the template that produced that output, hg help config.ui.pre-merge-tool-output-template
and hg help templates
for more information on that.
mergemarkertemplate
mergemarkertemplate
controls the conflict markers you see in your editor. Set [ui] mergemarkers=detailed
and see if this is sufficient; if not, you can use [ui] mergemarkertemplate
to customize it; this can also be customized on a per-merge-tool basis, so see hg help config.ui.mergemarkers
, hg help config.ui.mergemarkertemplate
, and hg help config.merge-tools
.
Merge tools like kdiff3
often have the ability to customizable the labels. In the default configuration, this should be the operation-provided name for the base/local/other (in my example above, this would be base
, working copy
, and merge rev
, respectively. I believe if you have [ui] mergemarkers=detailed
or [merge-tools] kdiff3.mergemarkers=detailed
, these will include additional information. See hg help config.merge-tools
for more information on the per-merge-tool configuration options.