revision.c: use refs_for_each*() instead of for_each_*_submodule()

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Nguyễn Thái Ngọc Duy committed Aug 23, 2017 at 19:36 UTC 073cf63c523e3e88a8e002fbc04fc1876f074aef
3 files changed +39 -24
refs.c
+4 -5
@@ -1362,16 +1362,15 @@ int for_each_ref_in_submodule(const char *submodule, const char *prefix,
1362 prefix, fn, cb_data);
1363 }
1364
1365 -int for_each_fullref_in_submodule(const char *submodule, const char *prefix,
1366 - each_ref_fn fn, void *cb_data,
1367 - unsigned int broken)
1365 +int refs_for_each_fullref_in(struct ref_store *refs, const char *prefix,
1366 + each_ref_fn fn, void *cb_data,
1367 + unsigned int broken)
1368 {
1369 unsigned int flag = 0;
1370
1371 if (broken)
1372 flag = DO_FOR_EACH_INCLUDE_BROKEN;
1373 - return do_for_each_ref(get_submodule_ref_store(submodule),
1374 - prefix, fn, 0, flag, cb_data);
1373 + return do_for_each_ref(refs, prefix, fn, 0, flag, cb_data);
1374 }
1375
1376 int for_each_replace_ref(each_ref_fn fn, void *cb_data)
refs.h
+3 -3
@@ -291,6 +291,9 @@ int refs_for_each_remote_ref(struct ref_store *refs,
291 int head_ref(each_ref_fn fn, void *cb_data);
292 int for_each_ref(each_ref_fn fn, void *cb_data);
293 int for_each_ref_in(const char *prefix, each_ref_fn fn, void *cb_data);
294 +int refs_for_each_fullref_in(struct ref_store *refs, const char *prefix,
295 + each_ref_fn fn, void *cb_data,
296 + unsigned int broken);
297 int for_each_fullref_in(const char *prefix, each_ref_fn fn, void *cb_data,
298 unsigned int broken);
299 int for_each_tag_ref(each_ref_fn fn, void *cb_data);
@@ -306,9 +309,6 @@ int for_each_ref_submodule(const char *submodule,
309 each_ref_fn fn, void *cb_data);
310 int for_each_ref_in_submodule(const char *submodule, const char *prefix,
311 each_ref_fn fn, void *cb_data);
309 -int for_each_fullref_in_submodule(const char *submodule, const char *prefix,
310 - each_ref_fn fn, void *cb_data,
311 - unsigned int broken);
312 int for_each_tag_ref_submodule(const char *submodule,
313 each_ref_fn fn, void *cb_data);
314 int for_each_branch_ref_submodule(const char *submodule,
revision.c
+32 -16
@@ -1188,12 +1188,19 @@ void add_ref_exclusion(struct string_list **ref_excludes_p, const char *exclude)
1188 string_list_append(*ref_excludes_p, exclude);
1189 }
1190
1191 -static void handle_refs(const char *submodule, struct rev_info *revs, unsigned flags,
1192 - int (*for_each)(const char *, each_ref_fn, void *))
1191 +static void handle_refs(struct ref_store *refs,
1192 + struct rev_info *revs, unsigned flags,
1193 + int (*for_each)(struct ref_store *, each_ref_fn, void *))
1194 {
1195 struct all_refs_cb cb;
1196 +
1197 + if (!refs) {
1198 + /* this could happen with uninitialized submodules */
1199 + return;
1200 + }
1201 +
1202 init_all_refs_cb(&cb, revs, flags);
1196 - for_each(submodule, handle_one_ref, &cb);
1203 + for_each(refs, handle_one_ref, &cb);
1204 }
1205
1206 static void handle_one_reflog_commit(struct object_id *oid, void *cb_data)
@@ -2095,23 +2102,25 @@ void parse_revision_opt(struct rev_info *revs, struct parse_opt_ctx_t *ctx,
2102 ctx->argc -= n;
2103 }
2104
2098 -static int for_each_bisect_ref(const char *submodule, each_ref_fn fn, void *cb_data, const char *term) {
2105 +static int for_each_bisect_ref(struct ref_store *refs, each_ref_fn fn,
2106 + void *cb_data, const char *term)
2107 +{
2108 struct strbuf bisect_refs = STRBUF_INIT;
2109 int status;
2110 strbuf_addf(&bisect_refs, "refs/bisect/%s", term);
2102 - status = for_each_fullref_in_submodule(submodule, bisect_refs.buf, fn, cb_data, 0);
2111 + status = refs_for_each_fullref_in(refs, bisect_refs.buf, fn, cb_data, 0);
2112 strbuf_release(&bisect_refs);
2113 return status;
2114 }
2115
2107 -static int for_each_bad_bisect_ref(const char *submodule, each_ref_fn fn, void *cb_data)
2116 +static int for_each_bad_bisect_ref(struct ref_store *refs, each_ref_fn fn, void *cb_data)
2117 {
2109 - return for_each_bisect_ref(submodule, fn, cb_data, term_bad);
2118 + return for_each_bisect_ref(refs, fn, cb_data, term_bad);
2119 }
2120
2112 -static int for_each_good_bisect_ref(const char *submodule, each_ref_fn fn, void *cb_data)
2121 +static int for_each_good_bisect_ref(struct ref_store *refs, each_ref_fn fn, void *cb_data)
2122 {
2114 - return for_each_bisect_ref(submodule, fn, cb_data, term_good);
2123 + return for_each_bisect_ref(refs, fn, cb_data, term_good);
2124 }
2125
2126 static int handle_revision_pseudo_opt(const char *submodule,
@@ -2120,8 +2129,14 @@ static int handle_revision_pseudo_opt(const char *submodule,
2129 {
2130 const char *arg = argv[0];
2131 const char *optarg;
2132 + struct ref_store *refs;
2133 int argcount;
2134
2135 + if (submodule) {
2136 + refs = get_submodule_ref_store(submodule);
2137 + } else
2138 + refs = get_main_ref_store();
2139 +
2140 /*
2141 * NOTE!
2142 *
@@ -2133,22 +2148,23 @@ static int handle_revision_pseudo_opt(const char *submodule,
2148 * register it in the list at the top of handle_revision_opt.
2149 */
2150 if (!strcmp(arg, "--all")) {
2136 - handle_refs(submodule, revs, *flags, for_each_ref_submodule);
2137 - handle_refs(submodule, revs, *flags, head_ref_submodule);
2151 + handle_refs(refs, revs, *flags, refs_for_each_ref);
2152 + handle_refs(refs, revs, *flags, refs_head_ref);
2153 clear_ref_exclusion(&revs->ref_excludes);
2154 } else if (!strcmp(arg, "--branches")) {
2140 - handle_refs(submodule, revs, *flags, for_each_branch_ref_submodule);
2155 + handle_refs(refs, revs, *flags, refs_for_each_branch_ref);
2156 clear_ref_exclusion(&revs->ref_excludes);
2157 } else if (!strcmp(arg, "--bisect")) {
2158 read_bisect_terms(&term_bad, &term_good);
2144 - handle_refs(submodule, revs, *flags, for_each_bad_bisect_ref);
2145 - handle_refs(submodule, revs, *flags ^ (UNINTERESTING | BOTTOM), for_each_good_bisect_ref);
2159 + handle_refs(refs, revs, *flags, for_each_bad_bisect_ref);
2160 + handle_refs(refs, revs, *flags ^ (UNINTERESTING | BOTTOM),
2161 + for_each_good_bisect_ref);
2162 revs->bisect = 1;
2163 } else if (!strcmp(arg, "--tags")) {
2148 - handle_refs(submodule, revs, *flags, for_each_tag_ref_submodule);
2164 + handle_refs(refs, revs, *flags, refs_for_each_tag_ref);
2165 clear_ref_exclusion(&revs->ref_excludes);
2166 } else if (!strcmp(arg, "--remotes")) {
2151 - handle_refs(submodule, revs, *flags, for_each_remote_ref_submodule);
2167 + handle_refs(refs, revs, *flags, refs_for_each_remote_ref);
2168 clear_ref_exclusion(&revs->ref_excludes);
2169 } else if ((argcount = parse_long_opt("glob", argv, &optarg))) {
2170 struct all_refs_cb cb;