Size: 2000
Comment:
|
← Revision 14 as of 2021-01-28 14:21:28 ⇥
Size: 2076
Comment: Added config to use Meld as diff tool
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
This is a subjective evaluation of Meld. Please add your opinion. |
|
Line 5: | Line 3: |
[[http://meld.sourceforge.net/|Meld]] is a tool for making manual merges. It is a 3-way editor with visualization and propagation of differences. | [[http://meldmerge.org/|Meld]] is a tool for making manual merges. It is a 3-way editor with visualization and propagation of differences. |
Line 7: | Line 5: |
Meld is a GPL Python GTK Gnome tool, and thus unix only - no Windows version. | Meld is available for Linux, MacOS, and Windows. On MacOS, Meld is available from [[https://www.macports.org/|MacPorts]], Fink, and [[https://brew.sh/|Homebrew]]. There are some notes available on [[https://wiki.gnome.org/Apps/Meld/Windows|how to get Meld running on Windows]]. |
Line 14: | Line 12: |
* 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. * To change that add a section "[merge-tools]" with "meld.args = $base $local $other" to your ~/.hgrc, specifying the order you prefer. To not see base at all set it to "meld.args = $local $other". You merge to the local copy, which is this arrangement is still the left pane. |
* 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 |
Line 20: | Line 17: |
* 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 |
|
Line 21: | Line 20: |
== Issues == | == Example .hgrc config == {{{ [merge-tools] meld.priority = 1 meld.args = $base $local $other }}} |
Line 23: | Line 27: |
* Meld often looses track of what is going on, and prints assertion warnings and crashes - a workaround is to save and then reloading ... * Left- and right-most pane can't be directly compared with each other like they can with the middle pane, and similarly changes can't propagate directly * No help for merging |
== 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= |
Line 27: | Line 33: |
== Conclusion == A good visualization tool and editor. A strong tool if you know what you are doing. But is lacking merge features and it is not sufficiently stable... |
[extdiff] cmd.meldiff = meld }}} |
Description
Meld is a tool for making manual merges. It is a 3-way editor with visualization and propagation of differences.
Meld is available for Linux, MacOS, and Windows. On MacOS, Meld is available from MacPorts, Fink, and Homebrew. There are some notes available on how to get Meld running on Windows.
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