struct write_create_symref_arg {
struct reftable_ref_store *refs;
struct reftable_stack *stack;
+ struct strbuf *err;
const char *refname;
const char *target;
const char *logmsg;
reftable_writer_set_limits(writer, ts, ts);
+ ret = refs_verify_refname_available(&create->refs->base, create->refname,
+ NULL, NULL, create->err);
+ if (ret < 0)
+ return ret;
+
ret = reftable_writer_add_ref(writer, &ref);
if (ret)
return ret;
struct reftable_ref_store *refs =
reftable_be_downcast(ref_store, REF_STORE_WRITE, "create_symref");
struct reftable_stack *stack = stack_for(refs, refname, &refname);
+ struct strbuf err = STRBUF_INIT;
struct write_create_symref_arg arg = {
.refs = refs,
.stack = stack,
.refname = refname,
.target = target,
.logmsg = logmsg,
+ .err = &err,
};
int ret;
done:
assert(ret != REFTABLE_API_ERROR);
- if (ret)
- error("unable to write symref for %s: %s", refname,
- reftable_error_str(ret));
+ if (ret) {
+ if (err.len)
+ error("%s", err.buf);
+ else
+ error("unable to write symref for %s: %s", refname,
+ reftable_error_str(ret));
+ }
+
+ strbuf_release(&err);
return ret;
}