diff options
author | Ronnie Sahlberg <sahlberg@google.com> | 2014-11-07 11:39:05 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-11-07 15:46:24 -0800 |
commit | 1831cf12154a830496e0de70eaaaeb260f465b82 (patch) | |
tree | 23f73d29ca7b7e7b0634d3845f5a6948a1bc8647 | |
parent | 0635b55834b9034d917cb7d70d94b1b7da1453ec (diff) | |
download | git-rs/ref-transaction-rename.tar.gz |
refs.c: add an err argument to pack_refsrs/ref-transaction-rename
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | builtin/pack-refs.c | 8 | ||||
-rw-r--r-- | refs.c | 7 | ||||
-rw-r--r-- | refs.h | 3 |
3 files changed, 12 insertions, 6 deletions
diff --git a/builtin/pack-refs.c b/builtin/pack-refs.c index b20b1ec4c1..299768e52b 100644 --- a/builtin/pack-refs.c +++ b/builtin/pack-refs.c @@ -10,6 +10,7 @@ static char const * const pack_refs_usage[] = { int cmd_pack_refs(int argc, const char **argv, const char *prefix) { unsigned int flags = PACK_REFS_PRUNE; + struct strbuf err = STRBUF_INIT; struct option opts[] = { OPT_BIT(0, "all", &flags, N_("pack everything"), PACK_REFS_ALL), OPT_BIT(0, "prune", &flags, N_("prune loose refs (default)"), PACK_REFS_PRUNE), @@ -17,5 +18,10 @@ int cmd_pack_refs(int argc, const char **argv, const char *prefix) }; if (parse_options(argc, argv, prefix, opts, pack_refs_usage, 0)) usage_with_options(pack_refs_usage, opts); - return pack_refs(flags); + if (pack_refs(flags, &err)) { + error("%s", err.buf); + strbuf_release(&err); + return -1; + } + return 0; } @@ -2593,16 +2593,15 @@ static void prune_refs(struct ref_to_prune *r) } } -int pack_refs(unsigned int flags) +int pack_refs(unsigned int flags, struct strbuf *err) { struct pack_refs_cb_data cbdata; - struct strbuf err = STRBUF_INIT; memset(&cbdata, 0, sizeof(cbdata)); cbdata.flags = flags; - if (lock_packed_refs(&err)) - die("%s", err.buf); + if (lock_packed_refs(err)) + return -1; cbdata.packed_refs = get_packed_refs(&ref_cache); @@ -130,8 +130,9 @@ extern void warn_dangling_symrefs(FILE *fp, const char *msg_fmt, const struct st /* * Write a packed-refs file for the current repository. * flags: Combination of the above PACK_REFS_* flags. + * Returns 0 on success and fills in err on failure. */ -int pack_refs(unsigned int flags); +int pack_refs(unsigned int flags, struct strbuf *err); extern int ref_exists(const char *); |