I have configured IntelliJ as my diff and mergetool on my mac, but the git launches it, the command line always returns immediately, rather than waiting for the diff to be completed, which means that the changes enacted are not reflected on disk.
My configuration is:
[mergetool "intellij"]
cmd = /Applications/IntelliJ\\ IDEA\\ 13\\ CE.app/Contents/MacOS/idea merge \
$(cd $(dirname \"$LOCAL\") && pwd)/$(basename \"$LOCAL\") \
$(cd $(dirname \"$REMOTE\") && pwd)/$(basename \"$REMOTE\") \
$(cd $(dirname \"$BASE\") && pwd)/$(basename \"$BASE\")
$(cd $(dirname \"$MERGED\") && pwd)/$(basename \"$MERGED\")
trustExitCode = true
I've testing calling IntelliJ by hand without git and it also returns immediately, so I don't think this is caused by git's invocation, rather that the IntelliJ command line invocation just sends a message to open the window to an existing running instance of IntelliJ.. Is there an option to force IntelliJ to not return or spawn a new instance to make this work?
There is no way to do it. There are three workarounds:
Close existing application before using difftool. If there are no other windows open, mergetool will work correctly.
Use second instance of IntelliJ with different caches and config home But be careful with licensing of second instance. If you use license server for example both instances will take a license from server.
Add something like pause (on Windows) to a startup script. So git will call BAT file (on Windows) and this BAT file will call IntelliJ and then wait for input. After you do all what you need, you should go back to console and press any key manually.
This works now.
Run the action "Create Command-line launcher..." to create the launch script (for me /usr/local/bin/idea.)
In .gitconfig:
[mergetool "idea"]
cmd = idea merge \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\"
trustExitCode = true
likewise for difftool
[difftool "idea"]
cmd = idea diff \"$LOCAL\" \"$REMOTE\"
(Because of a bug, you may have to update the commandline launcher if you created it a while ago and have updated Intellij in the meantime.)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With