From: "Shawn O. Pearce" <spearce@spearce.org>
To: Johannes Sixt <J.Sixt@eudaptics.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] Work around a bad interaction between Tcl and cmd.exe with "^{tree}"
Date: Wed, 11 Jul 2007 04:03:33 -0400 [thread overview]
Message-ID: <20070711080333.GP4436@spearce.org> (raw)
In-Reply-To: <4693AF6C.99DB933@eudaptics.com>
Johannes Sixt <J.Sixt@eudaptics.com> wrote:
> It seems that MSYS's wish does some quoting for Bourne shells, in
> particular, escape the first '{' of the "^{tree}" suffix, but then it uses
> cmd.exe to run "git rev-parse". However, cmd.exe does not remove the
> backslash, so that the resulting rev expression ends up in git's guts
> as unrecognizable garbage: rev-parse fails, and git-gui hickups in a way
> that it must be restarted.
>
> Fortunately, recent versions of git can refer to the root tree object using
> the notation "$commit:", which avoids the problematic case.
>
> Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
> ---
> This is a resend with a slightly improved commit message.
> The first version didn't get through for some reason anyway, it seems.
I did get your patch yesterday. I just didn't finish my replacement
version. Got busy with other things.
I have seen this { issue before. And not just on MSYS. It also
borked on Cygwin. This is why git-gui formats the geometry and
font data the way it does in the .git/config file; by default it
wanted to use {} around strings with spaces in them and this got
all messed up going through the shell. So we s/[{}]/"/g before we
call git-config. Yea, it sucks.
Rather than relying on rev-parse to understand the : syntax here
I'm just going to parse the commit object and yank the first line
out of it. We already do that for an amend to refetch the message
buffer. Either way it is a fork. And its roughly the same amount
of CPU time for both git-gui and C git. :-|
> diff --git a/lib/commit.tcl b/lib/commit.tcl
> index dc7c88c..43a5aca 100644
> --- a/lib/commit.tcl
> +++ b/lib/commit.tcl
> @@ -258,7 +258,7 @@ proc commit_committree {fd_wt curHEAD msg} {
> # -- Verify this wasn't an empty change.
> #
> if {$commit_type eq {normal}} {
> - set old_tree [git rev-parse "$PARENT^{tree}"]
> + set old_tree [git rev-parse "$PARENT:"]
> if {$tree_id eq $old_tree} {
> info_popup {No changes to commit.
--
Shawn.
next prev parent reply other threads:[~2007-07-11 8:03 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-10 16:10 [PATCH] Work around a bad interaction between Tcl and cmd.exe with "^{tree}" Johannes Sixt
2007-07-11 8:03 ` Shawn O. Pearce [this message]
2007-07-12 6:47 ` Shawn O. Pearce
-- strict thread matches above, loose matches on Subject: below --
2007-07-10 13:09 Johannes Sixt
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=20070711080333.GP4436@spearce.org \
--to=spearce@spearce.org \
--cc=J.Sixt@eudaptics.com \
--cc=git@vger.kernel.org \
/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).