Kill the_index part 4
PATCH v5 19/23 submodule.c: remove implicit dependency on the_index
In reply to Nguyễn Thái Ngọc DuySigned-off-by Nguyễn Thái Ngọc Duy <[email protected]>
Signed-off-by Junio C Hamano <[email protected]>
--- builtin/pull.c | 2 +- submodule.c | 28 +++++++++++++++++----------- submodule.h | 9 ++++++--- transport.c | 9 ++++++--- 4 files changed, 30 insertions(+), 18 deletions(-)
builtin/pull.c +1 -1
@@ -944,7 +944,7 @@ int cmd_pull(int argc, const char **argv, const char *prefix)int ret =0 ;if ((recurse_submodules ==RECURSE_SUBMODULES_ON || recurse_submodules ==RECURSE_SUBMODULES_ON_DEMAND ) && -submodule_touches_in_range (&rebase_fork_point, &curr_head)) +submodule_touches_in_range (&the_index, &rebase_fork_point, &curr_head))die (_ ("cannot rebase with locally recorded submodule modifications" ));if (!autostash) {struct commit_list *list =NULL ;
submodule.c +17 -11
@@ -766,7 +766,8 @@ static void collect_changed_submodules_cb(struct diff_queue_struct *q,* have a corresponding 'struct oid_array' (in the 'util' field) which lists * what the submodule pointers were updated to during the change. */ -static void collect_changed_submodules (struct string_list *changed, +static void collect_changed_submodules (struct index_state *istate, +struct string_list *changed,struct argv_array *argv) {struct rev_info rev;
@@ -930,8 +931,10 @@ static int submodule_needs_pushing(const char *path, struct oid_array *commits)return 0 ; } -int find_unpushed_submodules (struct oid_array *commits, -const char *remotes_name,struct string_list *needs_pushing) +int find_unpushed_submodules (struct index_state *istate, +struct oid_array *commits, +const char *remotes_name, +struct string_list *needs_pushing) {struct string_list submodules =STRING_LIST_INIT_DUP ;struct string_list_item *name;
@@ -943,7 +946,7 @@ int find_unpushed_submodules(struct oid_array *commits,argv_array_push (&argv,"--not" );argv_array_pushf (&argv,"--remotes=%s" , remotes_name); -collect_changed_submodules (&submodules, &argv); +collect_changed_submodules (istate, &submodules, &argv);for_each_string_list_item (name, &submodules) {struct oid_array *commits = name->util;
@@ -1044,7 +1047,8 @@ static void submodule_push_check(const char *path, const char *head,die ("process for submodule '%s' failed" , path); } -int push_unpushed_submodules(struct oid_array *commits, +int push_unpushed_submodules(struct index_state *istate, + struct oid_array *commits, const struct remote *remote, const struct refspec *rs, const struct string_list *push_options,
@@ -1053,7 +1057,8 @@ int push_unpushed_submodules(struct oid_array *commits,int i, ret =1 ;struct string_list needs_pushing =STRING_LIST_INIT_DUP ; -if (!find_unpushed_submodules (commits, remote->name, &needs_pushing)) +if (!find_unpushed_submodules (istate, commits, + remote->name, &needs_pushing))return 1 ;/*
@@ -1110,7 +1115,7 @@ void check_for_new_submodule_commits(struct object_id *oid)oid_array_append (&ref_tips_after_fetch, oid); } -static void calculate_changed_submodule_paths (void ) +static void calculate_changed_submodule_paths (struct index_state *istate) {struct argv_array argv =ARGV_ARRAY_INIT ;struct string_list changed_submodules =STRING_LIST_INIT_DUP ;
@@ -1131,7 +1136,7 @@ static void calculate_changed_submodule_paths(void)* Collect all submodules (whether checked out or not) for which new * commits have been recorded upstream in "changed_submodule_names". */ -collect_changed_submodules (&changed_submodules, &argv); +collect_changed_submodules (istate, &changed_submodules, &argv);for_each_string_list_item (name, &changed_submodules) {struct oid_array *commits = name->util;
@@ -1158,7 +1163,8 @@ static void calculate_changed_submodule_paths(void) initialized_fetch_ref_tips =0 ; } -int submodule_touches_in_range (struct object_id *excl_oid, +int submodule_touches_in_range (struct index_state *istate, +struct object_id *excl_oid,struct object_id *incl_oid) {struct string_list subs =STRING_LIST_INIT_DUP ;
@@ -1176,7 +1182,7 @@ int submodule_touches_in_range(struct object_id *excl_oid,argv_array_push (&args,oid_to_hex (excl_oid)); } -collect_changed_submodules (&subs, &args); +collect_changed_submodules (istate, &subs, &args); ret = subs.nr;argv_array_clear (&args);
@@ -1346,7 +1352,7 @@ int fetch_populated_submodules(struct repository *r,argv_array_push (&spf.args,"--recurse-submodules-default" );/* default value, "--submodule-prefix" and its value are added later */ -calculate_changed_submodule_paths (); +calculate_changed_submodule_paths (r->index); run_processes_parallel(max_parallel_jobs, get_next_submodule, fetch_start_failure,
submodule.h +6 -3
@@ -102,13 +102,16 @@ int add_submodule_odb(const char *path);* Checks if there are submodule changes in a..b. If a is the null OID, * checks b and all its ancestors instead. */ -int submodule_touches_in_range (struct object_id *a, +int submodule_touches_in_range (struct index_state *istate, +struct object_id *a,struct object_id *b); -int find_unpushed_submodules (struct oid_array *commits, +int find_unpushed_submodules (struct index_state *istate, +struct oid_array *commits,const char *remotes_name,struct string_list *needs_pushing);struct refspec ; -int push_unpushed_submodules(struct oid_array *commits, +int push_unpushed_submodules(struct index_state *istate, + struct oid_array *commits, const struct remote *remote, const struct refspec *rs, const struct string_list *push_options,
transport.c +6 -3
@@ -1139,7 +1139,8 @@ int transport_push(struct transport *transport,oid_array_append (&commits, &ref->new_oid); - if (!push_unpushed_submodules(&commits, + if (!push_unpushed_submodules(&the_index, + &commits, transport->remote, rs, transport->push_options,
@@ -1163,8 +1164,10 @@ int transport_push(struct transport *transport,oid_array_append (&commits, &ref->new_oid); -if (find_unpushed_submodules (&commits, transport->remote->name, - &needs_pushing)) { +if (find_unpushed_submodules (&the_index, + &commits, + transport->remote->name, + &needs_pushing)) {oid_array_clear (&commits);die_with_unpushed_submodules (&needs_pushing); }
Signature · 1 line
2.19.0.640.gcd3aa10a8a
PATCH v5 20/23 tree-diff.c: remove implicit dependency on the_index
In reply to Nguyễn Thái Ngọc DuySigned-off-by Nguyễn Thái Ngọc Duy <[email protected]>
Signed-off-by Junio C Hamano <[email protected]>
--- tree-diff.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
tree-diff.c +1 -1
@@ -605,7 +605,7 @@ static void try_to_follow_renames(const struct object_id *old_oid, choice = q->queue[0 ]; q->nr =0 ; -repo_diff_setup (the_repository, &diff_opts); +repo_diff_setup (opt->repo, &diff_opts); diff_opts.flags.recursive =1 ; diff_opts.flags.find_copies_harder =1 ; diff_opts.output_format =DIFF_FORMAT_NO_OUTPUT ;
Signature · 1 line
2.19.0.640.gcd3aa10a8a
PATCH v5 21/23 ws.c: remove implicit dependency on the_index
In reply to Nguyễn Thái Ngọc DuySigned-off-by Nguyễn Thái Ngọc Duy <[email protected]>
Signed-off-by Junio C Hamano <[email protected]>
--- apply.c | 8 +++++--- cache.h | 2 +- diff.c | 6 +++--- ws.c | 5 ++--- 4 files changed, 11 insertions(+), 10 deletions(-)
apply.c +5 -3
@@ -2131,10 +2131,12 @@ static int parse_chunk(struct apply_state *state, char *buffer, unsigned long siif (!use_patch (state, patch)) patch->ws_rule =0 ; +else if (patch->new_name) + patch->ws_rule =whitespace_rule (state->repo->index, + patch->new_name);else - patch->ws_rule =whitespace_rule (patch->new_name - ? patch->new_name - : patch->old_name); + patch->ws_rule =whitespace_rule (state->repo->index, + patch->old_name); patchsize = parse_single_patch(state, buffer + offset + hdrsize,
cache.h +1 -1
@@ -1694,7 +1694,7 @@ void shift_tree_by(const struct object_id *, const struct object_id *, struct ob/* All WS_* -- when extended, adapt diff.c emit_symbol */ #define WS_RULE_MASK 07777extern unsigned whitespace_rule_cfg; -extern unsigned whitespace_rule (const char *); +extern unsigned whitespace_rule (struct index_state *,const char *);extern unsigned parse_whitespace_rule (const char *);extern unsigned ws_check (const char *line,int len,unsigned ws_rule);extern void ws_check_emit (const char *line,int len,unsigned ws_rule,FILE *stream,const char *set,const char *reset,const char *ws);
diff.c +3 -3
@@ -1705,7 +1705,7 @@ static void emit_rewrite_diff(const char *name_a,memset (&ecbdata,0 ,sizeof (ecbdata)); ecbdata.color_diff =want_color (o->use_color); - ecbdata.ws_rule =whitespace_rule (name_b); + ecbdata.ws_rule =whitespace_rule (o->repo->index, name_b); ecbdata.opt = o;if (ecbdata.ws_rule &WS_BLANK_AT_EOF ) {mmfile_t mf1, mf2;
@@ -3480,7 +3480,7 @@ static void builtin_diff(const char *name_a, lbl[0 ] =NULL ; ecbdata.label_path = lbl; ecbdata.color_diff =want_color (o->use_color); - ecbdata.ws_rule =whitespace_rule (name_b); + ecbdata.ws_rule =whitespace_rule (o->repo->index, name_b);if (ecbdata.ws_rule &WS_BLANK_AT_EOF )check_blank_at_eof (&mf1, &mf2, &ecbdata); ecbdata.opt = o;
@@ -3640,7 +3640,7 @@ static void builtin_checkdiff(const char *name_a, const char *name_b, data.filename = name_b ? name_b : name_a; data.lineno =0 ; data.o = o; - data.ws_rule =whitespace_rule (attr_path); + data.ws_rule =whitespace_rule (o->repo->index, attr_path); data.conflict_marker_size =ll_merge_marker_size (o->repo->index, attr_path); if (fill_mmfile(o->repo, &mf1, one) < 0 ||
ws.c +2 -3
@@ -3,7 +3,6 @@* * Copyright (c) 2007 Junio C Hamano */ -#include "cache.h" #include "attr.h"
@@ -71,14 +70,14 @@ unsigned parse_whitespace_rule(const char *string)return rule; } -unsigned whitespace_rule (const char *pathname) +unsigned whitespace_rule (struct index_state *istate,const char *pathname) {static struct attr_check *attr_whitespace_rule;if (!attr_whitespace_rule) attr_whitespace_rule =attr_check_initl ("whitespace" ,NULL ); -if (!git_check_attr (&the_index, pathname, attr_whitespace_rule)) { +if (!git_check_attr (istate, pathname, attr_whitespace_rule)) {const char *value; value = attr_whitespace_rule->items[0 ].value;
Signature · 1 line
2.19.0.640.gcd3aa10a8a
PATCH v5 22/23 revision.c: remove implicit dependency on the_index
In reply to Nguyễn Thái Ngọc DuySigned-off-by Nguyễn Thái Ngọc Duy <[email protected]>
Signed-off-by Junio C Hamano <[email protected]>
--- .../technical/api-revision-walking.txt | 4 +-- bisect.c | 4 +-- builtin/add.c | 4 +-- builtin/am.c | 6 ++-- builtin/blame.c | 2 +- builtin/checkout.c | 4 +-- builtin/commit.c | 2 +- builtin/describe.c | 4 +-- builtin/diff-files.c | 2 +- builtin/diff-index.c | 2 +- builtin/diff-tree.c | 2 +- builtin/diff.c | 2 +- builtin/fast-export.c | 2 +- builtin/fmt-merge-msg.c | 2 +- builtin/log.c | 16 +++++----- builtin/merge.c | 4 +-- builtin/pack-objects.c | 2 +- builtin/prune.c | 2 +- builtin/reflog.c | 2 +- builtin/rev-list.c | 2 +- builtin/revert.c | 2 +- builtin/shortlog.c | 2 +- builtin/submodule--helper.c | 2 +- bundle.c | 4 +-- diff-lib.c | 4 +-- http-push.c | 2 +- merge-recursive.c | 2 +- pack-bitmap-write.c | 2 +- ref-filter.c | 2 +- remote.c | 2 +- revision.c | 32 +++++++++++-------- revision.h | 13 ++++++-- sequencer.c | 8 ++--- shallow.c | 2 +- submodule.c | 6 ++-- t/helper/test-revision-walking.c | 2 +- wt-status.c | 10 +++--- 37 files changed, 89 insertions(+), 78 deletions(-)
Documentation/technical/api-revision-walking.txt +2 -2
@@ -15,9 +15,9 @@ revision list. Functions --------- -`init_revisions`:: +`repo_init_revisions`:: - Initialize a rev_info structure with default values. The second + Initialize a rev_info structure with default values. The third parameter may be NULL or can be prefix path, and then the `.prefix` variable will be set to it. This is typically the first function you want to call when you want to deal with a revision list. After calling
bisect.c +2 -2
@@ -632,7 +632,7 @@ static void bisect_rev_setup(struct rev_info *revs, const char *prefix,struct argv_array rev_argv =ARGV_ARRAY_INIT ;int i; -init_revisions (revs, prefix); +repo_init_revisions (the_repository, revs, prefix); revs->abbrev =0 ; revs->commit_format =CMIT_FMT_UNSPECIFIED ;
@@ -889,7 +889,7 @@ static void show_diff_tree(const char *prefix, struct commit *commit)struct rev_info opt;/* diff-tree init */ -init_revisions (&opt, prefix); +repo_init_revisions (the_repository, &opt, prefix);git_config (git_diff_basic_config,NULL );/* no "diff" UI options */ opt.abbrev =0 ; opt.diff =1 ;
builtin/add.c +2 -2
@@ -110,7 +110,7 @@ int add_files_to_cache(const char *prefix,memset (&data,0 ,sizeof (data)); data.flags = flags; -init_revisions (&rev, prefix); +repo_init_revisions (the_repository, &rev, prefix);setup_revisions (0 ,NULL , &rev,NULL );if (pathspec)copy_pathspec (&rev.prune_data, pathspec);
@@ -232,7 +232,7 @@ static int edit_patch(int argc, const char **argv, const char *prefix)if (read_cache () <0 )die (_ ("Could not read the index" )); -init_revisions (&rev, prefix); +repo_init_revisions (the_repository, &rev, prefix); rev.diffopt.context =7 ; argc =setup_revisions (argc, argv, &rev,NULL );
builtin/am.c +3 -3
@@ -1372,7 +1372,7 @@ static void write_commit_patch(const struct am_state *state, struct commit *commFILE *fp; fp =xfopen (am_path (state,"patch" ),"w" ); -init_revisions (&rev_info,NULL ); +repo_init_revisions (the_repository, &rev_info,NULL ); rev_info.diff =1 ; rev_info.abbrev =0 ; rev_info.disable_stdin =1 ;
@@ -1407,7 +1407,7 @@ static void write_index_patch(const struct am_state *state) the_repository->hash_algo->empty_tree); fp =xfopen (am_path (state,"patch" ),"w" ); -init_revisions (&rev_info,NULL ); +repo_init_revisions (the_repository, &rev_info,NULL ); rev_info.diff =1 ; rev_info.disable_stdin =1 ; rev_info.no_commit_id =1 ;
@@ -1565,7 +1565,7 @@ static int fall_back_threeway(const struct am_state *state, const char *index_pastruct rev_info rev_info;const char *diff_filter_str ="--diff-filter=AM" ; -init_revisions (&rev_info,NULL ); +repo_init_revisions (the_repository, &rev_info,NULL ); rev_info.diffopt.output_format =DIFF_FORMAT_NAME_STATUS ;diff_opt_parse (&rev_info.diffopt, &diff_filter_str,1 , rev_info.prefix);add_pending_oid (&rev_info,"HEAD" , &our_tree,0 );
builtin/blame.c +1 -1
@@ -830,7 +830,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix)setup_default_color_by_age ();git_config (git_blame_config, &output_option); -init_revisions (&revs,NULL ); +repo_init_revisions (the_repository, &revs,NULL ); revs.date_mode = blame_date_mode; revs.diffopt.flags.allow_textconv =1 ; revs.diffopt.flags.follow_renames =1 ;
builtin/checkout.c +2 -2
@@ -392,7 +392,7 @@ static void show_local_changes(struct object *head, {struct rev_info rev;/* I think we want full paths, even if we're in a subdirectory. */ -init_revisions (&rev,NULL ); +repo_init_revisions (the_repository, &rev,NULL ); rev.diffopt.flags = opts->flags; rev.diffopt.output_format |=DIFF_FORMAT_NAME_STATUS ;diff_setup_done (&rev.diffopt);
@@ -801,7 +801,7 @@ static void orphaned_commit_warning(struct commit *old_commit, struct commit *nestruct rev_info revs;struct object *object = &old_commit->object; -init_revisions (&revs,NULL ); +repo_init_revisions (the_repository, &revs,NULL );setup_revisions (0 ,NULL , &revs,NULL ); object->flags &= ~UNINTERESTING ;
builtin/commit.c +1 -1
@@ -980,7 +980,7 @@ static const char *find_author_by_nickname(const char *name)const char *av[20 ];int ac =0 ; -init_revisions (&revs,NULL ); +repo_init_revisions (the_repository, &revs,NULL );strbuf_addf (&buf,"--author=%s" , name); av[++ac] ="--all" ; av[++ac] ="-i" ;
builtin/describe.c +2 -2
@@ -488,7 +488,7 @@ static void describe_blob(struct object_id oid, struct strbuf *dst)"--objects" ,"--in-commit-order" ,"--reverse" ,"HEAD" , NULL); -init_revisions (&revs,NULL ); +repo_init_revisions (the_repository, &revs,NULL );if (setup_revisions (args.argc, args.argv, &revs,NULL ) >1 )BUG ("setup_revisions could not handle all args?" );
@@ -636,7 +636,7 @@ int cmd_describe(int argc, const char **argv, const char *prefix)if (0 <= fd)update_index_if_able (&the_index, &index_lock); -init_revisions (&revs, prefix); +repo_init_revisions (the_repository, &revs, prefix);argv_array_pushv (&args, diff_index_args);if (setup_revisions (args.argc, args.argv, &revs,NULL ) !=1 )BUG ("malformed internal diff-index command line" );
builtin/diff-files.c +1 -1
@@ -25,7 +25,7 @@ int cmd_diff_files(int argc, const char **argv, const char *prefix)usage (diff_files_usage);git_config (git_diff_basic_config,NULL );/* no "diff" UI options */ -init_revisions (&rev, prefix); +repo_init_revisions (the_repository, &rev, prefix); rev.abbrev =0 ;precompose_argv (argc, argv);
builtin/diff-index.c +1 -1
@@ -22,7 +22,7 @@ int cmd_diff_index(int argc, const char **argv, const char *prefix)usage (diff_cache_usage);git_config (git_diff_basic_config,NULL );/* no "diff" UI options */ -init_revisions (&rev, prefix); +repo_init_revisions (the_repository, &rev, prefix); rev.abbrev =0 ;precompose_argv (argc, argv);
builtin/diff-tree.c +1 -1
@@ -110,7 +110,7 @@ int cmd_diff_tree(int argc, const char **argv, const char *prefix)usage (diff_tree_usage);git_config (git_diff_basic_config,NULL );/* no "diff" UI options */ -init_revisions (opt, prefix); +repo_init_revisions (the_repository, opt, prefix);if (read_cache () <0 )die (_ ("index file corrupt" )); opt->abbrev =0 ;
builtin/diff.c +1 -1
@@ -318,7 +318,7 @@ int cmd_diff(int argc, const char **argv, const char *prefix)git_config (git_diff_ui_config,NULL );precompose_argv (argc, argv); -init_revisions (&rev, prefix); +repo_init_revisions (the_repository, &rev, prefix);if (no_index && argc != i +2 ) {if (no_index ==DIFF_NO_INDEX_IMPLICIT ) {
builtin/fast-export.c +1 -1
@@ -1033,7 +1033,7 @@ int cmd_fast_export(int argc, const char **argv, const char *prefix)/* we handle encodings */ git_config (git_default_config,NULL ); -init_revisions (&revs, prefix); +repo_init_revisions (the_repository, &revs, prefix);init_revision_sources (&revision_sources); revs.topo_order =1 ; revs.sources = &revision_sources;
builtin/fmt-merge-msg.c +1 -1
@@ -642,7 +642,7 @@ int fmt_merge_msg(struct strbuf *in, struct strbuf *out,struct rev_info rev; head =lookup_commit_or_die (&head_oid,"HEAD" ); -init_revisions (&rev,NULL ); +repo_init_revisions (the_repository, &rev,NULL ); rev.commit_format =CMIT_FMT_ONELINE ; rev.ignore_merges =1 ; rev.limited =1 ;
builtin/log.c +8 -8
@@ -467,7 +467,7 @@ int cmd_whatchanged(int argc, const char **argv, const char *prefix)init_log_defaults ();git_config (git_log_config,NULL ); -init_revisions (&rev, prefix); +repo_init_revisions (the_repository, &rev, prefix); rev.diff =1 ; rev.simplify_history =0 ;memset (&opt,0 ,sizeof (opt));
@@ -585,7 +585,7 @@ int cmd_show(int argc, const char **argv, const char *prefix)git_config (git_log_config,NULL );memset (&match_all,0 ,sizeof (match_all)); -init_revisions (&rev, prefix); +repo_init_revisions (the_repository, &rev, prefix); rev.diff =1 ; rev.always_show_header =1 ; rev.no_walk =REVISION_WALK_NO_WALK_SORTED ;
@@ -665,7 +665,7 @@ int cmd_log_reflog(int argc, const char **argv, const char *prefix)init_log_defaults ();git_config (git_log_config,NULL ); -init_revisions (&rev, prefix); +repo_init_revisions (the_repository, &rev, prefix);init_reflog_walk (&rev.reflog_info); rev.verbose_header =1 ;memset (&opt,0 ,sizeof (opt));
@@ -704,7 +704,7 @@ int cmd_log(int argc, const char **argv, const char *prefix)init_log_defaults ();git_config (git_log_config,NULL ); -init_revisions (&rev, prefix); +repo_init_revisions (the_repository, &rev, prefix); rev.always_show_header =1 ;memset (&opt,0 ,sizeof (opt)); opt.def ="HEAD" ;
@@ -917,7 +917,7 @@ static void get_patch_ids(struct rev_info *rev, struct patch_ids *ids)init_patch_ids (the_repository, ids);/* given a range a..b get all patch ids for b..a */ -init_revisions (&check_rev, rev->prefix); +repo_init_revisions (the_repository, &check_rev, rev->prefix); check_rev.max_parents =1 ; o1->flags ^=UNINTERESTING ; o2->flags ^=UNINTERESTING ;
@@ -1367,7 +1367,7 @@ static void prepare_bases(struct base_tree_info *bases,oidcpy (&bases->base_commit, &base->object.oid); -init_revisions (&revs,NULL ); +repo_init_revisions (the_repository, &revs,NULL ); revs.max_parents =1 ; revs.topo_order =1 ;for (i =0 ; i < total; i++) {
@@ -1528,7 +1528,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix) extra_cc.strdup_strings =1 ;init_log_defaults ();git_config (git_format_config,NULL ); -init_revisions (&rev, prefix); +repo_init_revisions (the_repository, &rev, prefix); rev.commit_format =CMIT_FMT_EMAIL ; rev.expand_tabs_in_log_default =0 ; rev.verbose_header =1 ;
@@ -1939,7 +1939,7 @@ int cmd_cherry(int argc, const char **argv, const char *prefix) } } -init_revisions (&revs, prefix); +repo_init_revisions (the_repository, &revs, prefix); revs.max_parents =1 ;if (add_pending_commit (head, &revs,0 ))
builtin/merge.c +2 -2
@@ -389,7 +389,7 @@ static void squash_message(struct commit *commit, struct commit_list *remoteheadprintf (_ ("Squash commit -- not updating HEAD\n" )); -init_revisions (&rev,NULL ); +repo_init_revisions (the_repository, &rev,NULL ); rev.ignore_merges =1 ; rev.commit_format =CMIT_FMT_MEDIUM ;
@@ -911,7 +911,7 @@ static int evaluate_result(void)struct rev_info rev;/* Check how many files differ. */ -init_revisions (&rev,"" ); +repo_init_revisions (the_repository, &rev,"" );setup_revisions (0 ,NULL , &rev,NULL ); rev.diffopt.output_format |=DIFF_FORMAT_CALLBACK ;
builtin/pack-objects.c +1 -1
@@ -2989,7 +2989,7 @@ static void get_object_list(int ac, const char **av)char line[1000 ];int flags =0 ; -init_revisions (&revs,NULL ); +repo_init_revisions (the_repository, &revs,NULL ); save_commit_buffer =0 ;setup_revisions (ac, av, &revs,NULL );
builtin/prune.c +1 -1
@@ -120,7 +120,7 @@ int cmd_prune(int argc, const char **argv, const char *prefix) save_commit_buffer =0 ; read_replace_refs =0 ; ref_paranoia =1 ; -init_revisions (&revs, prefix); +repo_init_revisions (the_repository, &revs, prefix); argc =parse_options (argc, argv, prefix, options, prune_usage,0 );
builtin/reflog.c +1 -1
@@ -567,7 +567,7 @@ static int cmd_reflog_expire(int argc, const char **argv, const char *prefix)* from reflog if the repository was pruned with older git. */ if (cb.cmd.stalefix) { -init_revisions (&cb.cmd.revs, prefix); +repo_init_revisions (the_repository, &cb.cmd.revs, prefix);if (flags &EXPIRE_REFLOGS_VERBOSE )printf ("Marking reachable objects..." );mark_reachable_objects (&cb.cmd.revs,0 ,0 ,NULL );
builtin/rev-list.c +1 -1
@@ -370,7 +370,7 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)usage (rev_list_usage);git_config (git_default_config,NULL ); -init_revisions (&revs, prefix); +repo_init_revisions (the_repository, &revs, prefix); revs.abbrev =DEFAULT_ABBREV ; revs.commit_format =CMIT_FMT_UNSPECIFIED ;
builtin/revert.c +1 -1
@@ -174,7 +174,7 @@ static int run_sequencer(int argc, const char **argv, struct replay_opts *opts) }else {struct setup_revision_opt s_r_opt; opts->revs =xmalloc (sizeof (*opts->revs)); -init_revisions (opts->revs,NULL ); +repo_init_revisions (the_repository, opts->revs,NULL ); opts->revs->no_walk =REVISION_WALK_NO_WALK_UNSORTED ;if (argc <2 )usage_with_options (usage_str, options);
builtin/shortlog.c +1 -1
@@ -278,7 +278,7 @@ int cmd_shortlog(int argc, const char **argv, const char *prefix)git_config (git_default_config,NULL );shortlog_init (&log); -init_revisions (&rev, prefix); +repo_init_revisions (the_repository, &rev, prefix);parse_options_start (&ctx, argc, argv, prefix, options,PARSE_OPT_KEEP_DASHDASH |PARSE_OPT_KEEP_ARGV0 );
builtin/submodule--helper.c +1 -1
@@ -792,7 +792,7 @@ static void status_submodule(const char *path, const struct object_id *ce_oid, path, NULL);git_config (git_diff_basic_config,NULL ); -init_revisions (&rev, prefix); +repo_init_revisions (the_repository, &rev, prefix); rev.abbrev =0 ; diff_files_args.argc = setup_revisions(diff_files_args.argc, diff_files_args.argv,
bundle.c +2 -2
@@ -140,7 +140,7 @@ int verify_bundle(struct bundle_header *header, int verbose)int i, ret =0 , req_nr;const char *message =_ ("Repository lacks these prerequisite commits:" ); -init_revisions (&revs,NULL ); +repo_init_revisions (the_repository, &revs,NULL );for (i =0 ; i < p->nr; i++) {struct ref_list_entry *e = p->list + i;struct object *o =parse_object (the_repository, &e->oid);
@@ -441,7 +441,7 @@ int create_bundle(struct bundle_header *header, const char *path,/* init revs to list objects for pack-objects later */ save_commit_buffer =0 ; -init_revisions (&revs,NULL ); +repo_init_revisions (the_repository, &revs,NULL );/* write prerequisites */ if (compute_and_write_prerequisites (bundle_fd, &revs, argc, argv))
diff-lib.c +2 -2
@@ -542,7 +542,7 @@ int do_diff_cache(const struct object_id *tree_oid, struct diff_options *opt) {struct rev_info revs; -init_revisions (&revs,NULL ); +repo_init_revisions (the_repository, &revs,NULL );copy_pathspec (&revs.prune_data, &opt->pathspec); revs.diffopt = *opt;
@@ -557,7 +557,7 @@ int index_differs_from(const char *def, const struct diff_flags *flags,struct rev_info rev;struct setup_revision_opt opt; -init_revisions (&rev,NULL ); +repo_init_revisions (the_repository, &rev,NULL );memset (&opt,0 ,sizeof (opt)); opt.def = def;setup_revisions (0 ,NULL , &rev, &opt);
http-push.c +1 -1
@@ -1925,7 +1925,7 @@ int cmd_main(int argc, const char **argv)if (!push_all && !is_null_oid (&ref->old_oid))argv_array_pushf (&commit_argv,"^%s" ,oid_to_hex (&ref->old_oid)); -init_revisions (&revs,setup_git_directory ()); +repo_init_revisions (the_repository, &revs,setup_git_directory ());setup_revisions (commit_argv.argc, commit_argv.argv, &revs,NULL ); revs.edge_hint =0 ;/* just in case */
merge-recursive.c +1 -1
@@ -1115,7 +1115,7 @@ static int find_first_merges(struct object_array *result, const char *path,/* get all revisions that merge commit a */ xsnprintf (merged_revision,sizeof (merged_revision),"^%s" ,oid_to_hex (&a->object.oid)); -init_revisions (&revs,NULL ); +repo_init_revisions (the_repository, &revs,NULL ); rev_opts.submodule = path;/* FIXME: can't handle linked worktrees in submodules yet */ revs.single_worktree = path !=NULL ;
pack-bitmap-write.c +1 -1
@@ -261,7 +261,7 @@ void bitmap_writer_build(struct packing_data *to_pack)if (writer.show_progress) writer.progress =start_progress ("Building bitmaps" , writer.selected_nr); -init_revisions (&revs,NULL ); +repo_init_revisions (the_repository, &revs,NULL ); revs.tag_objects =1 ; revs.tree_objects =1 ; revs.blob_objects =1 ;
ref-filter.c +1 -1
@@ -2138,7 +2138,7 @@ static void do_merge_filter(struct ref_filter_cbdata *ref_cbdata)struct ref_array *array = ref_cbdata->array;struct commit **to_clear =xcalloc (sizeof (struct commit *), array->nr); -init_revisions (&revs,NULL ); +repo_init_revisions (the_repository, &revs,NULL );for (i =0 ; i < array->nr; i++) {struct ref_array_item *item = array->items[i];
remote.c +1 -1
@@ -1903,7 +1903,7 @@ int stat_tracking_info(struct branch *branch, int *num_ours, int *num_theirs, oid_to_hex(&theirs->object.oid));argv_array_push (&argv,"--" ); -init_revisions (&revs,NULL ); +repo_init_revisions (the_repository, &revs,NULL );setup_revisions (argv.argc, argv.argv, &revs,NULL );if (prepare_revision_walk (&revs))die ("revision walk setup failed" );
revision.c +18 -14
@@ -877,7 +877,7 @@ static void cherry_pick_list(struct commit_list *list, struct rev_info *revs)return ; left_first = left_count < right_count; -init_patch_ids (the_repository, &ids); +init_patch_ids (revs->repo, &ids); ids.diffopts.pathspec = revs->diffopt.pathspec;/* Compute patch-ids for one side */
@@ -1370,8 +1370,8 @@ void add_index_objects_to_pending(struct rev_info *revs, unsigned int flags) {struct worktree **worktrees, **p; -read_cache (); -do_add_index_objects_to_pending (revs, &the_index); +read_index (revs->repo->index); +do_add_index_objects_to_pending (revs, revs->repo->index);if (revs->single_worktree)return ;
@@ -1439,10 +1439,13 @@ static int add_parents_only(struct rev_info *revs, const char *arg_, int flags,return 1 ; } -void init_revisions (struct rev_info *revs,const char *prefix) +void repo_init_revisions (struct repository *r, +struct rev_info *revs, +const char *prefix) {memset (revs,0 ,sizeof (*revs)); + revs->repo = r; revs->abbrev =DEFAULT_ABBREV ; revs->ignore_merges =1 ; revs->simplify_history =1 ;
@@ -1464,11 +1467,11 @@ void init_revisions(struct rev_info *revs, const char *prefix) revs->commit_format =CMIT_FMT_DEFAULT ; revs->expand_tabs_in_log_default =8 ; -init_grep_defaults (the_repository); -grep_init (&revs->grep_filter, the_repository, prefix); +init_grep_defaults (revs->repo); +grep_init (&revs->grep_filter, revs->repo, prefix); revs->grep_filter.status_only =1 ; -repo_diff_setup (the_repository, &revs->diffopt); +repo_diff_setup (revs->repo, &revs->diffopt);if (prefix && !revs->diffopt.prefix) { revs->diffopt.prefix = prefix; revs->diffopt.prefix_length =strlen (prefix);
@@ -1496,6 +1499,7 @@ static void prepare_show_merge(struct rev_info *revs)struct object_id oid;const char **prune =NULL ;int i, prune_num =1 ;/* counting terminating NULL */ +struct index_state *istate = revs->repo->index;if (get_oid ("HEAD" , &oid))die ("--merge without HEAD?" );
@@ -1511,20 +1515,20 @@ static void prepare_show_merge(struct rev_info *revs)free_commit_list (bases); head->object.flags |=SYMMETRIC_LEFT ; -if (!active_nr) -read_cache (); -for (i =0 ; i < active_nr; i++) { -const struct cache_entry *ce = active_cache[i]; +if (!istate->cache_nr) +read_index (istate); +for (i =0 ; i < istate->cache_nr; i++) { +const struct cache_entry *ce = istate->cache[i];if (!ce_stage (ce))continue ; -if (ce_path_match (&the_index, ce, &revs->prune_data,NULL )) { +if (ce_path_match (istate, ce, &revs->prune_data,NULL )) { prune_num++;REALLOC_ARRAY (prune, prune_num); prune[prune_num-2 ] = ce->name; prune[prune_num-1 ] =NULL ; } -while ((i+1 < active_nr) && -ce_same_name (ce, active_cache[i+1 ])) +while ((i+1 < istate->cache_nr) && +ce_same_name (ce, istate->cache[i+1 ])) i++; }clear_pathspec (&revs->prune_data);
revision.h +10 -3
@@ -28,8 +28,9 @@#define DECORATE_SHORT_REFS 1#define DECORATE_FULL_REFS 2 -struct rev_info ;struct log_info ; +struct repository ; +struct rev_info ;struct string_list ;struct saved_parents ; define_shared_commit_slab(revision_sources, char *);
@@ -60,6 +61,7 @@ struct rev_info {/* Starting list */ struct commit_list *commits;struct object_array pending; +struct repository *repo;/* Parents of shown commits */ struct object_array boundary_commits;
@@ -248,12 +250,17 @@ extern volatile show_early_output_fn_t show_early_output;struct setup_revision_opt {const char *def;void (*tweak)(struct rev_info *,struct setup_revision_opt *); -const char *submodule; +const char *submodule;/* TODO: drop this and use rev_info->repo */ int assume_dashdash;unsigned revarg_opt; }; -void init_revisions (struct rev_info *revs,const char *prefix); +#ifndef NO_THE_REPOSITORY_COMPATIBILITY_MACROS +#define init_revisions (revs, prefix) repo_init_revisions(the_repository, revs, prefix) +#endif +void repo_init_revisions (struct repository *r, +struct rev_info *revs, +const char *prefix);int setup_revisions (int argc,const char **argv,struct rev_info *revs,struct setup_revision_opt *); void parse_revision_opt(struct rev_info *revs, struct parse_opt_ctx_t *ctx,
sequencer.c +4 -4
@@ -1172,7 +1172,7 @@ void print_commit_summary(const char *prefix, const struct object_id *oid,strbuf_release (&author_ident);strbuf_release (&committer_ident); -init_revisions (&rev, prefix); +repo_init_revisions (the_repository, &rev, prefix);setup_revisions (0 ,NULL , &rev,NULL ); rev.diff =1 ;
@@ -2595,7 +2595,7 @@ static int make_patch(struct commit *commit, struct replay_opts *opts)strbuf_addf (&buf,"%s/patch" ,get_dir (opts));memset (&log_tree_opt,0 ,sizeof (log_tree_opt)); -init_revisions (&log_tree_opt,NULL ); +repo_init_revisions (the_repository, &log_tree_opt,NULL ); log_tree_opt.abbrev =0 ; log_tree_opt.diff =1 ; log_tree_opt.diffopt.output_format =DIFF_FORMAT_PATCH ;
@@ -3506,7 +3506,7 @@ static int pick_commits(struct todo_list *todo_list, struct replay_opts *opts)struct object_id orig, head;memset (&log_tree_opt,0 ,sizeof (log_tree_opt)); -init_revisions (&log_tree_opt,NULL ); +repo_init_revisions (the_repository, &log_tree_opt,NULL ); log_tree_opt.diff =1 ; log_tree_opt.diffopt.output_format =DIFF_FORMAT_DIFFSTAT ;
@@ -4241,7 +4241,7 @@ int sequencer_make_script(FILE *out, int argc, const char **argv,const char *insn = flags &TODO_LIST_ABBREVIATE_CMDS ?"p" :"pick" ;int rebase_merges = flags &TODO_LIST_REBASE_MERGES ; -init_revisions (&revs,NULL ); +repo_init_revisions (the_repository, &revs,NULL ); revs.verbose_header =1 ;if (!rebase_merges) revs.max_parents =1 ;
shallow.c +1 -1
@@ -184,7 +184,7 @@ struct commit_list *get_shallow_commits_by_rev_list(int ac, const char **av,is_repository_shallow (the_repository);/* make sure shallows are read */ -init_revisions (&revs,NULL ); +repo_init_revisions (the_repository, &revs,NULL ); save_commit_buffer =0 ;setup_revisions (ac, av, &revs,NULL );
submodule.c +3 -3
@@ -428,7 +428,7 @@ static int prepare_submodule_summary(struct rev_info *rev, const char *path, {struct commit_list *list; -init_revisions (rev,NULL ); +repo_init_revisions (the_repository, rev,NULL );setup_revisions (0 ,NULL , rev,NULL ); rev->left_right =1 ; rev->first_parent_only =1 ;
@@ -773,7 +773,7 @@ static void collect_changed_submodules(struct index_state *istate,struct rev_info rev;const struct commit *commit; -init_revisions (&rev,NULL ); +repo_init_revisions (the_repository, &rev,NULL );setup_revisions (argv->argc, argv->argv, &rev,NULL );if (prepare_revision_walk (&rev))die ("revision walk setup failed" );
@@ -784,7 +784,7 @@ static void collect_changed_submodules(struct index_state *istate, data.changed = changed; data.commit_oid = &commit->object.oid; -init_revisions (&diff_rev,NULL ); +repo_init_revisions (the_repository, &diff_rev,NULL ); diff_rev.diffopt.output_format |=DIFF_FORMAT_CALLBACK ; diff_rev.diffopt.format_callback = collect_changed_submodules_cb; diff_rev.diffopt.format_callback_data = &data;
t/helper/test-revision-walking.c +1 -1
@@ -32,7 +32,7 @@ static int run_revision_walk(void)int argc =ARRAY_SIZE (argv) -1 ;int got_revision =0 ; -init_revisions (&rev,NULL ); +repo_init_revisions (the_repository, &rev,NULL );setup_revisions (argc, argv, &rev,NULL );if (prepare_revision_walk (&rev))die ("revision walk setup failed" );
wt-status.c +5 -5
@@ -582,7 +582,7 @@ static void wt_status_collect_changes_worktree(struct wt_status *s) {struct rev_info rev; -init_revisions (&rev,NULL ); +repo_init_revisions (the_repository, &rev,NULL );setup_revisions (0 ,NULL , &rev,NULL ); rev.diffopt.output_format |=DIFF_FORMAT_CALLBACK ; rev.diffopt.flags.dirty_submodules =1 ;
@@ -607,7 +607,7 @@ static void wt_status_collect_changes_index(struct wt_status *s)struct rev_info rev;struct setup_revision_opt opt; -init_revisions (&rev,NULL ); +repo_init_revisions (the_repository, &rev,NULL );memset (&opt,0 ,sizeof (opt)); opt.def = s->is_initial ?empty_tree_oid_hex () : s->reference;setup_revisions (0 ,NULL , &rev, &opt);
@@ -982,7 +982,7 @@ static void wt_longstatus_print_verbose(struct wt_status *s)int dirty_submodules;const char *c =color (WT_STATUS_HEADER , s); -init_revisions (&rev,NULL ); +repo_init_revisions (the_repository, &rev,NULL ); rev.diffopt.flags.allow_textconv =1 ; rev.diffopt.ita_invisible_in_index =1 ;
@@ -2314,7 +2314,7 @@ int has_unstaged_changes(int ignore_submodules)struct rev_info rev_info;int result; -init_revisions (&rev_info,NULL ); +repo_init_revisions (the_repository, &rev_info,NULL );if (ignore_submodules) { rev_info.diffopt.flags.ignore_submodules =1 ; rev_info.diffopt.flags.override_submodule_config =1 ;
@@ -2336,7 +2336,7 @@ int has_uncommitted_changes(int ignore_submodules)if (is_cache_unborn ())return 0 ; -init_revisions (&rev_info,NULL ); +repo_init_revisions (the_repository, &rev_info,NULL );if (ignore_submodules) rev_info.diffopt.flags.ignore_submodules =1 ; rev_info.diffopt.flags.quick =1 ;
Signature · 1 line
2.19.0.640.gcd3aa10a8a
PATCH v5 23/23 revision.c: reduce implicit dependency the_repository
In reply to Nguyễn Thái Ngọc DuySigned-off-by Nguyễn Thái Ngọc Duy <[email protected]>
Signed-off-by Junio C Hamano <[email protected]>
--- list-objects.c | 8 +++++--- revision.c | 44 +++++++++++++++++++++++--------------------- revision.h | 2 +- 3 files changed, 29 insertions(+), 25 deletions(-)
list-objects.c +5 -3
@@ -196,7 +196,7 @@ static void mark_edge_parents_uninteresting(struct commit *commit,struct commit *parent = parents->item;if (!(parent->object.flags &UNINTERESTING ))continue ; -mark_tree_uninteresting (get_commit_tree (parent)); +mark_tree_uninteresting (revs->repo,get_commit_tree (parent));if (revs->edge_hint && !(parent->object.flags &SHOWN )) { parent->object.flags |=SHOWN ;show_edge (parent);
@@ -213,7 +213,8 @@ void mark_edges_uninteresting(struct rev_info *revs, show_edge_fn show_edge)struct commit *commit = list->item;if (commit->object.flags &UNINTERESTING ) { -mark_tree_uninteresting (get_commit_tree (commit)); +mark_tree_uninteresting (revs->repo, +get_commit_tree (commit));if (revs->edge_hint_aggressive && !(commit->object.flags &SHOWN )) { commit->object.flags |=SHOWN ;show_edge (commit);
@@ -228,7 +229,8 @@ void mark_edges_uninteresting(struct rev_info *revs, show_edge_fn show_edge)struct commit *commit = (struct commit *)obj;if (obj->type !=OBJ_COMMIT || !(obj->flags &UNINTERESTING ))continue ; -mark_tree_uninteresting (get_commit_tree (commit)); +mark_tree_uninteresting (revs->repo, +get_commit_tree (commit));if (!(obj->flags &SHOWN )) { obj->flags |=SHOWN ;show_edge (commit);
revision.c +23 -21
149 lines not on this page · raw message
revision.h +1 -1
@@ -280,7 +280,7 @@ void put_revision_mark(const struct rev_info *revs, const struct commit *commit);void mark_parents_uninteresting (struct commit *commit); -void mark_tree_uninteresting (struct tree *tree); +void mark_tree_uninteresting (struct repository *r,struct tree *tree);void show_object_with_name (FILE *,struct object *,const char *);
Signature · 1 line
2.19.0.640.gcd3aa10a8a