Jump to content

Cannot get the mac version configured


Recommended Posts



Downloaded the mac version and failed to get it properly working


1. tried the following git config (among a myriad of combinations)


tool = semanticdiff

[difftool "semanticdiff"]
cmd = \"/Applications/semanticmerge.app/Contents/MacOS/semanticmerge\" -s \"$LOCAL\" -d \"$REMOTE\"
prompt = false

tool = semanticmerge
[mergetool "semanticmerge"]
cmd = \"/Applications/semanticmerge.app/Contents/MacOS/semanticmerge\"  -b=\"$BASE\" -d=\"$LOCAL\" -s=\"$REMOTE\" -r=\"$MERGED\" -l=csharp -emt=\"mergetool.exe -b=\"\"@basefile\"\" -bn=\"\"@basesymbolic\"\" -s=\"\"@sourcefile\"\" -sn=\"\"@sourcesymbolic\"\" -d=\"\"@destinationfile\"\" -dn=\"\"@destinationsymbolic\"\" -r=\"\"@output\"\" -t=\"\"@filetype\"\" -i=\"\"@comparationmethod\"\" -e=\"\"@fileencoding\"\"\" -edt=\"mergetool.exe  -s=\"\"@sourcefile\"\" -sn=\"\"@sourcesymbolic\"\" -d=\"\"@destinationfile\"\" -dn=\"\"@destinationsymbolic\"\" -t=\"\"@filetype\"\" -i=\"\"@comparationmethod\"\" -e=\"\"@fileencoding\"\"\"
trustExitCode = true

prompt = false
keepBackup = false

Then executing the following command

git difftool

yields the following output into the log file

2014-03-07 21:58:36,071 ERROR [-1596186200] SemanticMerge - Could not find a part of the path "/Applications/semanticmerge.app/Contents/Resources/devices/tmcs-reservation-sync/src/main/java/com/apcoa/tmcs/devices/reservation/sync/internal/OnlineReservationSyncAdapter.java".
System.IO.DirectoryNotFoundException: Could not find a part of the path "/Applications/semanticmerge.app/Contents/Resources/devices/tmcs-reservation-sync/src/main/java/com/apcoa/tmcs/devices/reservation/sync/internal/OnlineReservationSyncAdapter.java".
at System.IO.FileStream..ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare,int,bool,System.IO.FileOptions) <0x0019b>
at System.IO.FileStream..ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare) <0x00023>
at (wrapper remoting-invoke-with-check) System.IO.FileStream..ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare) <0x00053>
at System.IO.File.OpenRead (string) <0x0002f>
at System.IO.StreamReader..ctor (string,System.Text.Encoding,bool,int) <0x0007f>
at System.IO.StreamReader..ctor (string,System.Text.Encoding) <0x0001f>
at (wrapper remoting-invoke-with-check) System.IO.StreamReader..ctor (string,System.Text.Encoding) <0x00037>
at Codice.CM.SemanticMerge.SemanticMergeSource.ReadFile (string,System.Text.Encoding) <0x0004b>
at Codice.CM.SemanticMerge.SemanticMergeSource.GetTree (Codice.Tree.SemanticMergeFileInfo) <0x00023>
at Codice.CM.SemanticMerge.Gui.DiffController.a () <0x000e7>
at Codice.CM.SemanticMerge.Gui.DiffController.BuildMergeSource () <0x00013>
at semanticmergeguimonomac.AppDelegate.LaunchSemanticTool (Codice.CM.SemanticMerge.Gui.Model.SemanticToolInfo) <0x0002d>
at semanticmergeguimonomac.AppDelegate.FinishedLaunching (MonoMac.Foundation.NSObject) <0x00077>
at (wrapper dynamic-method) object.[semanticmergeguimonomac.AppDelegate.Void FinishedLaunching(MonoMac.Foundation.NSObject)] (MonoMac.Foundation.NSObject,MonoMac.ObjCRuntime.Selector,MonoMac.Foundation.NSObject) <0x00033>
at (wrapper native-to-managed) object.[semanticmergeguimonomac.AppDelegate.Void FinishedLaunching(MonoMac.Foundation.NSObject)] (MonoMac.Foundation.NSObject,MonoMac.ObjCRuntime.Selector,MonoMac.Foundation.NSObject) <0x0011b>
at (wrapper managed-to-native) MonoMac.AppKit.NSApplication.NSApplicationMain (int,string[]) <0x00003>
at MonoMac.AppKit.NSApplication.Main (string[]) <0x00097>

notice that it messes up the paths, tried a couple of combinations with and without quotes, but so far no joy


2. tried to set it up in sourcetree


Diff Command: /Applications/semanticmerge.app/Contents/MacOS/semanticmerge

Arguments: -s \"$LOCAL\" -d \"$REMOTE\"


Clicking the External Diff Tool button yields the following error message when trying to diff a java file

Oops! We do not support your language... yet!
SemanticMerge received the following files: aWxgm5_ReservationMapper.java", ReservationMapper.java".
The file extensions are not recognized as supported languages.
You can run your default text-based diff tool.
Note: in case you know these files contain a supported language check how to use the -l param in SemanticMerge.

If I click the "run text diff" button, I get

No external diff tool has been specified in order to proceed with the diff.

Haven't tried with merging yet, but the diff results are far from promising


3. a last problem is that by default the user does not have write access to the directory where semantic merge is trying to put the log file

so I had to do the following as root

git chmod a+w Applications/semanticmerge.app/Contents/MonoBundle

So all in all either I am doing something completely wrong, or this tool just plain does not work right with git and the mac.


Link to comment
Share on other sites

  • 2 weeks later...



Thanks for your feedback!


I'm sorry, but we don't have semantic diff tool for mac yet :( only merge tool. We are working to have it ASAP.


Regarding the configuration to use semantic merge as your merge tool with git, you can check it at http://www.semanticmerge.com/sm-guides/main.shtml#HowtoconfigurewithGit. Taking into account that:

* The path of semanticMerge is different in Mac, yours was correct (/Applications/semanticmerge.app/Contents/MacOS/semanticmerge)

* The external based-text merge tool cannot be our "mergetool.exe" since we are not providing it in Mac yet. You can use any other merge tool you have in your mac.


Sorry for the inconveniences, it is still beta, we are working to fullfill these kind of things.


Regarding your last point, we should move the log file to the user directory instead of inside the app. I will change this for the next release!


Let me know if it helps and you like what we got until now.



Link to comment
Share on other sites

  • 3 months later...


This topic is now archived and is closed to further replies.

  • Create New...