Ronnie Sahlberg <sahlb...@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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to