Meld is a tool for making manual merges. It is a 3-way editor with visualization and propagation of differences.
Usage notes and tips
- "Arrows" for propagation mode are toggled somehow with shift and control and alt
- All 3 panes can be edited individually and must be saved individually
- One way of working with Meld is to work towards making all 3 files equal - that forces you to review and rethink your merges in both contexts
- Mercurial by default puts "file" is to the left, then "file~base", and finally "file~other"
- By default then the left pane is the merge result
- Enjoy that it is easy to see how the base version has diverged into two different versions
- Changes from the new parent in "file~other" (to the right) can be propagated to "file" (to the left) through "file~base"
- You could (and should?) start by copying everything from "file~other" to "file~base" in order to work with the two parents side-by-side - but then it is just a two-way merge...
- Or, to change the order and which panes are displayed add a section "[merge-tools]" with "meld.args = $base $local $other" to your ~/.hgrc, specifying the order you prefer (since Meld's default order is different from some other diff tools)
- To not see base at all set it to "meld.args = $local $other". You merge to the local copy, which in this arrangement is still the left pane
Example .hgrc config
[merge-tools] meld.priority = 1 meld.args = $base $local $other
Using meld for viewing diffs
Adding this to your .hgrc will give you a hg meldiff command to view diffs in Meld (of course you can call it what you like).
[extensions] hgext.extdiff= [extdiff] cmd.meldiff = meld