On Tue, Oct 07, 2014 at 11:33:16AM -0300, Sergio Ferrero wrote: > Hello, > > I'd like to configure git with a specific merge tool to merge Simulink > model files. > I have followed the steps to configure the merge tool successfully. > > I typed the following on Git Bash: > > git config --system mergetool.<merge_tool_name>.cmd '"<merge_tool_path>" > -base "$BASE" -local "$LOCAL" -remote "$REMOTE" -merged "$MERGED"' > > where: > > - <merge_tool_name> is the name of the specific merge tool > - <merge_tool_path> is the full path to the .exe file for the merge tool > - the merge tool accepts the -base, -local, -remote and -merged arguments > > > Then, after a merge detects conflicts on a Simulink model, I run the > following command on the Git Bash: > > git mergetool -t <merge_tool_name> <model_name>.mdl > > > This command properly launches the GUI of the merge tool, however it > indicates that provided file names are invalid. They are of the form: > <model_name>.mdl.<revision>.#.mdl, > where <revision> is either LOCAL, REMOTE or BASE and # is a number. > > The merge tool needs to open the model in MATLAB and MATLAB does not allow > opening models with '.' in their names. > > Thus, is there a way to configure Git so that temporary models are of the > form <model_name>_mdl_<revision>_#.mdl instead of < > model_name>.mdl.<revision>.#.mdl? No such option exists. In theory you could come up with a way to make this configurable. A configuration variable could define a file pattern, for example. The downside is making it configurable means supporting some micro-format and the implementation would probably be ugly and require eval. I don't think it needs to be configurable. Right now the code flow is roughly: MERGED=foo/bar.baz ext="$$$(expr "$MERGED" : '.*\(\.[^/]*\)$')" BACKUP="./$MERGED.BACKUP.$ext" LOCAL="./$MERGED.LOCAL.$ext" REMOTE="./$MERGED.REMOTE.$ext" BASE="./$MERGED.BASE.$ext" This results in a path that looks like: ./foo/bar.baz.BASE.81001.baz I think we can do better by default. A more conservative result would something like: ./foo/bar_BASE_81001.baz Consequently, matlab (and perhaps other overly-picky tools) are more likely to accept this path since it fits into their windows-esque worldview where filenames can have at most 1 dot. You should also email matlab support and kindly ask them to fix their buggy software! ;-P foo.bar.baz is a perfectly valid filename. In any case, it might be worth adjusting mergetool to use a more conservative path (underscores instead of dots) since there doesn't seem to be much downside to doing so. -- David -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html