git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Aguilar <davvid@gmail.com>
To: Sergio Ferrero <sferrero@ensoftcorp.com>
Cc: git@vger.kernel.org
Subject: Re: configure names for temporary files
Date: Wed, 8 Oct 2014 01:22:30 -0700	[thread overview]
Message-ID: <20141008082228.GA78852@gmail.com> (raw)
In-Reply-To: <CALpL35mjtg9ge321Vz_kS1wzbYz+z9H5R3L8FcpVSNO3AtZzVA@mail.gmail.com>

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

  reply	other threads:[~2014-10-08  8:21 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-07 14:33 configure names for temporary files Sergio Ferrero
2014-10-08  8:22 ` David Aguilar [this message]
2014-10-08 17:25   ` Junio C Hamano
2014-10-10 14:39     ` Sergio Ferrero

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20141008082228.GA78852@gmail.com \
    --to=davvid@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=sferrero@ensoftcorp.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).