Johannes Sixt <j.sixt@xxxxxxxxxxxxx> writes: >> 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. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html