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;