Brandon Williams wrote:

> --- a/builtin/fetch.c
> +++ b/builtin/fetch.c
> @@ -967,10 +967,16 @@ static int fetch_refs(struct transport *transport, 
> struct ref *ref_map)
>       int ret = quickfetch(ref_map);
>       if (ret)
>               ret = transport_fetch_refs(transport, ref_map);
> -     if (!ret)
> -             ret |= store_updated_refs(transport->url,
> -                             transport->remote->name,
> -                             ref_map);
> +     if (ret)
> +             transport_unlock_pack(transport);
> +     return ret;
> +}
> +
> +static int consume_refs(struct transport *transport, struct ref *ref_map)
> +{
> +     int ret = store_updated_refs(transport->url,
> +                                  transport->remote->name,
> +                                  ref_map);
>       transport_unlock_pack(transport);
>       return ret;
>  }
[...]
> -     fetch_refs(transport, ref_map);
> +     if (!fetch_refs(transport, ref_map))
> +             consume_refs(transport, ref_map);
>  

Ah, I missed something in my previous reply.

If transport_fetch_refs succeeds and store_updated_refs fails, then in
the old code, transport_unlock_pack would clean up by removing the no
longer needed .keep file.  In the new code, that's consume_refs's
responsibility, which I find much nicer.  It's probably worth
mentioning that in the commit message as well.

Thanks again,
Jonathan

Reply via email to