I want to use SemanticMerge as my mergetool in Git, but when I try to perform a merge, I get a complaint from SemanticMerge saying that it cannot locate the file C:\Program Files (x86)\Git\my_repo_name\my_project\MyFile.cs.BASE.1234.cs
- which is absolutely correct as it should be at C:\repositories\my_repo_name\my_project\MyFile.cs
and so on. For some reason although Git is working with the repositories in every other respect, it seems to be determined to pass the $BASE, $LOCAL and $REMOTE file paths with the Git install path prepended instead of the repository root.
I have been using the configuration suggested in their own tutorial as a starting point for this and the tool seems to work fine if given the correct paths, so I am guessing that somewhere between Git and MsysGit, there is some misconfiguration or miscommunication.
I'm not sure if the SemanticMerge configuration is your issue, but if it is, you can try using these settings. I have it working on my work machine, but these are my personal machine settings, so they might not have been updated yet. These settings are for msysgit on Windows 7 by the way:
[mergetool "sm"]
keepBackup = false
trustExitCode = false
cmd = 'C:/Users/<user>/AppData/Local/PlasticSCM4/semanticmerge/semanticmergetool.exe' -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\"\"\"