From: "brian m. carlson" <sandals@crustytoothpaste.net>
To: Anthony Sottile <asottile@umich.edu>
Cc: Git Mailing List <git@vger.kernel.org>
Subject: Re: git does not wait on hook exes (^C)
Date: Fri, 21 Feb 2020 00:01:41 +0000 [thread overview]
Message-ID: <20200221000141.GA6462@camp.crustytoothpaste.net> (raw)
In-Reply-To: <CA+dzEB=jJEkuvcX5qDfeXS=mbJu_m=-yUsmHd_KrKAXC3YDe7w@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 1367 bytes --]
On 2020-02-20 at 21:14:55, Anthony Sottile wrote:
> Here's a small example:
>
> ```bash
> #!/usr/bin/env bash
> foo() {
> echo zzz part 2
> sleep 1
> echo exiting now
> }
> trap foo SIGINT
>
> echo zzz part 1
> sleep 10
> ```
>
> ```console
> $ git --version
> git version 2.25.GIT
> $ git commit --allow-empty -m foo
> zzz part 1
> ^Czzz part 2
>
> $ exiting now
> ```
>
> - I pressed ^C during the first sleep
> - control was returned back to my terminal
> - the hook script was still running in the background
I believe the way that SIGINT works on a terminal is that it sends the
signal to all processes in the foreground process group. So my guess of
what's happening here is that Git and your script both get SIGINT, Git
cleans up and exits quickly, leaving your script running.
If so, I'm not sure that Git can do much here. If Git waited for the
hook to exit, then a broken or hung hook would cause Git to hang
indefinitely, which is not what the user intended when they pressed
Ctrl-C. Usually what the user wants is an immediate return to the
terminal in such a case, and I think most users would consider it a bug
if Git were to wait for its children.
Certainly I'm open to hearing other views on this, though.
--
brian m. carlson: Houston, Texas, US
OpenPGP: https://keybase.io/bk2204
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 868 bytes --]
next prev parent reply other threads:[~2020-02-21 0:01 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-20 21:14 git does not wait on hook exes (^C) Anthony Sottile
2020-02-21 0:01 ` brian m. carlson [this message]
2020-02-21 0:12 ` Anthony Sottile
2020-02-21 1:11 ` brian m. carlson
2020-02-21 1:20 ` Anthony Sottile
2020-02-21 2:25 ` brian m. carlson
2020-02-21 5:32 ` Jeff King
2020-02-21 6:08 ` Anthony Sottile
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=20200221000141.GA6462@camp.crustytoothpaste.net \
--to=sandals@crustytoothpaste.net \
--cc=asottile@umich.edu \
--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).