ref_transaction_commit(): provide better error messages

Now that lock_ref_sha1_basic() gives us back its error messages via a strbuf, incorporate its error message into our error message rather than emitting one error messages to stderr immediately and returning a second to our caller. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>

Michael Haggerty committed May 11, 2015 at 17:25 UTC cbaabcbc6fa9568269d6baeccb0a621cd0413c6c
1 file changed +6 -4
refs.c
+6 -4
@@ -3838,13 +3838,15 @@ int ref_transaction_commit(struct ref_transaction *transaction,
3838 &update->type,
3839 err);
3840 if (!update->lock) {
3841 + char *reason;
3842 +
3843 ret = (errno == ENOTDIR)
3844 ? TRANSACTION_NAME_CONFLICT
3845 : TRANSACTION_GENERIC_ERROR;
3844 - error("%s", err->buf);
3845 - strbuf_reset(err);
3846 - strbuf_addf(err, "Cannot lock the ref '%s'.",
3847 - update->refname);
3846 + reason = strbuf_detach(err, NULL);
3847 + strbuf_addf(err, "Cannot lock the ref '%s': %s",
3848 + update->refname, reason);
3849 + free(reason);
3850 goto cleanup;
3851 }
3852 }