提交 073cf63c 编写于 作者: N Nguyễn Thái Ngọc Duy 提交者: Junio C Hamano

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

Signed-off-by: NNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 62f0b399
...@@ -1362,16 +1362,15 @@ int for_each_ref_in_submodule(const char *submodule, const char *prefix, ...@@ -1362,16 +1362,15 @@ int for_each_ref_in_submodule(const char *submodule, const char *prefix,
prefix, fn, cb_data); prefix, fn, cb_data);
} }
int for_each_fullref_in_submodule(const char *submodule, const char *prefix, int refs_for_each_fullref_in(struct ref_store *refs, const char *prefix,
each_ref_fn fn, void *cb_data, each_ref_fn fn, void *cb_data,
unsigned int broken) unsigned int broken)
{ {
unsigned int flag = 0; unsigned int flag = 0;
if (broken) if (broken)
flag = DO_FOR_EACH_INCLUDE_BROKEN; flag = DO_FOR_EACH_INCLUDE_BROKEN;
return do_for_each_ref(get_submodule_ref_store(submodule), return do_for_each_ref(refs, prefix, fn, 0, flag, cb_data);
prefix, fn, 0, flag, cb_data);
} }
int for_each_replace_ref(each_ref_fn fn, void *cb_data) int for_each_replace_ref(each_ref_fn fn, void *cb_data)
......
...@@ -291,6 +291,9 @@ int refs_for_each_remote_ref(struct ref_store *refs, ...@@ -291,6 +291,9 @@ int refs_for_each_remote_ref(struct ref_store *refs,
int head_ref(each_ref_fn fn, void *cb_data); int head_ref(each_ref_fn fn, void *cb_data);
int for_each_ref(each_ref_fn fn, void *cb_data); int for_each_ref(each_ref_fn fn, void *cb_data);
int for_each_ref_in(const char *prefix, each_ref_fn fn, void *cb_data); int for_each_ref_in(const char *prefix, each_ref_fn fn, void *cb_data);
int refs_for_each_fullref_in(struct ref_store *refs, const char *prefix,
each_ref_fn fn, void *cb_data,
unsigned int broken);
int for_each_fullref_in(const char *prefix, each_ref_fn fn, void *cb_data, int for_each_fullref_in(const char *prefix, each_ref_fn fn, void *cb_data,
unsigned int broken); unsigned int broken);
int for_each_tag_ref(each_ref_fn fn, void *cb_data); int for_each_tag_ref(each_ref_fn fn, void *cb_data);
...@@ -306,9 +309,6 @@ int for_each_ref_submodule(const char *submodule, ...@@ -306,9 +309,6 @@ int for_each_ref_submodule(const char *submodule,
each_ref_fn fn, void *cb_data); each_ref_fn fn, void *cb_data);
int for_each_ref_in_submodule(const char *submodule, const char *prefix, int for_each_ref_in_submodule(const char *submodule, const char *prefix,
each_ref_fn fn, void *cb_data); each_ref_fn fn, void *cb_data);
int for_each_fullref_in_submodule(const char *submodule, const char *prefix,
each_ref_fn fn, void *cb_data,
unsigned int broken);
int for_each_tag_ref_submodule(const char *submodule, int for_each_tag_ref_submodule(const char *submodule,
each_ref_fn fn, void *cb_data); each_ref_fn fn, void *cb_data);
int for_each_branch_ref_submodule(const char *submodule, int for_each_branch_ref_submodule(const char *submodule,
......
...@@ -1188,12 +1188,19 @@ void add_ref_exclusion(struct string_list **ref_excludes_p, const char *exclude) ...@@ -1188,12 +1188,19 @@ void add_ref_exclusion(struct string_list **ref_excludes_p, const char *exclude)
string_list_append(*ref_excludes_p, exclude); string_list_append(*ref_excludes_p, exclude);
} }
static void handle_refs(const char *submodule, struct rev_info *revs, unsigned flags, static void handle_refs(struct ref_store *refs,
int (*for_each)(const char *, each_ref_fn, void *)) struct rev_info *revs, unsigned flags,
int (*for_each)(struct ref_store *, each_ref_fn, void *))
{ {
struct all_refs_cb cb; struct all_refs_cb cb;
if (!refs) {
/* this could happen with uninitialized submodules */
return;
}
init_all_refs_cb(&cb, revs, flags); init_all_refs_cb(&cb, revs, flags);
for_each(submodule, handle_one_ref, &cb); for_each(refs, handle_one_ref, &cb);
} }
static void handle_one_reflog_commit(struct object_id *oid, void *cb_data) 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, ...@@ -2095,23 +2102,25 @@ void parse_revision_opt(struct rev_info *revs, struct parse_opt_ctx_t *ctx,
ctx->argc -= n; ctx->argc -= n;
} }
static int for_each_bisect_ref(const char *submodule, each_ref_fn fn, void *cb_data, const char *term) { static int for_each_bisect_ref(struct ref_store *refs, each_ref_fn fn,
void *cb_data, const char *term)
{
struct strbuf bisect_refs = STRBUF_INIT; struct strbuf bisect_refs = STRBUF_INIT;
int status; int status;
strbuf_addf(&bisect_refs, "refs/bisect/%s", term); strbuf_addf(&bisect_refs, "refs/bisect/%s", term);
status = for_each_fullref_in_submodule(submodule, bisect_refs.buf, fn, cb_data, 0); status = refs_for_each_fullref_in(refs, bisect_refs.buf, fn, cb_data, 0);
strbuf_release(&bisect_refs); strbuf_release(&bisect_refs);
return status; return status;
} }
static int for_each_bad_bisect_ref(const char *submodule, each_ref_fn fn, void *cb_data) static int for_each_bad_bisect_ref(struct ref_store *refs, each_ref_fn fn, void *cb_data)
{ {
return for_each_bisect_ref(submodule, fn, cb_data, term_bad); return for_each_bisect_ref(refs, fn, cb_data, term_bad);
} }
static int for_each_good_bisect_ref(const char *submodule, each_ref_fn fn, void *cb_data) static int for_each_good_bisect_ref(struct ref_store *refs, each_ref_fn fn, void *cb_data)
{ {
return for_each_bisect_ref(submodule, fn, cb_data, term_good); return for_each_bisect_ref(refs, fn, cb_data, term_good);
} }
static int handle_revision_pseudo_opt(const char *submodule, static int handle_revision_pseudo_opt(const char *submodule,
...@@ -2120,8 +2129,14 @@ static int handle_revision_pseudo_opt(const char *submodule, ...@@ -2120,8 +2129,14 @@ static int handle_revision_pseudo_opt(const char *submodule,
{ {
const char *arg = argv[0]; const char *arg = argv[0];
const char *optarg; const char *optarg;
struct ref_store *refs;
int argcount; int argcount;
if (submodule) {
refs = get_submodule_ref_store(submodule);
} else
refs = get_main_ref_store();
/* /*
* NOTE! * NOTE!
* *
...@@ -2133,22 +2148,23 @@ static int handle_revision_pseudo_opt(const char *submodule, ...@@ -2133,22 +2148,23 @@ static int handle_revision_pseudo_opt(const char *submodule,
* register it in the list at the top of handle_revision_opt. * register it in the list at the top of handle_revision_opt.
*/ */
if (!strcmp(arg, "--all")) { if (!strcmp(arg, "--all")) {
handle_refs(submodule, revs, *flags, for_each_ref_submodule); handle_refs(refs, revs, *flags, refs_for_each_ref);
handle_refs(submodule, revs, *flags, head_ref_submodule); handle_refs(refs, revs, *flags, refs_head_ref);
clear_ref_exclusion(&revs->ref_excludes); clear_ref_exclusion(&revs->ref_excludes);
} else if (!strcmp(arg, "--branches")) { } else if (!strcmp(arg, "--branches")) {
handle_refs(submodule, revs, *flags, for_each_branch_ref_submodule); handle_refs(refs, revs, *flags, refs_for_each_branch_ref);
clear_ref_exclusion(&revs->ref_excludes); clear_ref_exclusion(&revs->ref_excludes);
} else if (!strcmp(arg, "--bisect")) { } else if (!strcmp(arg, "--bisect")) {
read_bisect_terms(&term_bad, &term_good); read_bisect_terms(&term_bad, &term_good);
handle_refs(submodule, revs, *flags, for_each_bad_bisect_ref); handle_refs(refs, revs, *flags, for_each_bad_bisect_ref);
handle_refs(submodule, revs, *flags ^ (UNINTERESTING | BOTTOM), for_each_good_bisect_ref); handle_refs(refs, revs, *flags ^ (UNINTERESTING | BOTTOM),
for_each_good_bisect_ref);
revs->bisect = 1; revs->bisect = 1;
} else if (!strcmp(arg, "--tags")) { } else if (!strcmp(arg, "--tags")) {
handle_refs(submodule, revs, *flags, for_each_tag_ref_submodule); handle_refs(refs, revs, *flags, refs_for_each_tag_ref);
clear_ref_exclusion(&revs->ref_excludes); clear_ref_exclusion(&revs->ref_excludes);
} else if (!strcmp(arg, "--remotes")) { } else if (!strcmp(arg, "--remotes")) {
handle_refs(submodule, revs, *flags, for_each_remote_ref_submodule); handle_refs(refs, revs, *flags, refs_for_each_remote_ref);
clear_ref_exclusion(&revs->ref_excludes); clear_ref_exclusion(&revs->ref_excludes);
} else if ((argcount = parse_long_opt("glob", argv, &optarg))) { } else if ((argcount = parse_long_opt("glob", argv, &optarg))) {
struct all_refs_cb cb; struct all_refs_cb cb;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册