Jonathan Nieder <jrnieder@xxxxxxxxx> wrote: > The fundamental thing is the actual Git commands, not the tests in the > testsuite, no? Right. I've never been picky about exit codes; only that a non-zero happens on errors. > In the rest of git, die() makes a command exit with status 128. The > trouble here is that our code in Perl is assuming the same meaning for > die() but using perl's die builtin instead. That suggests a few > options: > > a) We could override the meaning of die() in Git.pm. This feels > ugly but if it works, it would be a very small patch. Unlikely to work since I think we use eval {} to trap exceptions from die. > b) We could forbid use of die() and use some git_die() instead (but > with a better name) for our own error handling. Call sites may be dual-use: "die" can either be caught by an eval or used to show an error message to the user. > c) We could have a special different exit code convention for > commands written in Perl. And then change expectations whenever a > command is rewritten in C. As you might expect, I don't like this > option. I don't like it, either. > d) We could wrap each command in an eval {...} block to convert the > result from die() to exit 128. I prefer option d)