Skip to content

Commit 073cf63

Browse files
pcloudsgitster
authored andcommitted
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>
1 parent 62f0b39 commit 073cf63

3 files changed

Lines changed: 39 additions & 24 deletions

File tree

refs.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1362,16 +1362,15 @@ int for_each_ref_in_submodule(const char *submodule, const char *prefix,
13621362
prefix, fn, cb_data);
13631363
}
13641364

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)
13681368
{
13691369
unsigned int flag = 0;
13701370

13711371
if (broken)
13721372
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);
13751374
}
13761375

13771376
int for_each_replace_ref(each_ref_fn fn, void *cb_data)

refs.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,9 @@ int refs_for_each_remote_ref(struct ref_store *refs,
291291
int head_ref(each_ref_fn fn, void *cb_data);
292292
int for_each_ref(each_ref_fn fn, void *cb_data);
293293
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);
294297
int for_each_fullref_in(const char *prefix, each_ref_fn fn, void *cb_data,
295298
unsigned int broken);
296299
int for_each_tag_ref(each_ref_fn fn, void *cb_data);
@@ -306,9 +309,6 @@ int for_each_ref_submodule(const char *submodule,
306309
each_ref_fn fn, void *cb_data);
307310
int for_each_ref_in_submodule(const char *submodule, const char *prefix,
308311
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);
312312
int for_each_tag_ref_submodule(const char *submodule,
313313
each_ref_fn fn, void *cb_data);
314314
int for_each_branch_ref_submodule(const char *submodule,

revision.c

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1188,12 +1188,19 @@ void add_ref_exclusion(struct string_list **ref_excludes_p, const char *exclude)
11881188
string_list_append(*ref_excludes_p, exclude);
11891189
}
11901190

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 *))
11931194
{
11941195
struct all_refs_cb cb;
1196+
1197+
if (!refs) {
1198+
/* this could happen with uninitialized submodules */
1199+
return;
1200+
}
1201+
11951202
init_all_refs_cb(&cb, revs, flags);
1196-
for_each(submodule, handle_one_ref, &cb);
1203+
for_each(refs, handle_one_ref, &cb);
11971204
}
11981205

11991206
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,
20952102
ctx->argc -= n;
20962103
}
20972104

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+
{
20992108
struct strbuf bisect_refs = STRBUF_INIT;
21002109
int status;
21012110
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);
21032112
strbuf_release(&bisect_refs);
21042113
return status;
21052114
}
21062115

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)
21082117
{
2109-
return for_each_bisect_ref(submodule, fn, cb_data, term_bad);
2118+
return for_each_bisect_ref(refs, fn, cb_data, term_bad);
21102119
}
21112120

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)
21132122
{
2114-
return for_each_bisect_ref(submodule, fn, cb_data, term_good);
2123+
return for_each_bisect_ref(refs, fn, cb_data, term_good);
21152124
}
21162125

21172126
static int handle_revision_pseudo_opt(const char *submodule,
@@ -2120,8 +2129,14 @@ static int handle_revision_pseudo_opt(const char *submodule,
21202129
{
21212130
const char *arg = argv[0];
21222131
const char *optarg;
2132+
struct ref_store *refs;
21232133
int argcount;
21242134

2135+
if (submodule) {
2136+
refs = get_submodule_ref_store(submodule);
2137+
} else
2138+
refs = get_main_ref_store();
2139+
21252140
/*
21262141
* NOTE!
21272142
*
@@ -2133,22 +2148,23 @@ static int handle_revision_pseudo_opt(const char *submodule,
21332148
* register it in the list at the top of handle_revision_opt.
21342149
*/
21352150
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);
21382153
clear_ref_exclusion(&revs->ref_excludes);
21392154
} 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);
21412156
clear_ref_exclusion(&revs->ref_excludes);
21422157
} else if (!strcmp(arg, "--bisect")) {
21432158
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);
21462162
revs->bisect = 1;
21472163
} 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);
21492165
clear_ref_exclusion(&revs->ref_excludes);
21502166
} 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);
21522168
clear_ref_exclusion(&revs->ref_excludes);
21532169
} else if ((argcount = parse_long_opt("glob", argv, &optarg))) {
21542170
struct all_refs_cb cb;

0 commit comments

Comments
 (0)