FileMerge/opendiff (Mac XCode Developer tools)
This should already be installed once you install XCode on a Mac.
It supports diff editing and 3-pane conflict resolution. It does not support 4-pane conflict resolution.
The interface is a bit archaic, a lot of the operations are in the Actions menu.
The config below works around the fact that the opendiff
command (which also launches FileMerge) does
not wait for FileMerge to exit. With this config, you have to fully quit the FileMerge app for jj
to proceed.
[merge-tools.filemerge]
# Note: You have to fully exit FileMerge for `jj` to move on.
program = "open"
edit-args = ["-a", "FileMerge", "-n", "-W", "--args",
"-left", "$left", "-right", "$right",
"-merge", "$output"]
merge-args = ["-a", "FileMerge", "-n", "-W", "--args",
"-left", "$left", "-right", "$right",
"-ancestor", "$base", "-merge", "$output",]
BBedit
Currently untested, see https://apple.stackexchange.com/questions/476348/use-apples-filemerge-from-command-line-and-have-it-wait-instead-of-exiting-imme/476359?noredirect=1#comment713493_476359.
It seems to support diff editing but not conflict resolution. According to the docs, it's a free feature of BBEdit, though you have to use up the 30-day trial to try it (which is why I haven't tried it yet) and to check that it actually works properly in the free version.