Merge branch 'tb/ls-refs-optim'
The ls-refs protocol operation has been optimized to narrow the sub-hierarchy of refs/ it walks to produce response. * tb/ls-refs-optim: ls-refs.c: traverse prefixes of disjoint "ref-prefix" sets ls-refs.c: initialize 'prefixes' before using it refs: expose 'for_each_fullref_in_prefixes'
This commit is contained in:
@ -90,6 +90,7 @@ int ls_refs(struct repository *r, struct strvec *keys,
|
||||
struct ls_refs_data data;
|
||||
|
||||
memset(&data, 0, sizeof(data));
|
||||
strvec_init(&data.prefixes);
|
||||
|
||||
git_config(ls_refs_config, NULL);
|
||||
|
||||
@ -109,7 +110,10 @@ int ls_refs(struct repository *r, struct strvec *keys,
|
||||
die(_("expected flush after ls-refs arguments"));
|
||||
|
||||
head_ref_namespaced(send_ref, &data);
|
||||
for_each_namespaced_ref(send_ref, &data);
|
||||
if (!data.prefixes.nr)
|
||||
strvec_push(&data.prefixes, "");
|
||||
for_each_fullref_in_prefixes(get_git_namespace(), data.prefixes.v,
|
||||
send_ref, &data, 0);
|
||||
packet_flush(1);
|
||||
strvec_clear(&data.prefixes);
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user