submodule.c: remove some of the_repository references

Commit 174d131fc9 (submodule.c: remove implicit dependency on
the_index - 2018-09-21) makes collect_changed_submodules() take a
"struct index_state *" as argument even if it's not really used. My
bad.

Instead of deleting this argument and fixing up all call sites. Let's
take this opportunity to remove some the_repository instead because
there's one or two in this function (and two more in its callback).
The callers can also get rid of some the_repository.

Noticed-by: Jeff King <peff@peff.net>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Nguyễn Thái Ngọc Duy 2018-10-19 19:34:43 +02:00 committed by Junio C Hamano
parent c4df23f792
commit 6245b98b0e
4 changed files with 38 additions and 31 deletions

View File

@ -945,7 +945,7 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
int ret = 0; int ret = 0;
if ((recurse_submodules == RECURSE_SUBMODULES_ON || if ((recurse_submodules == RECURSE_SUBMODULES_ON ||
recurse_submodules == RECURSE_SUBMODULES_ON_DEMAND) && recurse_submodules == RECURSE_SUBMODULES_ON_DEMAND) &&
submodule_touches_in_range(&the_index, &rebase_fork_point, &curr_head)) submodule_touches_in_range(the_repository, &rebase_fork_point, &curr_head))
die(_("cannot rebase with locally recorded submodule modifications")); die(_("cannot rebase with locally recorded submodule modifications"));
if (!autostash) { if (!autostash) {
struct commit_list *list = NULL; struct commit_list *list = NULL;

View File

@ -694,6 +694,7 @@ static struct oid_array *submodule_commits(struct string_list *submodules,
} }
struct collect_changed_submodules_cb_data { struct collect_changed_submodules_cb_data {
struct repository *repo;
struct string_list *changed; struct string_list *changed;
const struct object_id *commit_oid; const struct object_id *commit_oid;
}; };
@ -733,7 +734,7 @@ static void collect_changed_submodules_cb(struct diff_queue_struct *q,
if (!S_ISGITLINK(p->two->mode)) if (!S_ISGITLINK(p->two->mode))
continue; continue;
submodule = submodule_from_path(the_repository, submodule = submodule_from_path(me->repo,
commit_oid, p->two->path); commit_oid, p->two->path);
if (submodule) if (submodule)
name = submodule->name; name = submodule->name;
@ -741,7 +742,7 @@ static void collect_changed_submodules_cb(struct diff_queue_struct *q,
name = default_name_or_path(p->two->path); name = default_name_or_path(p->two->path);
/* make sure name does not collide with existing one */ /* make sure name does not collide with existing one */
if (name) if (name)
submodule = submodule_from_name(the_repository, submodule = submodule_from_name(me->repo,
commit_oid, name); commit_oid, name);
if (submodule) { if (submodule) {
warning("Submodule in commit %s at path: " warning("Submodule in commit %s at path: "
@ -766,14 +767,14 @@ static void collect_changed_submodules_cb(struct diff_queue_struct *q,
* have a corresponding 'struct oid_array' (in the 'util' field) which lists * have a corresponding 'struct oid_array' (in the 'util' field) which lists
* what the submodule pointers were updated to during the change. * what the submodule pointers were updated to during the change.
*/ */
static void collect_changed_submodules(struct index_state *istate, static void collect_changed_submodules(struct repository *r,
struct string_list *changed, struct string_list *changed,
struct argv_array *argv) struct argv_array *argv)
{ {
struct rev_info rev; struct rev_info rev;
const struct commit *commit; const struct commit *commit;
repo_init_revisions(the_repository, &rev, NULL); repo_init_revisions(r, &rev, NULL);
setup_revisions(argv->argc, argv->argv, &rev, NULL); setup_revisions(argv->argc, argv->argv, &rev, NULL);
if (prepare_revision_walk(&rev)) if (prepare_revision_walk(&rev))
die("revision walk setup failed"); die("revision walk setup failed");
@ -781,10 +782,11 @@ static void collect_changed_submodules(struct index_state *istate,
while ((commit = get_revision(&rev))) { while ((commit = get_revision(&rev))) {
struct rev_info diff_rev; struct rev_info diff_rev;
struct collect_changed_submodules_cb_data data; struct collect_changed_submodules_cb_data data;
data.repo = r;
data.changed = changed; data.changed = changed;
data.commit_oid = &commit->object.oid; data.commit_oid = &commit->object.oid;
repo_init_revisions(the_repository, &diff_rev, NULL); repo_init_revisions(r, &diff_rev, NULL);
diff_rev.diffopt.output_format |= DIFF_FORMAT_CALLBACK; diff_rev.diffopt.output_format |= DIFF_FORMAT_CALLBACK;
diff_rev.diffopt.format_callback = collect_changed_submodules_cb; diff_rev.diffopt.format_callback = collect_changed_submodules_cb;
diff_rev.diffopt.format_callback_data = &data; diff_rev.diffopt.format_callback_data = &data;
@ -816,6 +818,7 @@ static int append_oid_to_argv(const struct object_id *oid, void *data)
} }
struct has_commit_data { struct has_commit_data {
struct repository *repo;
int result; int result;
const char *path; const char *path;
}; };
@ -824,7 +827,7 @@ static int check_has_commit(const struct object_id *oid, void *data)
{ {
struct has_commit_data *cb = data; struct has_commit_data *cb = data;
enum object_type type = oid_object_info(the_repository, oid, NULL); enum object_type type = oid_object_info(cb->repo, oid, NULL);
switch (type) { switch (type) {
case OBJ_COMMIT: case OBJ_COMMIT:
@ -842,9 +845,11 @@ static int check_has_commit(const struct object_id *oid, void *data)
} }
} }
static int submodule_has_commits(const char *path, struct oid_array *commits) static int submodule_has_commits(struct repository *r,
const char *path,
struct oid_array *commits)
{ {
struct has_commit_data has_commit = { 1, path }; struct has_commit_data has_commit = { r, 1, path };
/* /*
* Perform a cheap, but incorrect check for the existence of 'commits'. * Perform a cheap, but incorrect check for the existence of 'commits'.
@ -887,9 +892,11 @@ static int submodule_has_commits(const char *path, struct oid_array *commits)
return has_commit.result; return has_commit.result;
} }
static int submodule_needs_pushing(const char *path, struct oid_array *commits) static int submodule_needs_pushing(struct repository *r,
const char *path,
struct oid_array *commits)
{ {
if (!submodule_has_commits(path, commits)) if (!submodule_has_commits(r, path, commits))
/* /*
* NOTE: We do consider it safe to return "no" here. The * NOTE: We do consider it safe to return "no" here. The
* correct answer would be "We do not know" instead of * correct answer would be "We do not know" instead of
@ -931,7 +938,7 @@ static int submodule_needs_pushing(const char *path, struct oid_array *commits)
return 0; return 0;
} }
int find_unpushed_submodules(struct index_state *istate, int find_unpushed_submodules(struct repository *r,
struct oid_array *commits, struct oid_array *commits,
const char *remotes_name, const char *remotes_name,
struct string_list *needs_pushing) struct string_list *needs_pushing)
@ -946,14 +953,14 @@ int find_unpushed_submodules(struct index_state *istate,
argv_array_push(&argv, "--not"); argv_array_push(&argv, "--not");
argv_array_pushf(&argv, "--remotes=%s", remotes_name); argv_array_pushf(&argv, "--remotes=%s", remotes_name);
collect_changed_submodules(istate, &submodules, &argv); collect_changed_submodules(r, &submodules, &argv);
for_each_string_list_item(name, &submodules) { for_each_string_list_item(name, &submodules) {
struct oid_array *commits = name->util; struct oid_array *commits = name->util;
const struct submodule *submodule; const struct submodule *submodule;
const char *path = NULL; const char *path = NULL;
submodule = submodule_from_name(the_repository, &null_oid, name->string); submodule = submodule_from_name(r, &null_oid, name->string);
if (submodule) if (submodule)
path = submodule->path; path = submodule->path;
else else
@ -962,7 +969,7 @@ int find_unpushed_submodules(struct index_state *istate,
if (!path) if (!path)
continue; continue;
if (submodule_needs_pushing(path, commits)) if (submodule_needs_pushing(r, path, commits))
string_list_insert(needs_pushing, path); string_list_insert(needs_pushing, path);
} }
@ -1047,7 +1054,7 @@ static void submodule_push_check(const char *path, const char *head,
die("process for submodule '%s' failed", path); die("process for submodule '%s' failed", path);
} }
int push_unpushed_submodules(struct index_state *istate, int push_unpushed_submodules(struct repository *r,
struct oid_array *commits, struct oid_array *commits,
const struct remote *remote, const struct remote *remote,
const struct refspec *rs, const struct refspec *rs,
@ -1057,7 +1064,7 @@ int push_unpushed_submodules(struct index_state *istate,
int i, ret = 1; int i, ret = 1;
struct string_list needs_pushing = STRING_LIST_INIT_DUP; struct string_list needs_pushing = STRING_LIST_INIT_DUP;
if (!find_unpushed_submodules(istate, commits, if (!find_unpushed_submodules(r, commits,
remote->name, &needs_pushing)) remote->name, &needs_pushing))
return 1; return 1;
@ -1115,14 +1122,14 @@ void check_for_new_submodule_commits(struct object_id *oid)
oid_array_append(&ref_tips_after_fetch, oid); oid_array_append(&ref_tips_after_fetch, oid);
} }
static void calculate_changed_submodule_paths(struct index_state *istate) static void calculate_changed_submodule_paths(struct repository *r)
{ {
struct argv_array argv = ARGV_ARRAY_INIT; struct argv_array argv = ARGV_ARRAY_INIT;
struct string_list changed_submodules = STRING_LIST_INIT_DUP; struct string_list changed_submodules = STRING_LIST_INIT_DUP;
const struct string_list_item *name; const struct string_list_item *name;
/* No need to check if there are no submodules configured */ /* No need to check if there are no submodules configured */
if (!submodule_from_path(the_repository, NULL, NULL)) if (!submodule_from_path(r, NULL, NULL))
return; return;
argv_array_push(&argv, "--"); /* argv[0] program name */ argv_array_push(&argv, "--"); /* argv[0] program name */
@ -1136,14 +1143,14 @@ static void calculate_changed_submodule_paths(struct index_state *istate)
* Collect all submodules (whether checked out or not) for which new * Collect all submodules (whether checked out or not) for which new
* commits have been recorded upstream in "changed_submodule_names". * commits have been recorded upstream in "changed_submodule_names".
*/ */
collect_changed_submodules(istate, &changed_submodules, &argv); collect_changed_submodules(r, &changed_submodules, &argv);
for_each_string_list_item(name, &changed_submodules) { for_each_string_list_item(name, &changed_submodules) {
struct oid_array *commits = name->util; struct oid_array *commits = name->util;
const struct submodule *submodule; const struct submodule *submodule;
const char *path = NULL; const char *path = NULL;
submodule = submodule_from_name(the_repository, &null_oid, name->string); submodule = submodule_from_name(r, &null_oid, name->string);
if (submodule) if (submodule)
path = submodule->path; path = submodule->path;
else else
@ -1152,7 +1159,7 @@ static void calculate_changed_submodule_paths(struct index_state *istate)
if (!path) if (!path)
continue; continue;
if (!submodule_has_commits(path, commits)) if (!submodule_has_commits(r, path, commits))
string_list_append(&changed_submodule_names, name->string); string_list_append(&changed_submodule_names, name->string);
} }
@ -1163,7 +1170,7 @@ static void calculate_changed_submodule_paths(struct index_state *istate)
initialized_fetch_ref_tips = 0; initialized_fetch_ref_tips = 0;
} }
int submodule_touches_in_range(struct index_state *istate, int submodule_touches_in_range(struct repository *r,
struct object_id *excl_oid, struct object_id *excl_oid,
struct object_id *incl_oid) struct object_id *incl_oid)
{ {
@ -1172,7 +1179,7 @@ int submodule_touches_in_range(struct index_state *istate,
int ret; int ret;
/* No need to check if there are no submodules configured */ /* No need to check if there are no submodules configured */
if (!submodule_from_path(the_repository, NULL, NULL)) if (!submodule_from_path(r, NULL, NULL))
return 0; return 0;
argv_array_push(&args, "--"); /* args[0] program name */ argv_array_push(&args, "--"); /* args[0] program name */
@ -1182,7 +1189,7 @@ int submodule_touches_in_range(struct index_state *istate,
argv_array_push(&args, oid_to_hex(excl_oid)); argv_array_push(&args, oid_to_hex(excl_oid));
} }
collect_changed_submodules(istate, &subs, &args); collect_changed_submodules(r, &subs, &args);
ret = subs.nr; ret = subs.nr;
argv_array_clear(&args); argv_array_clear(&args);
@ -1352,7 +1359,7 @@ int fetch_populated_submodules(struct repository *r,
argv_array_push(&spf.args, "--recurse-submodules-default"); argv_array_push(&spf.args, "--recurse-submodules-default");
/* default value, "--submodule-prefix" and its value are added later */ /* default value, "--submodule-prefix" and its value are added later */
calculate_changed_submodule_paths(r->index); calculate_changed_submodule_paths(r);
run_processes_parallel(max_parallel_jobs, run_processes_parallel(max_parallel_jobs,
get_next_submodule, get_next_submodule,
fetch_start_failure, fetch_start_failure,

View File

@ -102,15 +102,15 @@ int add_submodule_odb(const char *path);
* Checks if there are submodule changes in a..b. If a is the null OID, * Checks if there are submodule changes in a..b. If a is the null OID,
* checks b and all its ancestors instead. * checks b and all its ancestors instead.
*/ */
int submodule_touches_in_range(struct index_state *istate, int submodule_touches_in_range(struct repository *r,
struct object_id *a, struct object_id *a,
struct object_id *b); struct object_id *b);
int find_unpushed_submodules(struct index_state *istate, int find_unpushed_submodules(struct repository *r,
struct oid_array *commits, struct oid_array *commits,
const char *remotes_name, const char *remotes_name,
struct string_list *needs_pushing); struct string_list *needs_pushing);
struct refspec; struct refspec;
int push_unpushed_submodules(struct index_state *istate, int push_unpushed_submodules(struct repository *r,
struct oid_array *commits, struct oid_array *commits,
const struct remote *remote, const struct remote *remote,
const struct refspec *rs, const struct refspec *rs,

View File

@ -1172,7 +1172,7 @@ int transport_push(struct transport *transport,
oid_array_append(&commits, oid_array_append(&commits,
&ref->new_oid); &ref->new_oid);
if (!push_unpushed_submodules(&the_index, if (!push_unpushed_submodules(the_repository,
&commits, &commits,
transport->remote, transport->remote,
rs, rs,
@ -1197,7 +1197,7 @@ int transport_push(struct transport *transport,
oid_array_append(&commits, oid_array_append(&commits,
&ref->new_oid); &ref->new_oid);
if (find_unpushed_submodules(&the_index, if (find_unpushed_submodules(the_repository,
&commits, &commits,
transport->remote->name, transport->remote->name,
&needs_pushing)) { &needs_pushing)) {