зеркало из https://github.com/microsoft/git.git
ref-filter: get rid of duplicate code
Make one function from 2 duplicate pieces and invoke it twice. Signed-off-by: Olga Telezhnaia <olyatelezhnaya@gmail.com> Mentored-by: Christian Couder <christian.couder@gmail.com> Mentored by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
6bd396be0f
Коммит
2bbc6e8a92
45
ref-filter.c
45
ref-filter.c
|
@ -1354,15 +1354,31 @@ static const char *get_refname(struct used_atom *atom, struct ref_array_item *re
|
|||
return show_ref(&atom->u.refname, ref->refname);
|
||||
}
|
||||
|
||||
static void get_object(struct ref_array_item *ref, const struct object_id *oid,
|
||||
int deref, struct object **obj)
|
||||
{
|
||||
int eaten;
|
||||
unsigned long size;
|
||||
void *buf = get_obj(oid, obj, &size, &eaten);
|
||||
if (!buf)
|
||||
die(_("missing object %s for %s"),
|
||||
oid_to_hex(oid), ref->refname);
|
||||
if (!*obj)
|
||||
die(_("parse_object_buffer failed on %s for %s"),
|
||||
oid_to_hex(oid), ref->refname);
|
||||
|
||||
grab_values(ref->value, deref, *obj, buf, size);
|
||||
if (!eaten)
|
||||
free(buf);
|
||||
}
|
||||
|
||||
/*
|
||||
* Parse the object referred by ref, and grab needed value.
|
||||
*/
|
||||
static void populate_value(struct ref_array_item *ref)
|
||||
{
|
||||
void *buf;
|
||||
struct object *obj;
|
||||
int eaten, i;
|
||||
unsigned long size;
|
||||
int i;
|
||||
const struct object_id *tagged;
|
||||
|
||||
ref->value = xcalloc(used_atom_cnt, sizeof(struct atom_value));
|
||||
|
@ -1483,17 +1499,7 @@ static void populate_value(struct ref_array_item *ref)
|
|||
return;
|
||||
|
||||
need_obj:
|
||||
buf = get_obj(&ref->objectname, &obj, &size, &eaten);
|
||||
if (!buf)
|
||||
die(_("missing object %s for %s"),
|
||||
oid_to_hex(&ref->objectname), ref->refname);
|
||||
if (!obj)
|
||||
die(_("parse_object_buffer failed on %s for %s"),
|
||||
oid_to_hex(&ref->objectname), ref->refname);
|
||||
|
||||
grab_values(ref->value, 0, obj, buf, size);
|
||||
if (!eaten)
|
||||
free(buf);
|
||||
get_object(ref, &ref->objectname, 0, &obj);
|
||||
|
||||
/*
|
||||
* If there is no atom that wants to know about tagged
|
||||
|
@ -1514,16 +1520,7 @@ static void populate_value(struct ref_array_item *ref)
|
|||
* is not consistent with what deref_tag() does
|
||||
* which peels the onion to the core.
|
||||
*/
|
||||
buf = get_obj(tagged, &obj, &size, &eaten);
|
||||
if (!buf)
|
||||
die(_("missing object %s for %s"),
|
||||
oid_to_hex(tagged), ref->refname);
|
||||
if (!obj)
|
||||
die(_("parse_object_buffer failed on %s for %s"),
|
||||
oid_to_hex(tagged), ref->refname);
|
||||
grab_values(ref->value, 1, obj, buf, size);
|
||||
if (!eaten)
|
||||
free(buf);
|
||||
get_object(ref, tagged, 1, &obj);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Загрузка…
Ссылка в новой задаче