From: Piotrek Date: Sat, 17 Dec 2022 07:50:02 GMT Subject: Re: Issue with git > 2.36.1 and pre-commit hook on macOS M1 Message-ID: In-Reply-To: <7054faf0-0f5b-e4a8-3166-bf715ed45a32@web.de> On 14.12.2022 23:23, René Scharfe wrote: > I don't know "docker compose" well enough to say whether it's a bug, > but it seems it turns on some kind of terminal mode that needs both > stdin and stdout to be connected to a TTY after only checking that one > of them actually is. Why not check both? > > Curious that only macOS should be affected. Is stdin of a hook script a > TTY on that platform? Or can "docker compose" handle stdin not being a > TTY and stdout being one there? > > René Well, seems like I somehow tested this wrong. Tried it again from scratch and on linux I also get this error. So this looks like not a bug. Docker compose CLI options page is a little confusing because of these: >--interactive , -i true Keep STDIN open even if not attached. >--no-TTY , -T true Disable pseudo-TTY allocation (default: auto-detected). >--tty , -t true Allocate a pseudo-TTY. Second column with `true` values is titled `Default`, whatever it means. So `--tty` and `--no-TTY` is set by default? Anyway, seems like it is checking if at least one of stdout, stding, stderr is a tty and then tries to allocate a tty to all. You can check docs here https://docs.docker.com/engine/reference/commandline/compose_run/#options As a final solution I used makefile "magic" with `ifeq` and shell command like this: $(shell test -t 0) ifeq ($(.SHELLSTATUS), 1) ALLOCATE_TTY = --no-TTY endif docker compose run $(ALLOCATE_TTY) --rm --entrypoint "" app /code/test.sh Maybe I'll just write to to them to clarify documentation on how those TTY options actually works by default. Thanks for help with this. Piotr