From: Vincent Lefevre <vincent@vinc17.net>
To: Chris Torek <chris.torek@gmail.com>
Cc: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
"Git List" <git@vger.kernel.org>
Subject: Re: git fails with a broken pipe when one quits the pager
Date: Mon, 1 Feb 2021 16:17:03 +0100 [thread overview]
Message-ID: <20210201151703.GC24560@zira.vinc17.org> (raw)
In-Reply-To: <CAPx1Gverh2E2h5JOSOfJ7JYvbhjv8hJNLE8y4VA2fNv0La8Rtw@mail.gmail.com>
On 2021-02-01 04:53:03 -0800, Chris Torek wrote:
> On Mon, Feb 1, 2021 at 4:36 AM Vincent Lefevre <vincent@vinc17.net> wrote:
> > In general, repositories have more than 64k log.
>
> Please don't focus on the exact size. Some system might
> have a multi-gigabyte pipe buffer, and some other system
> might have a tiny one; we'd like consistent behavior no matter
> what size the system uses. Can we *get* consistent behavior?
> I don't know.
The consistent behavior can be obtained by ignoring the broken pipe
(in the case where git starts the pager).
> [me]
> > > The problem that has come up is, if I understand correctly, that
> > > some Linux distributions have come with misconfigured pagers
> > > that don't bother reading their input, and silently exit zero.
> >
> > They are not misconfigured. This is how they work.
>
> A pager that reads nothing and writes nothing does not seem
> very useful to me. [...]
I agree.
> [on various exit cases]
> > > There's no good way for Git to be able to tell which of these was
> > > the case.
> >
> > In the case git spawns a pager, it knows that this is a pager
> > (as per documentation).
>
> Again, this seems irrelevant. If the pager exited correctly
> while reading everything, or it exited correctly without reading
> everything, or if it exited incorrectly with or without reading
> everything, is not something *Git* can tell.
No, Git can tell when the pager exited abnormally: it suffices to
check its exit status. Git currently doesn't do that, and this is
bad, because it can miss real issues, which cannot always be detected
by the user.
If the pager exits with exit code 0, this means normal termination,
whether the user has read the full output or not.
> I'm therefore not sure that Git should *try* to tell -- which is the
> point I'm trying to make here. The question is this: if we can only
> do a poor job, should we try at all? What *should* we do, given what
> we *can* do? All we get is SIGPIPE and an exit status, and the
> SIGPIPE may or may not be meaningful.
>
> That seems to be what you're arguing as well. So I'm not sure
> why you're objecting to what I'm pointing out. :-)
Well, my objection is based on the fact that it is possible to get
the information from the exit status of the pager (I originally
thought that Git was taking it into account).
BTW, another related thing I dislike about Git, and I think that this
should also be regarded as a bug, is that when doing a commit, Git
doesn't check the exit status of the editor for the commit message.
Say, for instance, if something on the system kills the editor, Git
applies the commit with an incorrect or incomplete log message though
the commit wasn't validated yet by the user. Fortunately, the user
can amend the commit, but IMHO, that's an incorrect behavior.
--
Vincent Lefèvre <vincent@vinc17.net> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)
next prev parent reply other threads:[~2021-02-01 15:18 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-15 16:15 git fails with a broken pipe when one quits the pager Vincent Lefevre
2021-01-29 23:48 ` [PATCH] pager: exit without error on SIGPIPE Denton Liu
2021-01-30 8:29 ` Johannes Sixt
2021-01-30 12:52 ` Johannes Sixt
2021-02-01 15:03 ` Ævar Arnfjörð Bjarmason
2021-02-01 17:47 ` Junio C Hamano
2021-02-01 19:52 ` Ævar Arnfjörð Bjarmason
2021-02-01 20:55 ` Junio C Hamano
2021-02-02 2:05 ` Ævar Arnfjörð Bjarmason
2021-02-02 4:45 ` Junio C Hamano
2021-02-02 5:25 ` Junio C Hamano
2021-02-02 7:45 ` Johannes Sixt
2021-02-02 20:13 ` Junio C Hamano
2021-02-02 22:15 ` Johannes Sixt
2021-02-02 22:21 ` Junio C Hamano
2021-02-03 17:07 ` Johannes Sixt
2021-02-03 18:12 ` Junio C Hamano
2021-02-04 15:10 ` Vincent Lefevre
2021-02-03 2:45 ` Ævar Arnfjörð Bjarmason
2021-02-03 2:54 ` Junio C Hamano
2021-02-03 3:36 ` Ævar Arnfjörð Bjarmason
2021-02-03 17:19 ` Johannes Sixt
2021-01-31 1:47 ` git fails with a broken pipe when one quits the pager Ævar Arnfjörð Bjarmason
2021-01-31 3:36 ` Vincent Lefevre
2021-01-31 3:47 ` Vincent Lefevre
2021-01-31 20:49 ` Ævar Arnfjörð Bjarmason
2021-02-01 10:34 ` Vincent Lefevre
2021-02-01 11:33 ` Chris Torek
2021-02-01 12:36 ` Vincent Lefevre
2021-02-01 12:53 ` Chris Torek
2021-02-01 15:17 ` Vincent Lefevre [this message]
2021-02-01 15:00 ` Ævar Arnfjörð Bjarmason
2021-02-01 12:10 ` Ævar Arnfjörð Bjarmason
2021-02-01 14:48 ` Vincent Lefevre
2021-02-01 15:44 ` Ævar Arnfjörð Bjarmason
2021-02-01 22:16 ` Johannes Sixt
2021-02-03 2:48 ` Ævar Arnfjörð Bjarmason
2021-02-03 17:11 ` Johannes Sixt
2021-02-03 15:26 ` Vincent Lefevre
2021-02-04 0:14 ` Ævar Arnfjörð Bjarmason
2021-02-04 15:38 ` Vincent Lefevre
2021-02-01 14:49 ` [PATCH 0/3] pager: test for exit behavior & trace2 bug fix Ævar Arnfjörð Bjarmason
2021-02-02 1:59 ` [PATCH v2 0/5] " Ævar Arnfjörð Bjarmason
2021-02-02 1:59 ` [PATCH v2 1/5] pager: refactor wait_for_pager() function Ævar Arnfjörð Bjarmason
2021-02-02 1:59 ` [PATCH v2 2/5] pager: test for exit code with and without SIGPIPE Ævar Arnfjörð Bjarmason
2021-02-02 8:50 ` Denton Liu
2021-02-05 7:47 ` Johannes Sixt
2021-02-02 1:59 ` [PATCH v2 3/5] run-command: add braces for "if" block in wait_or_whine() Ævar Arnfjörð Bjarmason
2021-02-02 2:00 ` [PATCH v2 4/5] pager: properly log pager exit code when signalled Ævar Arnfjörð Bjarmason
2021-02-05 7:58 ` Johannes Sixt
2021-02-05 11:37 ` Junio C Hamano
2021-02-02 2:00 ` [WIP/PATCH v2 5/5] WIP pager: respect exit code of pager over SIGPIPE Ævar Arnfjörð Bjarmason
2021-02-01 14:49 ` [PATCH 1/3] pager: test for exit code Ævar Arnfjörð Bjarmason
2021-02-01 14:49 ` [PATCH 2/3] pager: refactor wait_for_pager() function Ævar Arnfjörð Bjarmason
2021-02-01 14:49 ` [PATCH 3/3] pager: properly log pager exit code when signalled Ævar Arnfjörð Bjarmason
2021-02-01 18:07 ` Junio C Hamano
2021-02-01 19:21 ` Ævar Arnfjörð Bjarmason
2021-02-01 18:15 ` Junio C Hamano
2021-02-01 19:23 ` Ævar Arnfjörð Bjarmason
2021-02-01 22:04 ` git fails with a broken pipe when one quits the pager 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=20210201151703.GC24560@zira.vinc17.org \
--to=vincent@vinc17.net \
--cc=avarab@gmail.com \
--cc=chris.torek@gmail.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).