提交 3b912021 编写于 作者: J Junio C Hamano

Merge branch 'ak/maint-for-each-ref-no-lookup'

* ak/maint-for-each-ref-no-lookup:
  for-each-ref: Do not lookup objects when they will not be used
...@@ -561,14 +561,6 @@ static void populate_value(struct refinfo *ref) ...@@ -561,14 +561,6 @@ static void populate_value(struct refinfo *ref)
ref->value = xcalloc(sizeof(struct atom_value), used_atom_cnt); ref->value = xcalloc(sizeof(struct atom_value), used_atom_cnt);
buf = get_obj(ref->objectname, &obj, &size, &eaten);
if (!buf)
die("missing object %s for %s",
sha1_to_hex(ref->objectname), ref->refname);
if (!obj)
die("parse_object_buffer failed on %s for %s",
sha1_to_hex(ref->objectname), ref->refname);
/* Fill in specials first */ /* Fill in specials first */
for (i = 0; i < used_atom_cnt; i++) { for (i = 0; i < used_atom_cnt; i++) {
const char *name = used_atom[i]; const char *name = used_atom[i];
...@@ -621,6 +613,22 @@ static void populate_value(struct refinfo *ref) ...@@ -621,6 +613,22 @@ static void populate_value(struct refinfo *ref)
} }
} }
for (i = 0; i < used_atom_cnt; i++) {
struct atom_value *v = &ref->value[i];
if (v->s == NULL)
goto need_obj;
}
return;
need_obj:
buf = get_obj(ref->objectname, &obj, &size, &eaten);
if (!buf)
die("missing object %s for %s",
sha1_to_hex(ref->objectname), ref->refname);
if (!obj)
die("parse_object_buffer failed on %s for %s",
sha1_to_hex(ref->objectname), ref->refname);
grab_values(ref->value, 0, obj, buf, size); grab_values(ref->value, 0, obj, buf, size);
if (!eaten) if (!eaten)
free(buf); free(buf);
...@@ -926,7 +934,7 @@ int cmd_for_each_ref(int argc, const char **argv, const char *prefix) ...@@ -926,7 +934,7 @@ int cmd_for_each_ref(int argc, const char **argv, const char *prefix)
memset(&cbdata, 0, sizeof(cbdata)); memset(&cbdata, 0, sizeof(cbdata));
cbdata.grab_pattern = argv; cbdata.grab_pattern = argv;
for_each_ref(grab_single_ref, &cbdata); for_each_rawref(grab_single_ref, &cbdata);
refs = cbdata.grab_array; refs = cbdata.grab_array;
num_refs = cbdata.grab_cnt; num_refs = cbdata.grab_cnt;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册