Re: Commit f5bbc322 to git broke pre-commit hooks which read stdin
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:44:20
Johannes Sixt [off-list ref] writes:
quoted
It is not metastore. It is an interactive hook that reads from the user who is sitting on the terminal and invoked the git-commit program.Are you saying stdin should not be directed to /dev/null, or that an interactive hook is required to do exec < /dev/tty || { echo 2>&1 "not interactive"; exit 1; } before it reads from stdin?
I am saying that scripted version left the stdin as-is but somehow we ended up spawning with .no_stdin = 1 in the C-rewrite, which is a change in established behaviour. It is often called a regression, unless the change has a very good reason. And I tend to think this particular one falls into the former. We should audit how the hooks are called from various commands re-implemented, comparing the environment the scripted version used to give them, which includes: - what directory the hook is run in; - what environment variables are exported to it; - what temporary files are visible to them for inspection; - in what order they are run; - which file descriptor is connected to what; I think we already caught some of the environment and ordering issues in commit and checkout, but I am far from confident to say that what we have behave identically to the scripted version.