From a64215b6cd5e67939187475c5b248dc5d13e3d60 Mon Sep 17 00:00:00 2001 From: Elijah Newren Date: Fri, 24 Feb 2023 00:09:30 +0000 Subject: object.h: stop depending on cache.h; make cache.h depend on object.h Things should be able to depend on object.h without pulling in all of cache.h. Move an enum to allow this. Note that a couple files previously depended on things brought in through cache.h indirectly (revision.h -> commit.h -> object.h -> cache.h). As such, this change requires making existing dependencies more explicit in half a dozen files. The inclusion of strbuf.h in some headers if of particular note: these headers directly embedded a strbuf in some new structs, meaning they should have been including strbuf.h all along but were indirectly getting the necessary definitions. Signed-off-by: Elijah Newren Signed-off-by: Junio C Hamano --- diff.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'diff.h') diff --git a/diff.h b/diff.h index 41eb2c3d42..b90036f529 100644 --- a/diff.h +++ b/diff.h @@ -8,6 +8,7 @@ #include "pathspec.h" #include "object.h" #include "oidset.h" +#include "strbuf.h" /** * The diff API is for programs that compare two sets of files (e.g. two trees, @@ -71,7 +72,6 @@ struct oid_array; struct option; struct repository; struct rev_info; -struct strbuf; struct userdiff_driver; typedef int (*pathchange_fn_t)(struct diff_options *options, -- cgit v1.3 From f524970185963a180ecf3a750a31405c4d0de484 Mon Sep 17 00:00:00 2001 From: Elijah Newren Date: Fri, 24 Feb 2023 00:09:36 +0000 Subject: diff.h: remove unnecessary include of object.h Signed-off-by: Elijah Newren Signed-off-by: Junio C Hamano --- diff.h | 1 - 1 file changed, 1 deletion(-) (limited to 'diff.h') diff --git a/diff.h b/diff.h index b90036f529..f80bd297ca 100644 --- a/diff.h +++ b/diff.h @@ -6,7 +6,6 @@ #include "tree-walk.h" #include "pathspec.h" -#include "object.h" #include "oidset.h" #include "strbuf.h" -- cgit v1.3 From 6799aadfdf484135476aaf74f5d2eb825d9f00e8 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Thu, 9 Mar 2023 01:07:06 -0500 Subject: diff: factor out src/dst prefix setup We directly manipulate diffopt's a_prefix and b_prefix to set up either the default "a/foo" prefix or the "--no-prefix" variant. Although this is only a few lines, it's worth pulling these into their own functions. That lets us avoid one repetition already in this patch, but will also give us a cleaner interface for callers which want to tweak this setting. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- diff.c | 19 ++++++++++++++----- diff.h | 2 ++ 2 files changed, 16 insertions(+), 5 deletions(-) (limited to 'diff.h') diff --git a/diff.c b/diff.c index 469e18aed2..750d1b1a6c 100644 --- a/diff.c +++ b/diff.c @@ -3374,6 +3374,17 @@ void diff_set_mnemonic_prefix(struct diff_options *options, const char *a, const options->b_prefix = b; } +void diff_set_noprefix(struct diff_options *options) +{ + options->a_prefix = options->b_prefix = ""; +} + +void diff_set_default_prefix(struct diff_options *options) +{ + options->a_prefix = "a/"; + options->b_prefix = "b/"; +} + struct userdiff_driver *get_textconv(struct repository *r, struct diff_filespec *one) { @@ -4674,10 +4685,9 @@ void repo_diff_setup(struct repository *r, struct diff_options *options) options->flags.ignore_untracked_in_submodules = 1; if (diff_no_prefix) { - options->a_prefix = options->b_prefix = ""; + diff_set_noprefix(options); } else if (!diff_mnemonic_prefix) { - options->a_prefix = "a/"; - options->b_prefix = "b/"; + diff_set_default_prefix(options); } options->color_moved = diff_color_moved_default; @@ -5261,8 +5271,7 @@ static int diff_opt_no_prefix(const struct option *opt, BUG_ON_OPT_NEG(unset); BUG_ON_OPT_ARG(optarg); - options->a_prefix = ""; - options->b_prefix = ""; + diff_set_noprefix(options); return 0; } diff --git a/diff.h b/diff.h index 8d770b1d57..2af10bc585 100644 --- a/diff.h +++ b/diff.h @@ -497,6 +497,8 @@ void diff_tree_combined(const struct object_id *oid, const struct oid_array *par void diff_tree_combined_merge(const struct commit *commit, struct rev_info *rev); void diff_set_mnemonic_prefix(struct diff_options *options, const char *a, const char *b); +void diff_set_noprefix(struct diff_options *options); +void diff_set_default_prefix(struct diff_options *options); int diff_can_quit_early(struct diff_options *); -- cgit v1.3 From 085390328f5fe1dfba67039b1fd6cc51546a4e41 Mon Sep 17 00:00:00 2001 From: Ævar Arnfjörð Bjarmason Date: Tue, 28 Mar 2023 15:58:49 +0200 Subject: cocci: apply the "diff.h" part of "the_repository.pending" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Apply the part of "the_repository.pending.cocci" pertaining to "diff.h". Signed-off-by: Ævar Arnfjörð Bjarmason Signed-off-by: Junio C Hamano --- builtin/log.c | 2 +- builtin/rebase.c | 2 +- builtin/stash.c | 2 +- contrib/coccinelle/the_repository.cocci | 4 ++++ contrib/coccinelle/the_repository.pending.cocci | 4 ---- diff.h | 3 --- log-tree.c | 2 +- range-diff.c | 2 +- 8 files changed, 9 insertions(+), 12 deletions(-) (limited to 'diff.h') diff --git a/builtin/log.c b/builtin/log.c index f249aca049..b76a1c82d8 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -1371,7 +1371,7 @@ static void make_cover_letter(struct rev_info *rev, int use_separate_file, .other_arg = &other_arg }; - diff_setup(&opts); + repo_diff_setup(the_repository, &opts); opts.file = rev->diffopt.file; opts.use_color = rev->diffopt.use_color; diff_setup_done(&opts); diff --git a/builtin/rebase.c b/builtin/rebase.c index eba48bffaa..76cce94373 100644 --- a/builtin/rebase.c +++ b/builtin/rebase.c @@ -1786,7 +1786,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix) } /* We want color (if set), but no pager */ - diff_setup(&opts); + repo_diff_setup(the_repository, &opts); opts.stat_width = -1; /* use full terminal width */ opts.stat_graph_width = -1; /* respect statGraphWidth config */ opts.output_format |= diff --git a/builtin/stash.c b/builtin/stash.c index ed1275829e..6c062e5204 100644 --- a/builtin/stash.c +++ b/builtin/stash.c @@ -427,7 +427,7 @@ static void unstage_changes_unless_new(struct object_id *orig_tree) * to the index before a merge was run) and the current index * (reflecting the changes brought in by the merge). */ - diff_setup(&diff_opts); + repo_diff_setup(the_repository, &diff_opts); diff_opts.flags.recursive = 1; diff_opts.detect_rename = 0; diff_opts.output_format = DIFF_FORMAT_NO_OUTPUT; diff --git a/contrib/coccinelle/the_repository.cocci b/contrib/coccinelle/the_repository.cocci index 0cdf3f4630..3c0bd8781e 100644 --- a/contrib/coccinelle/the_repository.cocci +++ b/contrib/coccinelle/the_repository.cocci @@ -73,6 +73,10 @@ | - get_commit_tree + repo_get_commit_tree +// diff.h +| +- diff_setup ++ repo_diff_setup ) ( + the_repository, diff --git a/contrib/coccinelle/the_repository.pending.cocci b/contrib/coccinelle/the_repository.pending.cocci index bf19e6a248..00461ee86b 100644 --- a/contrib/coccinelle/the_repository.pending.cocci +++ b/contrib/coccinelle/the_repository.pending.cocci @@ -5,11 +5,7 @@ @@ @@ ( -// diff.h -- diff_setup -+ repo_diff_setup // object-store.h -| - read_object_file + repo_read_object_file | diff --git a/diff.h b/diff.h index 8d770b1d57..8b510eb579 100644 --- a/diff.h +++ b/diff.h @@ -535,9 +535,6 @@ int git_diff_basic_config(const char *var, const char *value, void *cb); int git_diff_heuristic_config(const char *var, const char *value, void *cb); void init_diff_ui_defaults(void); int git_diff_ui_config(const char *var, const char *value, void *cb); -#ifndef NO_THE_REPOSITORY_COMPATIBILITY_MACROS -#define diff_setup(diffopts) repo_diff_setup(the_repository, diffopts) -#endif void repo_diff_setup(struct repository *, struct diff_options *); struct option *add_diff_options(const struct option *, struct diff_options *); int diff_opt_parse(struct diff_options *, const char **, int, const char *); diff --git a/log-tree.c b/log-tree.c index 4bebb86eca..1bd4d6ab00 100644 --- a/log-tree.c +++ b/log-tree.c @@ -849,7 +849,7 @@ void show_log(struct rev_info *opt) * Pass minimum required diff-options to range-diff; others * can be added later if deemed desirable. */ - diff_setup(&opts); + repo_diff_setup(the_repository, &opts); opts.file = opt->diffopt.file; opts.use_color = opt->diffopt.use_color; diff_setup_done(&opts); diff --git a/range-diff.c b/range-diff.c index 5bcf966f6c..15d0bc35a8 100644 --- a/range-diff.c +++ b/range-diff.c @@ -485,7 +485,7 @@ static void output(struct string_list *a, struct string_list *b, if (range_diff_opts->diffopt) memcpy(&opts, range_diff_opts->diffopt, sizeof(opts)); else - diff_setup(&opts); + repo_diff_setup(the_repository, &opts); opts.no_free = 1; if (!opts.output_format) -- cgit v1.3 From c7c33f50bd1bb168a8c69157a0735ded84084f20 Mon Sep 17 00:00:00 2001 From: Ævar Arnfjörð Bjarmason Date: Tue, 28 Mar 2023 15:58:57 +0200 Subject: post-cocci: adjust comments for recent repo_* migration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In preceding commits we changed many calls to macros that were providing a "the_repository" argument to invoke corresponding repo_*() function instead. Let's follow-up and adjust references to those in comments, which coccinelle didn't (and inherently can't) catch. Signed-off-by: Ævar Arnfjörð Bjarmason Signed-off-by: Junio C Hamano --- builtin/branch.c | 2 +- builtin/shortlog.c | 2 +- cache.h | 4 ++-- commit.h | 4 ++-- diff.h | 2 +- object-file.c | 2 +- object-store.h | 4 ++-- pretty.c | 2 +- refs.c | 2 +- sequencer.c | 6 +++--- strbuf.h | 6 +++--- 11 files changed, 18 insertions(+), 18 deletions(-) (limited to 'diff.h') diff --git a/builtin/branch.c b/builtin/branch.c index bbcfb34b3c..45910039e6 100644 --- a/builtin/branch.c +++ b/builtin/branch.c @@ -156,7 +156,7 @@ static int branch_merged(int kind, const char *name, /* * After the safety valve is fully redefined to "check with * upstream, if any, otherwise with HEAD", we should just - * return the result of the in_merge_bases() above without + * return the result of the repo_in_merge_bases() above without * any of the following code, but during the transition period, * a gentle reminder is in order. */ diff --git a/builtin/shortlog.c b/builtin/shortlog.c index 62f91b8b93..f287a6acd0 100644 --- a/builtin/shortlog.c +++ b/builtin/shortlog.c @@ -176,7 +176,7 @@ static void insert_records_from_trailers(struct shortlog *log, return; /* - * Using format_commit_message("%B") would be simpler here, but + * Using repo_format_commit_message("%B") would be simpler here, but * this saves us copying the message. */ commit_buffer = repo_logmsg_reencode(the_repository, commit, NULL, diff --git a/cache.h b/cache.h index d835ac8b4d..555354e196 100644 --- a/cache.h +++ b/cache.h @@ -443,7 +443,7 @@ void validate_cache_entries(const struct index_state *istate); /* * Bulk prefetch all missing cache entries that are not GITLINKs and that match * the given predicate. This function should only be called if - * has_promisor_remote() returns true. + * repo_has_promisor_remote() returns true. */ typedef int (*must_prefetch_predicate)(const struct cache_entry *); void prefetch_cache_entries(const struct index_state *istate, @@ -1201,7 +1201,7 @@ void check_repository_format(struct repository_format *fmt); * terminated. * * The non-`_r` version returns a static buffer which remains valid until 4 - * more calls to find_unique_abbrev are made. + * more calls to repo_find_unique_abbrev are made. * * The `_r` variant writes to a buffer supplied by the caller, which must be at * least `GIT_MAX_HEXSZ + 1` bytes. The return value is the number of bytes diff --git a/commit.h b/commit.h index e98ee6e698..d4adf11101 100644 --- a/commit.h +++ b/commit.h @@ -130,7 +130,7 @@ const void *get_cached_commit_buffer(struct repository *, const struct commit *, /* * Get the commit's object contents, either from cache or by reading the object * from disk. The resulting memory should not be modified, and must be given - * to unuse_commit_buffer when the caller is done. + * to repo_unuse_commit_buffer when the caller is done. */ const void *repo_get_commit_buffer(struct repository *r, const struct commit *, @@ -139,7 +139,7 @@ const void *repo_get_commit_buffer(struct repository *r, /* * Tell the commit subsystem that we are done with a particular commit buffer. * The commit and buffer should be the input and return value, respectively, - * from an earlier call to get_commit_buffer. The buffer may or may not be + * from an earlier call to repo_get_commit_buffer. The buffer may or may not be * freed by this call; callers should not access the memory afterwards. */ void repo_unuse_commit_buffer(struct repository *r, diff --git a/diff.h b/diff.h index 8b510eb579..0aa36e8126 100644 --- a/diff.h +++ b/diff.h @@ -614,7 +614,7 @@ void diff_warn_rename_limit(const char *varname, int needed, int degraded_cc); #define DIFF_STATUS_FILTER_BROKEN 'B' /* - * This is different from find_unique_abbrev() in that + * This is different from repo_find_unique_abbrev() in that * it stuffs the result with dots for alignment. */ const char *diff_aligned_abbrev(const struct object_id *sha1, int); diff --git a/object-file.c b/object-file.c index 141cf85f25..47c5268164 100644 --- a/object-file.c +++ b/object-file.c @@ -267,7 +267,7 @@ int hash_algo_by_length(int len) /* * This is meant to hold a *small* number of objects that you would - * want read_object_file() to be able to return, but yet you do not want + * want repo_read_object_file() to be able to return, but yet you do not want * to write them into the object store (e.g. a browse-only * application). */ diff --git a/object-store.h b/object-store.h index b47849d4e7..9217ae8306 100644 --- a/object-store.h +++ b/object-store.h @@ -216,7 +216,7 @@ struct raw_object_store { /* * A fast, rough count of the number of objects in the repository. * These two fields are not meant for direct access. Use - * approximate_object_count() instead. + * repo_approximate_object_count() instead. */ unsigned long approximate_object_count; unsigned approximate_object_count_valid : 1; @@ -343,7 +343,7 @@ void assert_oid_type(const struct object_id *oid, enum object_type expect); /* * Enabling the object read lock allows multiple threads to safely call the - * following functions in parallel: repo_read_object_file(), read_object_file(), + * following functions in parallel: repo_read_object_file(), * read_object_with_reference(), oid_object_info() and oid_object_info_extended(). * * obj_read_lock() and obj_read_unlock() may also be used to protect other diff --git a/pretty.c b/pretty.c index 076d1c363e..23ac06b93f 100644 --- a/pretty.c +++ b/pretty.c @@ -719,7 +719,7 @@ const char *repo_logmsg_reencode(struct repository *r, * Otherwise, we still want to munge the encoding header in the * result, which will be done by modifying the buffer. If we * are using a fresh copy, we can reuse it. But if we are using - * the cached copy from get_commit_buffer, we need to duplicate it + * the cached copy from repo_get_commit_buffer, we need to duplicate it * to avoid munging the cached copy. */ if (msg == get_cached_commit_buffer(r, commit, NULL)) diff --git a/refs.c b/refs.c index aeae31c972..cd7537bce6 100644 --- a/refs.c +++ b/refs.c @@ -1821,7 +1821,7 @@ const char *refs_resolve_ref_unsafe(struct ref_store *refs, return NULL; /* - * dwim_ref() uses REF_ISBROKEN to distinguish between + * repo_dwim_ref() uses REF_ISBROKEN to distinguish between * missing refs and refs that were present but invalid, * to complain about the latter to stderr. * diff --git a/sequencer.c b/sequencer.c index aa3ebb47d9..fb5a540fa0 100644 --- a/sequencer.c +++ b/sequencer.c @@ -768,9 +768,9 @@ static int is_index_unchanged(struct repository *r) /* * If head_commit is NULL, check_commit, called from * lookup_commit, would have indicated that head_commit is not - * a commit object already. parse_commit() will return failure + * a commit object already. repo_parse_commit() will return failure * without further complaints in such a case. Otherwise, if - * the commit is invalid, parse_commit() will complain. So + * the commit is invalid, repo_parse_commit() will complain. So * there is nothing for us to say here. Just return failure. */ if (repo_parse_commit(the_repository, head_commit)) @@ -5365,7 +5365,7 @@ static const char *label_oid(struct object_id *oid, const char *label, * For "uninteresting" commits, i.e. commits that are not to be * rebased, and which can therefore not be labeled, we use a unique * abbreviation of the commit name. This is slightly more complicated - * than calling find_unique_abbrev() because we also need to make + * than calling repo_find_unique_abbrev() because we also need to make * sure that the abbreviation does not conflict with any other * label. * diff --git a/strbuf.h b/strbuf.h index f6dbb9681e..b980f9edc6 100644 --- a/strbuf.h +++ b/strbuf.h @@ -631,7 +631,7 @@ void strbuf_add_separated_string_list(struct strbuf *str, void strbuf_list_free(struct strbuf **list); /** - * Add the abbreviation, as generated by find_unique_abbrev, of `sha1` to + * Add the abbreviation, as generated by repo_find_unique_abbrev(), of `sha1` to * the strbuf `sb`. */ struct repository; @@ -706,14 +706,14 @@ static inline void strbuf_complete_line(struct strbuf *sb) /* * Copy "name" to "sb", expanding any special @-marks as handled by - * interpret_branch_name(). The result is a non-qualified branch name + * repo_interpret_branch_name(). The result is a non-qualified branch name * (so "foo" or "origin/master" instead of "refs/heads/foo" or * "refs/remotes/origin/master"). * * Note that the resulting name may not be a syntactically valid refname. * * If "allowed" is non-zero, restrict the set of allowed expansions. See - * interpret_branch_name() for details. + * repo_interpret_branch_name() for details. */ void strbuf_branchname(struct strbuf *sb, const char *name, unsigned allowed); -- cgit v1.3 From 0e312eaa12c03043b0ef23021a5a820567ee0efd Mon Sep 17 00:00:00 2001 From: Elijah Newren Date: Sat, 22 Apr 2023 20:17:28 +0000 Subject: diff.h: reduce unnecessary includes Signed-off-by: Elijah Newren Signed-off-by: Junio C Hamano --- attr.c | 1 + diff.h | 1 - http-push.c | 1 + line-log.c | 1 + pack-bitmap-write.c | 1 + reflog.c | 1 + tree-diff.c | 1 + 7 files changed, 6 insertions(+), 1 deletion(-) (limited to 'diff.h') diff --git a/attr.c b/attr.c index 2d8aeb8b58..ddf2b0cbc2 100644 --- a/attr.c +++ b/attr.c @@ -20,6 +20,7 @@ #include "object-store.h" #include "setup.h" #include "thread-utils.h" +#include "tree-walk.h" const char git_attr__true[] = "(builtin)true"; const char git_attr__false[] = "\0(builtin)false"; diff --git a/diff.h b/diff.h index 53aeb02a54..69e574f431 100644 --- a/diff.h +++ b/diff.h @@ -4,7 +4,6 @@ #ifndef DIFF_H #define DIFF_H -#include "tree-walk.h" #include "pathspec.h" #include "oidset.h" #include "strbuf.h" diff --git a/http-push.c b/http-push.c index 3f18498636..866ba243a8 100644 --- a/http-push.c +++ b/http-push.c @@ -16,6 +16,7 @@ #include "sigchain.h" #include "strvec.h" #include "tree.h" +#include "tree-walk.h" #include "packfile.h" #include "object-store.h" #include "commit-reach.h" diff --git a/line-log.c b/line-log.c index 10c19daec4..6a7ac312a4 100644 --- a/line-log.c +++ b/line-log.c @@ -18,6 +18,7 @@ #include "setup.h" #include "strvec.h" #include "bloom.h" +#include "tree-walk.h" static void range_set_grow(struct range_set *rs, size_t extra) { diff --git a/pack-bitmap-write.c b/pack-bitmap-write.c index 3d3fd38065..cdffe2ce47 100644 --- a/pack-bitmap-write.c +++ b/pack-bitmap-write.c @@ -19,6 +19,7 @@ #include "prio-queue.h" #include "trace2.h" #include "tree.h" +#include "tree-walk.h" struct bitmapped_commit { struct commit *commit; diff --git a/reflog.c b/reflog.c index 57dc7c0d05..ee1bf5d032 100644 --- a/reflog.c +++ b/reflog.c @@ -5,6 +5,7 @@ #include "refs.h" #include "revision.h" #include "tree.h" +#include "tree-walk.h" #include "worktree.h" /* Remember to update object flag allocation in object.h */ diff --git a/tree-diff.c b/tree-diff.c index 9ea2dd7a6c..20bb15f38d 100644 --- a/tree-diff.c +++ b/tree-diff.c @@ -5,6 +5,7 @@ #include "diff.h" #include "diffcore.h" #include "tree.h" +#include "tree-walk.h" /* * Some mode bits are also used internally for computations. -- cgit v1.3