From 65e7a4478c202734b604662bad739adedeb6dfca Mon Sep 17 00:00:00 2001 From: Jeff King Date: Sat, 17 Aug 2024 03:26:44 -0400 Subject: [PATCH 1/5] refs: drop some unused parameters from create_symref_lock() This function was factored out in 57d0b1e2ea (files-backend: extract out `create_symref_lock()`, 2024-05-07), but we never look at the ref_store or refname parameters. We just need the path, which is already contained in the lockfile struct. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- refs/files-backend.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c index 8d6ec9458d..1cff65f6ae 100644 --- a/refs/files-backend.c +++ b/refs/files-backend.c @@ -1961,9 +1961,8 @@ static int create_ref_symlink(struct ref_lock *lock, const char *target) return ret; } -static int create_symref_lock(struct files_ref_store *refs, - struct ref_lock *lock, const char *refname, - const char *target, struct strbuf *err) +static int create_symref_lock(struct ref_lock *lock, const char *target, + struct strbuf *err) { if (!fdopen_lock_file(&lock->lk, "w")) { strbuf_addf(err, "unable to fdopen %s: %s", @@ -2579,8 +2578,7 @@ static int lock_ref_for_update(struct files_ref_store *refs, } if (update->new_target && !(update->flags & REF_LOG_ONLY)) { - if (create_symref_lock(refs, lock, update->refname, - update->new_target, err)) { + if (create_symref_lock(lock, update->new_target, err)) { ret = TRANSACTION_GENERIC_ERROR; goto out; } From ecc6fa9ae964daf333f5e64cdff6f5232139f440 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Sat, 17 Aug 2024 03:26:53 -0400 Subject: [PATCH 2/5] pack-bitmap: load writer config from repository parameter In bitmap_writer_init(), we take a repository parameter but ever look at it. Most of the initialization here is independent of the repository, but we do load some config. So let's pass the repo we get down to load_pseudo_merges_from_config(), which in turn can use repo_config(), rather than depending on the_repository via git_config(). The outcome is the same, since all callers pass in the_repository anyway. But it takes us a step closer to getting rid of the global, and as a bonus it silences an unused parameter warning. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- pack-bitmap-write.c | 2 +- pseudo-merge.c | 5 +++-- pseudo-merge.h | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/pack-bitmap-write.c b/pack-bitmap-write.c index bf96c80898..7787600234 100644 --- a/pack-bitmap-write.c +++ b/pack-bitmap-write.c @@ -51,7 +51,7 @@ void bitmap_writer_init(struct bitmap_writer *writer, struct repository *r) string_list_init_dup(&writer->pseudo_merge_groups); - load_pseudo_merges_from_config(&writer->pseudo_merge_groups); + load_pseudo_merges_from_config(r, &writer->pseudo_merge_groups); } static void free_pseudo_merge_commit_idx(struct pseudo_merge_commit_idx *idx) diff --git a/pseudo-merge.c b/pseudo-merge.c index 77a83b9c5c..1d7f5381a4 100644 --- a/pseudo-merge.c +++ b/pseudo-merge.c @@ -183,11 +183,12 @@ done: return ret; } -void load_pseudo_merges_from_config(struct string_list *list) +void load_pseudo_merges_from_config(struct repository *r, + struct string_list *list) { struct string_list_item *item; - git_config(pseudo_merge_config, list); + repo_config(r, pseudo_merge_config, list); for_each_string_list_item(item, list) { struct pseudo_merge_group *group = item->util; diff --git a/pseudo-merge.h b/pseudo-merge.h index 2aca01d056..3aecba772b 100644 --- a/pseudo-merge.h +++ b/pseudo-merge.h @@ -10,6 +10,7 @@ struct commit; struct string_list; struct bitmap_index; struct bitmap_writer; +struct repository; /* * A pseudo-merge group tracks the set of non-bitmapped reference tips @@ -72,7 +73,7 @@ struct pseudo_merge_matches { * entry keys are the pseudo-merge group names, and the values are * pointers to the pseudo_merge_group structure itself. */ -void load_pseudo_merges_from_config(struct string_list *list); +void load_pseudo_merges_from_config(struct repository *r, struct string_list *list); /* * A pseudo-merge commit index (pseudo_merge_commit_idx) maps a From 47564945046f8cda634ee72c5b3838c1b0aa4582 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Sat, 17 Aug 2024 03:29:37 -0400 Subject: [PATCH 3/5] pack-bitmap: drop unused parameters from select_pseudo_merges() We take the array of indexed_commits (and its length), but there's no need. The selection is based on ref reachability, not the linearized set of commits we're packing. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- pack-bitmap-write.c | 2 +- pseudo-merge.c | 3 +-- pseudo-merge.h | 3 +-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/pack-bitmap-write.c b/pack-bitmap-write.c index 7787600234..9b9ca1cc36 100644 --- a/pack-bitmap-write.c +++ b/pack-bitmap-write.c @@ -737,7 +737,7 @@ void bitmap_writer_select_commits(struct bitmap_writer *writer, stop_progress(&writer->progress); - select_pseudo_merges(writer, indexed_commits, indexed_commits_nr); + select_pseudo_merges(writer); } diff --git a/pseudo-merge.c b/pseudo-merge.c index 1d7f5381a4..c952a7cba9 100644 --- a/pseudo-merge.c +++ b/pseudo-merge.c @@ -425,8 +425,7 @@ static void sort_pseudo_merge_matches(struct pseudo_merge_matches *matches) QSORT(matches->unstable, matches->unstable_nr, commit_date_cmp); } -void select_pseudo_merges(struct bitmap_writer *writer, - struct commit **commits, size_t commits_nr) +void select_pseudo_merges(struct bitmap_writer *writer) { struct progress *progress = NULL; uint32_t i; diff --git a/pseudo-merge.h b/pseudo-merge.h index 3aecba772b..4b5febaa63 100644 --- a/pseudo-merge.h +++ b/pseudo-merge.h @@ -95,8 +95,7 @@ struct pseudo_merge_commit_idx { * * Optionally shows a progress meter. */ -void select_pseudo_merges(struct bitmap_writer *writer, - struct commit **commits, size_t commits_nr); +void select_pseudo_merges(struct bitmap_writer *writer); /* * Represents a serialized view of a file containing pseudo-merge(s) From 4d7de2cf6e4dd453b0aa1760703728b2fdb75b45 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Sat, 17 Aug 2024 03:29:45 -0400 Subject: [PATCH 4/5] ref-filter: drop unused parameters from email_atom_option_parser() This code was extracted from person_email_atom_parser() in a3d2e83a17 (ref-filter: add mailmap support, 2023-09-25), but the part that was extracted doesn't care about the atom struct or the error strbuf. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- ref-filter.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ref-filter.c b/ref-filter.c index 6d8b591930..2d7a65a56b 100644 --- a/ref-filter.c +++ b/ref-filter.c @@ -742,8 +742,7 @@ static int person_name_atom_parser(struct ref_format *format UNUSED, return 0; } -static int email_atom_option_parser(struct used_atom *atom, - const char **arg, struct strbuf *err) +static int email_atom_option_parser(const char **arg) { if (!*arg) return EO_RAW; @@ -761,7 +760,7 @@ static int person_email_atom_parser(struct ref_format *format UNUSED, const char *arg, struct strbuf *err) { for (;;) { - int opt = email_atom_option_parser(atom, &arg, err); + int opt = email_atom_option_parser(&arg); const char *bad_arg = arg; if (opt < 0) From 72c9793c154edbde16085f0f04db970e082c7f0b Mon Sep 17 00:00:00 2001 From: Jeff King Date: Sat, 17 Aug 2024 03:29:49 -0400 Subject: [PATCH 5/5] diff-lib: drop unused index argument from get_stat_data() The "struct index_state" parameter passed to get_stat_data() has been unused since we stopped passing it to check_removed() in 6a044a2048 (diff-lib: fix check_removed when fsmonitor is on, 2023-09-11). We can just drop it, which in turns lets us simplify our callers a bit. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- diff-lib.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/diff-lib.c b/diff-lib.c index 7a1eb63757..a680768ee7 100644 --- a/diff-lib.c +++ b/diff-lib.c @@ -308,8 +308,7 @@ static void diff_index_show_file(struct rev_info *revs, oid, oid_valid, ce->name, dirty_submodule); } -static int get_stat_data(const struct index_state *istate, - const struct cache_entry *ce, +static int get_stat_data(const struct cache_entry *ce, const struct object_id **oidp, unsigned int *modep, int cached, int match_missing, @@ -352,7 +351,6 @@ static void show_new_file(struct rev_info *revs, const struct object_id *oid; unsigned int mode; unsigned dirty_submodule = 0; - struct index_state *istate = revs->diffopt.repo->index; if (new_file && S_ISSPARSEDIR(new_file->ce_mode)) { diff_tree_oid(NULL, &new_file->oid, new_file->name, &revs->diffopt); @@ -363,7 +361,7 @@ static void show_new_file(struct rev_info *revs, * New file in the index: it might actually be different in * the working tree. */ - if (get_stat_data(istate, new_file, &oid, &mode, cached, match_missing, + if (get_stat_data(new_file, &oid, &mode, cached, match_missing, &dirty_submodule, &revs->diffopt) < 0) return; @@ -379,7 +377,6 @@ static int show_modified(struct rev_info *revs, unsigned int mode, oldmode; const struct object_id *oid; unsigned dirty_submodule = 0; - struct index_state *istate = revs->diffopt.repo->index; assert(S_ISSPARSEDIR(old_entry->ce_mode) == S_ISSPARSEDIR(new_entry->ce_mode)); @@ -395,7 +392,7 @@ static int show_modified(struct rev_info *revs, return 0; } - if (get_stat_data(istate, new_entry, &oid, &mode, cached, match_missing, + if (get_stat_data(new_entry, &oid, &mode, cached, match_missing, &dirty_submodule, &revs->diffopt) < 0) { if (report_missing) diff_index_show_file(revs, "-", old_entry,