From: Jonathan Nieder <jrnieder@gmail.com>
To: Ben Walton <bwalton@artsci.utoronto.ca>
Cc: gitster@pobox.com, peff@peff.net, git@vger.kernel.org
Subject: Re: [PATCH 0/2] Make run-command.c honour SHELL_PATH
Date: Sun, 25 Mar 2012 20:11:48 -0500 [thread overview]
Message-ID: <20120326011148.GA4428@burratino> (raw)
In-Reply-To: <1332678696-4001-1-git-send-email-bwalton@artsci.utoronto.ca>
Hi Ben,
Good catch. A few comments:
Ben Walton wrote:
> In this case, the failing test was t7006-pager:command-specific
> pager. That test (and some subsequent ones) were setting the pager
> command used by git log to "sed s/^/foo:/ >actual" which is fine in a
> POSIX-compliant sh, but not in Solaris' sh. If the user PATH at
> runtime happened to allow the broken system sh used instead of a sane
> sh, the ^ is interpreted the same as[1] | and this caused sed to fail
> with incomplete s/ command and a "command not found: /foo:" from the
> other forked process.
When I first read the corresponding patch without reading this cover
letter I was mystified. Until I saw the above paragraph, I did not
even see what problem was being solved. The above paragraph should
probably be part of the commit message.
Ok, on to the proposed solution. ;-)
My first reaction was to suspect the series is solving the problem in
the wrong place. The core of the bug might be t7006 itself, which
assumes that the shell used to interpret the GIT_PAGER setting is a
POSIX-style shell rather than an ancient Bourne shell or cmd.exe.
In the far long term, we should probably skip this test on some
platforms using an appropriate test prerequisite.
To put it another way, the RUN_USING_SHELL magic is just supposed to
be a more featureful way to do what system() normally does. What
shell does system() use on Solaris?
A second reaction was to wonder why the usual fixup from
v1.6.4-rc0~66^2~1 (Makefile: insert SANE_TOOL_PATH to PATH before /bin
or /usr/bin, 2009-07-08) didn't apply. Should the git wrapper prepend
the same magic to $PATH that git-sh-setup.sh does to make the behavior
of scripted and unscripted commands a little more consistent?
A third reaction was that git_pager in the sh-setup library uses the
eval builtin, so we are already assuming that GIT_PAGER is appropriate
input for a POSIX-style shell. So maybe the approach you've adopted
is appropriate after all, at least in the short term while we require
a POSIX-style shell elsewhere in git.
A few added words in the commit message could save the next reader
from going through so long a thought process before seeing why what
the patch does is the right thing to do.
A more minor comment: patch 1/2 was even more mysterious. Combining
the two patches would be enough to avoid confusion there. I haven't
checked the makefile changes and interaction with GIT-CFLAGS carefully
yet and hope to do so in the next round.
Thanks for working on this.
Sincerely,
Jonathan
next prev parent reply other threads:[~2012-03-26 1:12 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-25 12:31 [PATCH 0/2] Make run-command.c honour SHELL_PATH Ben Walton
2012-03-25 12:31 ` [PATCH 1/2] run-command.c: Define SHELL_PATH macro for use in prepare_shell_cmd Ben Walton
2012-03-25 12:31 ` [PATCH 2/2] Makefile: Set EXTRA_CPPFLAGS during the compilation of run-command Ben Walton
2012-03-26 1:11 ` Jonathan Nieder [this message]
2012-03-26 13:38 ` [PATCH 0/2] Make run-command.c honour SHELL_PATH Ben Walton
2012-03-26 18:12 ` Jeff King
2012-03-26 18:19 ` Ben Walton
2012-03-26 18:24 ` Jeff King
2012-03-27 2:41 ` [PATCH] Use SHELL_PATH to fork commands in run_command.c:prepare_shell_cmd Ben Walton
2012-03-27 3:29 ` Jeff King
2012-03-27 3:34 ` Jeff King
2012-03-27 5:01 ` Jonathan Nieder
2012-03-27 5:12 ` Jeff King
2012-03-27 5:53 ` Jonathan Nieder
2012-03-27 6:23 ` Johannes Sixt
2012-03-28 2:46 ` Ben Walton
2012-03-28 4:22 ` Jeff King
2012-03-28 23:26 ` [PATCH] Use SHELL_PATH from build system " Ben Walton
2012-03-29 4:02 ` Junio C Hamano
2012-03-29 6:09 ` Jonathan Nieder
[not found] ` <1333073831-sup-5734@pinkfloyd.chass.utoronto.ca>
2012-03-30 6:32 ` Jonathan Nieder
2012-03-29 23:00 ` Jonathan Nieder
2012-03-28 23:28 ` [PATCH] Use SHELL_PATH to fork commands " Ben Walton
2012-03-27 4:26 ` Jonathan Nieder
2012-03-27 4:49 ` Jonathan Nieder
2012-03-27 2:45 ` [PATCH 0/2] Make run-command.c honour SHELL_PATH Ben Walton
2012-03-26 18:17 ` Jonathan Nieder
2012-03-26 18:08 ` Jeff King
2012-03-26 17:58 ` Jeff King
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=20120326011148.GA4428@burratino \
--to=jrnieder@gmail.com \
--cc=bwalton@artsci.utoronto.ca \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
/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).