Not affiliated with them in any way by the way.
[1] https://www.sublimetext.com/ [2] https://www.sublimemerge.com/
It should have been called Sublime Git. Alas.
Also it's lightning fast and relatively bug free compared to the mess that is Sourcetree, which used to be my favorite client but then went utterly downhill.
For example, I use its "Table Compare" feature to compare log files from different machines, sorted by timestamp. This lets me easily see the order of operations in a distributed system.
The directory contents tree diff is also really useful.
I wish they made it even easier the basic case of comparing aribtrary text. Maybe it should be the default mode after opening the program, instead of having to click on a couple buttons, because I use it a lot to manually paste pieces of text. For example, logs from a server during testing, to compare what went different between runs.
Another welcomed addition would be "ignore masks". Some kind of regex input that could be used to quickly tell Meld which parts of the text to skip comparing. That way, comparison of log files could be made where a timestamps column would be ignored.
On Windows, WinMerge[1] is a better alternative. Too bad is Windows only.
For a non-FOSS and cross platform solution I recommend BeyondCompare (U$30.00)[2]. It replicates most of WinMerge UI.
P4Merge is very good at the second but not so much at the first.
Also, to this date it doesn't have an OS-X version for M1 CPUs.
Back before git, it was common to take a massive set of changes and merge them manually when merging branches, and BC was the only tool that made it painless for me.
I stumped up my own cash for a pro license and I use it almost daily even now.
My SO adores Meld, but she works with Linux. I tried using it but couldn't get used to it. She also makes fun of me (half in jest) because I use Tortoise Git instead of the command line...
The other thing is that the trial used to be very fair. I don’t know if they changed it, but it used to give you “days of usage” not contiguous days. I once used it for about 5 months because the 30 day trial only counted the days I actually used it and I saved using it for when I really needed it, and used WinMerge when I could instead.
Beyond Compare is a gem.
Pro version gives you 3 panel merging. If you use that a lot then it might be worth it. Or, instead, use P4Merge for it.
Currently I am using KDiff3. It is a little buggy and doesn't have a nice UI but it is the best open source merging tool that I am aware of. It allows choosing lines from original file, from A, B and manual editing.
I noticed that certain popular and highly praised commercial IDE also provides only 3-panel interface for merging. This makes resolving conflicts more difficult and prone to errors.
[alias]
mt = mergetool
[merge]
tool = mymeld
conflictstyle = diff3
[mergetool "mymeld"]
# Gives you meld, with three comparison tabs. Assuming you're merging others changes into
# your branch, this shows you:
# - 1st tab: yours|merged result|theirs (do the merge here into the middle pane)
# - 2nd tab: base vs your changes (look at just your changes)
# - 3rd tab: base vs their changes (look at just their changes)
cmd = meld $LOCAL $BASE $REMOTE --output $MERGED --diff $BASE $LOCAL --diff $BASE $REMOTE --auto-mergeIsn't one of version A or B the original file? What am I missing?
This is a good discussion on the topic including the diff3 option git has.
Unfortunately versions starting at 1.9.0 are drastically buggier than 1.8.5: Ctrl+C being incorrectly enabled and disabled (https://bugs.kde.org/show_bug.cgi?id=444636), merge errors (https://bugs.kde.org/show_bug.cgi?id=437570, fixed), drastic slowdown when loading CRLF files (https://bugs.kde.org/show_bug.cgi?id=450411, fixed), recurring assertion errors (didn't personally encounter, but https://bugs.kde.org/show_bug.cgi?id=426301, https://bugs.kde.org/show_bug.cgi?id=442618), large chunks of Git history producing unusable binaries that corrupt memory or print assertion errors when loading files, etc. I stopped following KDiff3 development and decided to pin 1.8.5 on my system, which actually works.
Another fork of KDiff3 is https://github.com/michaelxzhang/kdiff3. I haven't tested it, but I hope the alternative diff coloration makes it easier to see single-word/space insertions and deletions within a line (which is something I often fail to notice in mainline KDiff3).
I've not noticed the problem you describe, so can't confirm whether it is solved by that flag - a while ago I mostly switched to Sublime Merge from kdiff3.
back in the days when i was responsible for regular merges for a pretty big project (weekly or so, 10-30 devs on both sides, n*1e7 LoC), i took the time to learn ediff and did my merges in lucid/xemacs.
i had colleagues at the time who had nice things to say about beyondcompare.
more recently i have seen this meld thing and it has piqued my curiosity.
favorite tool for quick no-frills out-of-practice-with-real-tools visual diff is fldiff built on fltk.
I often have colleagues who are inexplicably afraid of merge conflicts and try to negotiate who's working on which parts of the app. I think a proper merge tool could help them to overcome this.
it may not be the best merge tool in existence but it's adequate (which is actually, suprisingly good, given it is not at all its intended function) and at that point having all my standard vim configuration, editing capabilities etc. beats anything another tool would bring to the table.
Not to mention, 100% terminal UI and built-into-vim means I can use it everywhere and anywhere without thinking about it.
git config --global diff.tool meld
git config --global --add difftool.prompt false
And use git difftool instead of git diff $ meld .Or on terminals https://github.com/mookid/diffr with specific settings that use 256 colors for highlighting word differences as well.
But for manual merging I haven't found anything better than ediff. That's the only reason I install emacs on my work machines. Seemless integration into a text editor is just unbeatable.
[alias]
mt = mergetool
[merge]
tool = mymeld
conflictstyle = diff3
[mergetool "mymeld"]
# Gives you meld, with three comparison tabs. Assuming you're merging others changes into
# your branch, this shows you:
# - 1st tab: yours|merged result|theirs (do the merge here into the middle pane)
# - 2nd tab: base vs your changes (look at just your changes)
# - 3rd tab: base vs their changes (look at just their changes)
cmd = meld $LOCAL $BASE $REMOTE --output $MERGED --diff $BASE $LOCAL --diff $BASE $REMOTE --auto-merge> You can also get Meld from MacPorts, Fink or Brew; none of these methods are supported.
Can anyone recommend any of these unsupported options? The best diff GUI tool I've been able to find for OSX is DiffMerge (https://sourcegear.com/diffmerge/) on the App Store, and I'd like to have a tree view for folder comparisons.
Edit: what->which
https://www.perforce.com/products/helix-core-apps/merge-diff...
https://gitlab.gnome.org/GNOME/meld ## code
Meld 3.21.1 — 07 Jan 2022 -- thanks Meld !!
It’d be a great if an OSS tool was as good or better. But my experience thus far is that Araxis/BC3 are simply much better.
The first merge I did, even after reading the website, I couldn't fathom it. I understood the paradigm of merging into $BASE but couldn't figure out how to simply take these 5 lines from $REMOTE and these 3 from $LOCAL, so went back to the trusty Beyond Compare.
Might give it another shot.
I don't like the whole "balloons with tails" thing meld does. xxdiff strikes the best balance between "being a graphical tool" and "not having distracting clutter" in my opinion.
So to me, "targeted at developers" should mean something more than what Meld seems to offer (i.e., more than just syntax highlighting and regex filtering).
It's disappointing that programming language-sensitivity isn't more common. [I developed a Visual Basic compare/merge app in the early 90s that did a good job of this because it did extra work to understand the structure of the code, splitting methods and sorting them before comparing.]
I haven't tried it, but it does seem like a good direction to be trying to take merge tools.
I remember at one point there was a new version (based on gtk3 perhaps) that didn't work as well (useless type of scrollbars and slow) and I did some shenanigans to have an older version again on archlinux. However now even fresh installs do look and work good, I'm not sure what happened to that new version, maybe they improved the gtk3 based one to be as good as the one before it and I don't notice the difference anymore...
I never found one with features good enough to make me change from Kdiff3.
This is older than most people here!
I definded this wrapper script ~/bin/git-ydiff-s:
#!/bin/sh
git diff "$@" | ydiff -s --wrap --width=0
with which you can do `git ydiff-s` in your repos easily.It’s slightly tricky to integrate into Sourcetree but once you configure Sourcetree with the correct command line args it works quite painlessly.
Meld is extremely performant too.
Another text editor I love is “010 Editor”, it’s the only windows app I’ve found that works well on 2+ GB files without slowing my computer down.
I've ben using Meld daily for more than 10 years now. I am not so sure it can be defined "performant". Maybe your box is really powerful, but on small and mid-sized systems its performance is more on the clunky side.
I remember its performance worsened when it migrated to GTK3. It has stayed semi-slow for me since then.
[0]: https://winmerge.org
If you can accept a paid version of WinMerge for Linux and Mac I'd highly recommend BeyondCompare (U$ 30.00).
In meld, these commands operate depending on focus. When the focus is in the left file, alt-right merges to the right, but you cannot do alt-left to merge from the right file.
[0] e.g. https://stackoverflow.com/questions/10594653/is-there-any-wa...
https://marketplace.visualstudio.com/items?itemName=L13RARY....
This is why I always use IntelliJ merge/diff for supported languages, it just has so much more information about the merge/diff already available.