[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