refs.h: let for_each_namespaced_ref()
take excluded patterns
A future commit will want to call `for_each_namespaced_ref()` with a list of excluded patterns. We could introduce a variant of that function, say, `for_each_namespaced_ref_exclude()` which takes the extra parameter, and reimplement the original function in terms of that. But all but one caller (in `http-backend.c`) will supply the new parameter, so add the new parameter to `for_each_namespaced_ref()` itself instead of introducing a new function. For now, supply NULL for the list of excluded patterns at all callers to avoid changing behavior, which we will do in a future change. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
c45841fff8
commit
e6bf24d39a
@ -559,7 +559,7 @@ static void get_info_refs(struct strbuf *hdr, char *arg UNUSED)
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
select_getanyfile(hdr);
|
select_getanyfile(hdr);
|
||||||
for_each_namespaced_ref(show_text_ref, &buf);
|
for_each_namespaced_ref(NULL, show_text_ref, &buf);
|
||||||
send_strbuf(hdr, "text/plain", &buf);
|
send_strbuf(hdr, "text/plain", &buf);
|
||||||
}
|
}
|
||||||
strbuf_release(&buf);
|
strbuf_release(&buf);
|
||||||
|
5
refs.c
5
refs.c
@ -1660,13 +1660,14 @@ int for_each_replace_ref(struct repository *r, each_repo_ref_fn fn, void *cb_dat
|
|||||||
DO_FOR_EACH_INCLUDE_BROKEN, cb_data);
|
DO_FOR_EACH_INCLUDE_BROKEN, cb_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
int for_each_namespaced_ref(each_ref_fn fn, void *cb_data)
|
int for_each_namespaced_ref(const char **exclude_patterns,
|
||||||
|
each_ref_fn fn, void *cb_data)
|
||||||
{
|
{
|
||||||
struct strbuf buf = STRBUF_INIT;
|
struct strbuf buf = STRBUF_INIT;
|
||||||
int ret;
|
int ret;
|
||||||
strbuf_addf(&buf, "%srefs/", get_git_namespace());
|
strbuf_addf(&buf, "%srefs/", get_git_namespace());
|
||||||
ret = do_for_each_ref(get_main_ref_store(the_repository),
|
ret = do_for_each_ref(get_main_ref_store(the_repository),
|
||||||
buf.buf, NULL, fn, 0, 0, cb_data);
|
buf.buf, exclude_patterns, fn, 0, 0, cb_data);
|
||||||
strbuf_release(&buf);
|
strbuf_release(&buf);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
7
refs.h
7
refs.h
@ -376,7 +376,12 @@ int for_each_glob_ref_in(each_ref_fn fn, const char *pattern,
|
|||||||
const char *prefix, void *cb_data);
|
const char *prefix, void *cb_data);
|
||||||
|
|
||||||
int head_ref_namespaced(each_ref_fn fn, void *cb_data);
|
int head_ref_namespaced(each_ref_fn fn, void *cb_data);
|
||||||
int for_each_namespaced_ref(each_ref_fn fn, void *cb_data);
|
/*
|
||||||
|
* references matching any pattern in "exclude_patterns" are omitted from the
|
||||||
|
* result set on a best-effort basis.
|
||||||
|
*/
|
||||||
|
int for_each_namespaced_ref(const char **exclude_patterns,
|
||||||
|
each_ref_fn fn, void *cb_data);
|
||||||
|
|
||||||
/* can be used to learn about broken ref and symref */
|
/* can be used to learn about broken ref and symref */
|
||||||
int refs_for_each_rawref(struct ref_store *refs, each_ref_fn fn, void *cb_data);
|
int refs_for_each_rawref(struct ref_store *refs, each_ref_fn fn, void *cb_data);
|
||||||
|
@ -855,7 +855,7 @@ static void deepen(struct upload_pack_data *data, int depth)
|
|||||||
* marked with OUR_REF.
|
* marked with OUR_REF.
|
||||||
*/
|
*/
|
||||||
head_ref_namespaced(check_ref, data);
|
head_ref_namespaced(check_ref, data);
|
||||||
for_each_namespaced_ref(check_ref, data);
|
for_each_namespaced_ref(NULL, check_ref, data);
|
||||||
|
|
||||||
get_reachable_list(data, &reachable_shallows);
|
get_reachable_list(data, &reachable_shallows);
|
||||||
result = get_shallow_commits(&reachable_shallows,
|
result = get_shallow_commits(&reachable_shallows,
|
||||||
@ -1386,7 +1386,7 @@ void upload_pack(const int advertise_refs, const int stateless_rpc,
|
|||||||
if (advertise_refs)
|
if (advertise_refs)
|
||||||
data.no_done = 1;
|
data.no_done = 1;
|
||||||
head_ref_namespaced(send_ref, &data);
|
head_ref_namespaced(send_ref, &data);
|
||||||
for_each_namespaced_ref(send_ref, &data);
|
for_each_namespaced_ref(NULL, send_ref, &data);
|
||||||
if (!data.sent_capabilities) {
|
if (!data.sent_capabilities) {
|
||||||
const char *refname = "capabilities^{}";
|
const char *refname = "capabilities^{}";
|
||||||
write_v0_ref(&data, refname, refname, null_oid());
|
write_v0_ref(&data, refname, refname, null_oid());
|
||||||
@ -1400,7 +1400,7 @@ void upload_pack(const int advertise_refs, const int stateless_rpc,
|
|||||||
packet_flush(1);
|
packet_flush(1);
|
||||||
} else {
|
} else {
|
||||||
head_ref_namespaced(check_ref, &data);
|
head_ref_namespaced(check_ref, &data);
|
||||||
for_each_namespaced_ref(check_ref, &data);
|
for_each_namespaced_ref(NULL, check_ref, &data);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!advertise_refs) {
|
if (!advertise_refs) {
|
||||||
|
Reference in New Issue
Block a user