Ævar Arnfjörð Bjarmason [off-list ref] writes:
So it's really the opposite of what you're saying. If you have cleanups
that are truly important, i.e. so important that you'd like to notify
the user with a non-zero exit code if they fail, you *don't* want them
in an atexit handler. That won't work.
Ah, OK. What I had in mind was things like removing the directory
"clone" attempted to create and populate, removing temporary files,
etc. when a function that is not marked as NORETURN calls die(), by
the atexit handler. But you're right. We leave a final clean-up
for normal returns (i.e. when cmd_foo() intends to return or exit
with 0) to be done to the caller that is git.::run_builtin().
Thanks.