From: Jeff King <peff@peff.net>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: Johannes Sixt <j.sixt@viscovery.net>, git@vger.kernel.org
Subject: [RFC/PATCH 0/3] fix "Funny: git -p submodule summary"
Date: Tue, 27 Jan 2009 01:25:12 -0500 [thread overview]
Message-ID: <20090127062512.GA10487@coredump.intra.peff.net> (raw)
In-Reply-To: <alpine.DEB.1.00.0901081601240.30769@pacific.mpi-cbg.de>
On Thu, Jan 08, 2009 at 04:07:08PM +0100, Johannes Schindelin wrote:
> Just try this with a submodule that has more changes than fit on a screen:
>
> $ git -p submodule summary
>
> In my tests, it consistently fscks up my console. I wonder if this is
> related to ea27a18(spawn pager via run_command interface).
OK, here is a patch series that fixes the problem:
1/3: git: s/run_command/run_builtin/
2/3: run_command: handle missing command errors more gracefully
3/3: git: use run_command to execute dashed externals
1 is a cleanup, 2 is infrastructure support, and 3 is the actual fix.
There are two potential downsides to the fix:
1. There is an extra fork and a parent process sitting in memory for
dashed externals. This is pretty necessary to any fix, since
something has to wait to do pager cleanup, and we can't rely on the
child to do so.
2. A failed attempt to execute a dashed external results in an extra
fork. For builtins, this has no impact, since they take precedence.
For aliases, though, it means we will do an extra fork before
realizing that there is no dashed external and trying the alias.
We can fix '2' by actually doing the PATH lookup ourselves, and only
calling run_command if we know we have a match. We can also reduce the
impact of both by only doing this multi-process magic if we have spawned
a pager; then only a small subset of invocations needs to pay for it.
I chose not to do the second optimization because it makes the code more
complex and inconsistent (we now have two different ways of doing the
same thing, depending on a seemingly unrelated setting) and fragile
(the pager might not be the only atexit handler installed).
The first (doing PATH lookup ourselves) might make sense, though.
JSixt, there are some tweaks to the Windows code to report back the exec
error. They look obviously correct to me, but I have no box to test
(even compile test) them on.
-Peff
next prev parent reply other threads:[~2009-01-27 6:26 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-08 15:07 Funny: git -p submodule summary Johannes Schindelin
2009-01-08 15:30 ` Johannes Schindelin
2009-01-09 8:38 ` Jeff King
2009-01-09 9:22 ` Jeff King
2009-01-09 9:48 ` Jeff King
2009-01-09 10:09 ` Johannes Sixt
2009-01-09 10:13 ` Jeff King
2009-01-09 10:36 ` Johannes Sixt
2009-01-09 10:47 ` Jeff King
2009-01-11 11:22 ` Jeff King
2009-01-11 11:25 ` [PATCH 1/4] Makefile: clean up TEST_PROGRAMS definition Jeff King
2009-01-11 11:32 ` [PATCH 2/4] chain kill signals for cleanup functions Jeff King
2009-01-11 11:40 ` Jeff King
2009-01-11 11:36 ` [PATCH 3/4] refactor signal handling " Jeff King
2009-01-11 11:36 ` [PATCH 4/4] pager: do wait_for_pager on signal death Jeff King
2009-01-11 21:13 ` Junio C Hamano
2009-01-12 10:59 ` Funny: git -p submodule summary Johannes Sixt
2009-01-12 11:21 ` Jeff King
2009-01-12 12:00 ` Johannes Sixt
2009-01-12 12:03 ` Jeff King
2009-01-12 12:19 ` Johannes Sixt
2009-01-09 9:30 ` Junio C Hamano
2009-01-09 9:33 ` Jeff King
2009-01-09 9:38 ` Junio C Hamano
2009-01-27 6:25 ` Jeff King [this message]
2009-01-27 6:26 ` [RFC/PATCH 1/3] git: s/run_command/run_builtin/ Jeff King
2009-01-27 6:27 ` [RFC/PATCH 2/3] run_command: handle missing command errors more gracefully Jeff King
2009-01-27 6:27 ` [RFC/PATCH 3/3] git: use run_command to execute dashed externals Jeff King
2009-01-27 10:06 ` [RFC/PATCH 0/3] fix "Funny: git -p submodule summary" Johannes Sixt
2009-01-27 12:23 ` Jeff King
2009-01-27 12:46 ` Johannes Sixt
2009-01-28 7:17 ` Jeff King
2009-01-27 16:31 ` Johannes Schindelin
2009-01-28 7:30 ` Jeff King
2009-01-28 7:33 ` [PATCHv2 1/4] git: s/run_command/run_builtin/ Jeff King
2009-01-28 7:35 ` [PATCHv2 2/4] run_command: handle missing command errors more gracefully Jeff King
2009-01-28 7:36 ` [PATCHv2 3/4] run-command: help callers distinguish errors Jeff King
2009-01-28 7:43 ` Jeff King
2009-01-28 7:47 ` Jeff King
2009-01-28 7:38 ` [PATCHv2 4/4] git: use run_command to execute dashed externals Jeff King
2009-01-28 7:54 ` [RFC/PATCH 0/3] fix "Funny: git -p submodule summary" Junio C Hamano
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=20090127062512.GA10487@coredump.intra.peff.net \
--to=peff@peff.net \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=j.sixt@viscovery.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).