public inbox for git@vger.kernel.org
 help / color / mirror / Atom feed
From: Ian Wienand <iwienand@redhat.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH v3 3/3] run-command: show prepared command
Date: Fri, 24 May 2024 10:43:19 +1000	[thread overview]
Message-ID: <Zk_ip35jHUj_5M94@fedora19.localdomain> (raw)
In-Reply-To: <xmqqpltcwnqm.fsf@gitster.g>

On Thu, May 23, 2024 at 08:29:21AM -0700, Junio C Hamano wrote:
> > For example, this can be very helpful when an alias is giving you an
> > unexpected syntax error that is very difficult figure out from only
> > the run_command trace point, e.g.
> >
> > test = "!for i in 1 2 3; do echo $i; done"
> >
> > will fail if there is an argument given, we can see why from the
> > output.
> 
> ... if the reader truly understands "the alias gives the command and
> its leading arguments, to which the invocation can supply even more
> arguments", the reader wouldn't be writing such a command line to
> begin with, no?
> 
> So I find the example a bit suboptimal.  Hopefully additional
> explanation in patch 2/3 stressed on that point well enough with
> much more stress than it talks about the implementation detail of
> using "sh -c" and "$@", so that readers who read it would not even
> dream of writing such an alias in the first place.

Right; I was seeing this in a more convoluted way via our tool but
essentially the same issue.  I was just looking for the simplest thing
that also gave the syntax error output, which I thought was something
people might search for (the "unexpected "$@" stuff).

Should I just leave as is?

> > +test_expect_success 'tracing a shell alias with arguments shows full prepared command' '
> > +	git config alias.echo "!echo \$*" &&
> > +	env GIT_TRACE=1 git echo argument 2>output &&
> > +	cp output /tmp/output &&
> > +	test_grep "^trace: prepare_cmd: /bin/sh -c '\''echo \$\* \"\$@\"" output
> > +'
> 
> This is probably too specific search string, I suspect, given that
> runcommand.c:prepare_shell_cmd() uses SHELL_PATH or "sh" so if your
> SHELL_PATH is anything but /bin/sh (or if you are unlucky enough to
> be running this test on Windows), the pattern would not match.
> You'd want to loosen it a bit, perhaps with "/bin/sh" -> ".*", as
> the rest of the output are expected to stay constant.

OK, should this perhaps just look for '^trace: prepare_cmd.*'?

My initial thinking was to enforce seeing the "$@" appended, but
perhaps that is implementation details that don't really need to be
covered; the interesting thing is we show the person tracing the full
command as constructed, so this is useful just to ensure the
tracepoint remains in place?

-i


  parent reply	other threads:[~2024-05-24  0:43 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-22  2:41 [PATCH] alias: document caveats and add trace of prepared command Ian Wienand
2024-05-22  3:29 ` Eric Sunshine
2024-05-22 16:07 ` Junio C Hamano
2024-05-23  0:38   ` Ian Wienand
2024-05-23  4:20 ` [PATCH v2 1/3] Documentation: alias: rework notes into points Ian Wienand
2024-05-23  4:20   ` [PATCH v2 2/3] Documentation: alias: add notes on shell expansion Ian Wienand
2024-05-23  4:20   ` [PATCH v2 3/3] run-command: show prepared command Ian Wienand
2024-05-23  4:27   ` [PATCH v2 1/3] Documentation: alias: rework notes into points Eric Sunshine
2024-05-23  4:39     ` Ian Wienand
2024-05-23  4:37   ` [PATCH v3 " Ian Wienand
2024-05-23  4:37     ` [PATCH v3 2/3] Documentation: alias: add notes on shell expansion Ian Wienand
2024-05-23  4:37     ` [PATCH v3 3/3] run-command: show prepared command Ian Wienand
2024-05-23 15:29       ` Junio C Hamano
2024-05-23 23:40         ` Junio C Hamano
2024-05-24  6:09           ` Junio C Hamano
2024-05-24  7:18             ` Ian Wienand
2024-05-24 15:33               ` Junio C Hamano
2024-05-24  0:43         ` Ian Wienand [this message]
2024-05-24 17:50           ` Junio C Hamano
2024-05-25  1:13             ` Ian Wienand
2024-05-23 15:14     ` [PATCH v3 1/3] Documentation: alias: rework notes into points Junio C Hamano
2024-05-24  7:32     ` [PATCH v4 " Ian Wienand
2024-05-24  7:32       ` [PATCH v4 2/3] Documentation: alias: add notes on shell expansion Ian Wienand
2024-05-24  7:32       ` [PATCH v4 3/3] run-command: show prepared command Ian Wienand
2024-05-24 19:16         ` Junio C Hamano
2024-05-24 19:58           ` Junio C Hamano
2024-05-25  1:14           ` Ian Wienand
2024-05-25  1:20       ` [PATCH v5 1/3] Documentation: alias: rework notes into points Ian Wienand
2024-05-25  1:20         ` [PATCH v5 2/3] Documentation: alias: add notes on shell expansion Ian Wienand
2024-05-25  1:20         ` [PATCH v5 3/3] run-command: show prepared command Ian Wienand
2024-05-25  5:44           ` Junio C Hamano
2024-05-25  6:06           ` Junio C Hamano
2024-05-25 23:49             ` Ian Wienand
2024-05-25 23:44         ` [PATCH v6 1/3] Documentation: alias: rework notes into points Ian Wienand
2024-05-25 23:44           ` [PATCH v6 2/3] Documentation: alias: add notes on shell expansion Ian Wienand
2024-05-26 23:26             ` Junio C Hamano
2024-05-27  0:22               ` Ian Wienand
2024-05-25 23:44           ` [PATCH v6 3/3] run-command: show prepared command Ian Wienand
2024-05-26 16:20             ` Junio C Hamano
2024-05-27  0:30           ` [PATCH v7 1/3] Documentation: alias: rework notes into points Ian Wienand
2024-05-27  0:30             ` [PATCH v7 2/3] Documentation: alias: add notes on shell expansion Ian Wienand
2024-05-27 17:48               ` Junio C Hamano
2024-05-27  0:30             ` [PATCH v7 3/3] run-command: show prepared command Ian Wienand

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=Zk_ip35jHUj_5M94@fedora19.localdomain \
    --to=iwienand@redhat.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.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