[prev in list] [next in list] [prev in thread] [next in thread]
List: git
Subject: Re: [PATCH 15/15] refs.c: add an err argument to pack_refs
From: Junio C Hamano <gitster () pobox ! com>
Date: 2014-10-30 19:57:39
Message-ID: xmqqr3xpuy8c.fsf () gitster ! dls ! corp ! google ! com
[Download RAW message or body]
Ronnie Sahlberg <sahlberg@google.com> writes:
> diff --git a/builtin/pack-refs.c b/builtin/pack-refs.c
> index b20b1ec..299768e 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;
> }
> diff --git a/refs.c b/refs.c
> index 7fb0d6c..a5e1eff 100644
> --- a/refs.c
> +++ b/refs.c
> @@ -2588,16 +2588,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);
>
> diff --git a/refs.h b/refs.h
> index f3e08f5..be16c08 100644
> --- a/refs.h
> +++ b/refs.h
> @@ -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 *);
Makes sense.
Thanks.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic