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
next prev parent 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.