fetch: refactor fetch refs to be more extendable
Refactor `fetch_refs()` code to make it more extendable by explicitly handling error cases. The refactored code should behave the same. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
62b5a35a33
commit
284b2ce8fc
@ -1293,18 +1293,28 @@ static int check_exist_and_connected(struct ref *ref_map)
|
|||||||
|
|
||||||
static int fetch_refs(struct transport *transport, struct ref *ref_map)
|
static int fetch_refs(struct transport *transport, struct ref *ref_map)
|
||||||
{
|
{
|
||||||
int ret = check_exist_and_connected(ref_map);
|
int ret;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We don't need to perform a fetch in case we can already satisfy all
|
||||||
|
* refs.
|
||||||
|
*/
|
||||||
|
ret = check_exist_and_connected(ref_map);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
trace2_region_enter("fetch", "fetch_refs", the_repository);
|
trace2_region_enter("fetch", "fetch_refs", the_repository);
|
||||||
ret = transport_fetch_refs(transport, ref_map);
|
ret = transport_fetch_refs(transport, ref_map);
|
||||||
trace2_region_leave("fetch", "fetch_refs", the_repository);
|
trace2_region_leave("fetch", "fetch_refs", the_repository);
|
||||||
|
if (ret)
|
||||||
|
goto out;
|
||||||
}
|
}
|
||||||
if (!ret)
|
|
||||||
/*
|
/*
|
||||||
* Keep the new pack's ".keep" file around to allow the caller
|
* Keep the new pack's ".keep" file around to allow the caller
|
||||||
* time to update refs to reference the new objects.
|
* time to update refs to reference the new objects.
|
||||||
*/
|
*/
|
||||||
return 0;
|
return ret;
|
||||||
|
|
||||||
|
out:
|
||||||
transport_unlock_pack(transport);
|
transport_unlock_pack(transport);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user