SourceTree does not yet officially support Kaleidoscope 2, so here is how to set it up:
In Preferences, under Diff:
You can try selecting Kaleidoscope, but we have had reports of mixed results. Some people have rebuilt their launch services database and restarted and been able to use Kaleidoscope this way:
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain system -domain use
Otherwise you can directly configure ksdiff for diffing:
Visual Diff Tool select Other with Diff Command
/usr/local/bin/ksdiff
and Arguments
-- "$LOCAL" "$REMOTE"
You'll need to set up merge as Other until SourceTree supports Kaleidoscope directly:
Merge Tool select Other with Merge Command
/usr/local/bin/ksdiff
and Arguments
--merge --output "$MERGED" --base "$BASE" -- "$LOCAL" "$REMOTE"
That's it, you should be clear to diff and merge away.
In testing, we found that sometimes SourceTree won't save edits to commands or arguments and that you may have to select a different tool then reselect Other to make the changes stick.
We've also found the Mac App Store version of SourceTree doesn't seem to call ksdiff at all when you're using the Other configuration. We'll update if we find more on this.
In order access the options in Preferences → Diff → External Diff/Merge I had to enable
Preferences → General → Allow SourceTree to modify your global Mercurial and Git configuration files.
SourceTree (1.5.6 from the App Store) then wrote those settings to the global
~/.gitconfig
; do agit config --global --edit
oropen ~/.gitconfig
to verify their presence (or add them manually):Interestingly though when disabling Preferences → General → Allow SourceTree to modify your global Mercurial and Git configuration files, "External Diff" stops working.