Discussion:
configure names for temporary files
Sergio Ferrero
2014-10-07 14:33:16 UTC
Permalink
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?

Other temp file name should also be ok as long as the file does not
contains dots in the part that corresponds to the file name.

Thanks in advance,
Sergio
David Aguilar
2014-10-08 08:22:30 UTC
Permalink
Post by Sergio Ferrero
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.
git config --system mergetool.<merge_tool_name>.cmd '"<merge_tool_path>"
-base "$BASE" -local "$LOCAL" -remote "$REMOTE" -merged "$MERGED"'
- <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
git mergetool -t <merge_tool_name> <model_name>.mdl
This command properly launches the GUI of the merge tool, however it
<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
Junio C Hamano
2014-10-08 17:25:34 UTC
Permalink
Post by David Aguilar
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.
Hopefully there won't be tools that reject paths with "_" in them
;-)
Sergio Ferrero
2014-10-10 14:39:21 UTC
Permalink
Ok. thanks!
David: I'm pretty sure matlab won't do that change soon :)

Sergio
Post by Junio C Hamano
Post by David Aguilar
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.
Hopefully there won't be tools that reject paths with "_" in them
;-)
Continue reading on narkive:
Loading...