threads / discuss / 37681

configure names for temporary files

Subject: configure names for temporary files

## tl;dr

4 messages between Oct 7, 2014 and Oct 10, 2014.

replies: 3people: 3as markdown or json

Sergio Ferrero· Oct 7, 2014, 14:33 UTC · lore
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· Oct 8, 2014, 08:22 UTC · re: Sergio Ferrero · lore

Re: configure names for temporary files

On Tue, Oct 07, 2014 at 11:33:16AM -0300, Sergio Ferrero wrote:
Show 35 quoted lines
> 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
Junio C Hamano· Oct 8, 2014, 17:25 UTC · re: David Aguilar · lore

Re: configure names for temporary files

David Aguilar <davvid@gmail.com> writes:
> 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· Oct 10, 2014, 14:39 UTC · re: Junio C Hamano · lore

Re: configure names for temporary files

Ok. thanks!
David: I'm pretty sure matlab won't do that change soon :)
Sergio
On Wed, Oct 8, 2014 at 2:25 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 8 quoted lines
> David Aguilar <davvid@gmail.com> writes:
>
>> 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
> ;-)

← back to recent threads