From: Junio C Hamano Date: Thu, 25 Aug 2016 21:17:34 GMT Subject: Re: [PATCH 03/15] sequencer: lib'ify do_pick_commit() Message-ID: In-Reply-To: <92fdb70f3db157f8a3d2442d872e989d81c6756e.1471968378.git.johannes.schindelin@gmx.de> Johannes Schindelin writes: > To be truly useful, the sequencer should never die() but always return > an error. > > Signed-off-by: Johannes Schindelin > --- Instead of dying there, you let the caller high up in the callchain to notice the error and handle it (by dying). The eventual caller of do_pick_commit() is sequencer_pick_revisions(), which already relays an reported error from its helper functions (including this one), and both of its two callers know how to react to a negative return correctly. So this makes do_pick_commit() callable from new callers that want it not to die, without changing the external behaviour of anything existing. Good. > sequencer.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/sequencer.c b/sequencer.c > index 0c8c955..6ac2187 100644 > --- a/sequencer.c > +++ b/sequencer.c > @@ -464,7 +464,7 @@ static int do_pick_commit(struct commit *commit, struct replay_opts *opts) > * to work on. > */ > if (write_cache_as_tree(head, 0, NULL)) > - die (_("Your index file is unmerged.")); > + return error (_("Your index file is unmerged.")); While you are touching the line, it is a good idea to correct an obvious style error like this one. "Do one thing and one thing well in a commit" is a good discipline, but it is absurd to take it to the extreme. > } else { > unborn = get_sha1("HEAD", head); > if (unborn)