All of lore.kernel.org
 help / color / mirror / Atom feed
From: "John Cai via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Patrick Steinhardt <ps@pks.im>, John Cai <johncai86@gmail.com>
Subject: [PATCH v2 0/3] Add repository parameter to builtins
Date: Tue, 10 Sep 2024 20:59:17 +0000	[thread overview]
Message-ID: <pull.1778.v2.git.git.1726001960.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.1778.git.git.1725555467.gitgitgadget@gmail.com>

As part of the effort to remove global state of the_repository, add a
repository parameter to builtins so that a repository variable can be passed
down. The patches are ordered as follows:

 1. Changes the signature of builtins and passes the_repository down in
    git.c to be called by all builtins.
 2. Remove USE_THE_REPOSITORY_VARIABLE from builtin.h, and instead add it to
    each individual builtin. This paves the way for a migration process
    whereby each builtin can be migrated away from using the_repository.
 3. As an example, migrate builtin/add.c to get rid of the_repository by
    instead passing the repository argument down into helper functions.

Changes since V1:

 * Removed USE_THE_REPOSITORY_VARIABLE from add.c
 * removed changes that conflict with existing topics in seen
 * Fixed overly long lines formatting issues

John Cai (3):
  builtin: add a repository parameter for builtin functions
  builtin: remove USE_THE_REPOSITORY_VARIABLE from builtin.h
  add: pass in repo variable instead of global the_repository

 builtin.h                          | 285 ++++++++++++++---------------
 builtin/add.c                      | 119 ++++++------
 builtin/am.c                       |   7 +-
 builtin/annotate.c                 |   9 +-
 builtin/apply.c                    |   7 +-
 builtin/archive.c                  |   7 +-
 builtin/bisect.c                   |   6 +-
 builtin/blame.c                    |   8 +-
 builtin/branch.c                   |   7 +-
 builtin/bugreport.c                |   6 +-
 builtin/bundle.c                   |   7 +-
 builtin/cat-file.c                 |   9 +-
 builtin/check-attr.c               |   7 +-
 builtin/check-ignore.c             |   7 +-
 builtin/check-mailmap.c            |   6 +-
 builtin/check-ref-format.c         |   5 +-
 builtin/checkout--worker.c         |   6 +-
 builtin/checkout-index.c           |   8 +-
 builtin/checkout.c                 |  16 +-
 builtin/clean.c                    |   8 +-
 builtin/clone.c                    |   8 +-
 builtin/column.c                   |   6 +-
 builtin/commit-graph.c             |   7 +-
 builtin/commit-tree.c              |   8 +-
 builtin/commit.c                   |  14 +-
 builtin/config.c                   |   7 +-
 builtin/count-objects.c            |   8 +-
 builtin/credential-cache--daemon.c |  11 +-
 builtin/credential-cache.c         |   5 +-
 builtin/credential-store.c         |   6 +-
 builtin/credential.c               |   7 +-
 builtin/describe.c                 |   8 +-
 builtin/diagnose.c                 |   5 +-
 builtin/diff-files.c               |   7 +-
 builtin/diff-index.c               |   7 +-
 builtin/diff-tree.c                |   7 +-
 builtin/diff.c                     |   7 +-
 builtin/difftool.c                 |   8 +-
 builtin/fast-export.c              |   6 +-
 builtin/fast-import.c              |   7 +-
 builtin/fetch-pack.c               |   6 +-
 builtin/fetch.c                    |   7 +-
 builtin/fmt-merge-msg.c            |   6 +-
 builtin/for-each-ref.c             |   6 +-
 builtin/for-each-repo.c            |   7 +-
 builtin/fsck.c                     |   7 +-
 builtin/fsmonitor--daemon.c        |  10 +-
 builtin/gc.c                       |  13 +-
 builtin/get-tar-commit-id.c        |   5 +-
 builtin/grep.c                     |   7 +-
 builtin/hash-object.c              |   6 +-
 builtin/help.c                     |   7 +-
 builtin/hook.c                     |   6 +-
 builtin/index-pack.c               |   6 +-
 builtin/init-db.c                  |   7 +-
 builtin/interpret-trailers.c       |   7 +-
 builtin/log.c                      |  33 +++-
 builtin/ls-files.c                 |   7 +-
 builtin/ls-remote.c                |   6 +-
 builtin/ls-tree.c                  |   7 +-
 builtin/mailinfo.c                 |   6 +-
 builtin/mailsplit.c                |   5 +-
 builtin/merge-base.c               |   7 +-
 builtin/merge-file.c               |   6 +-
 builtin/merge-index.c              |   7 +-
 builtin/merge-ours.c               |   8 +-
 builtin/merge-recursive.c          |   7 +-
 builtin/merge-tree.c               |   7 +-
 builtin/merge.c                    |  12 +-
 builtin/mktag.c                    |   6 +-
 builtin/mktree.c                   |   7 +-
 builtin/multi-pack-index.c         |   7 +-
 builtin/mv.c                       |   8 +-
 builtin/name-rev.c                 |   7 +-
 builtin/notes.c                    |   9 +-
 builtin/pack-objects.c             |   7 +-
 builtin/pack-redundant.c           |  10 +-
 builtin/pack-refs.c                |   7 +-
 builtin/patch-id.c                 |   6 +-
 builtin/prune-packed.c             |   5 +-
 builtin/prune.c                    |   6 +-
 builtin/pull.c                     |   6 +-
 builtin/push.c                     |   7 +-
 builtin/range-diff.c               |   8 +-
 builtin/read-tree.c                |   8 +-
 builtin/rebase.c                   |   8 +-
 builtin/receive-pack.c             |   8 +-
 builtin/reflog.c                   |  11 +-
 builtin/refs.c                     |   7 +-
 builtin/remote-ext.c               |   5 +-
 builtin/remote-fd.c                |   5 +-
 builtin/remote.c                   |   6 +-
 builtin/repack.c                   |   6 +-
 builtin/replace.c                  |   8 +-
 builtin/replay.c                   |   6 +-
 builtin/rerere.c                   |   8 +-
 builtin/reset.c                    |   7 +-
 builtin/rev-list.c                 |   6 +-
 builtin/rev-parse.c                |   8 +-
 builtin/revert.c                   |  12 +-
 builtin/rm.c                       |   9 +-
 builtin/send-pack.c                |   6 +-
 builtin/shortlog.c                 |   7 +-
 builtin/show-branch.c              |   8 +-
 builtin/show-index.c               |   7 +-
 builtin/show-ref.c                 |   6 +-
 builtin/sparse-checkout.c          |   7 +-
 builtin/stash.c                    |   6 +-
 builtin/stripspace.c               |   6 +-
 builtin/submodule--helper.c        |   8 +-
 builtin/symbolic-ref.c             |   6 +-
 builtin/tag.c                      |   7 +-
 builtin/unpack-file.c              |   6 +-
 builtin/unpack-objects.c           |   6 +-
 builtin/update-index.c             |   8 +-
 builtin/update-ref.c               |   7 +-
 builtin/update-server-info.c       |   6 +-
 builtin/upload-archive.c           |  12 +-
 builtin/upload-pack.c              |   5 +-
 builtin/var.c                      |   7 +-
 builtin/verify-commit.c            |   7 +-
 builtin/verify-pack.c              |   6 +-
 builtin/verify-tag.c               |   6 +-
 builtin/worktree.c                 |   7 +-
 builtin/write-tree.c               |   8 +-
 commit.h                           |   5 +-
 git.c                              |  12 +-
 help.c                             |   3 +-
 stkOs5Qh                           | Bin 0 -> 10485768 bytes
 129 files changed, 903 insertions(+), 436 deletions(-)
 create mode 100644 stkOs5Qh


base-commit: 4590f2e9412378c61eac95966709c78766d326ba
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1778%2Fjohn-cai%2Fjc%2Fadd-the-repository-to-builtin-signature-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1778/john-cai/jc/add-the-repository-to-builtin-signature-v2
Pull-Request: https://github.com/git/git/pull/1778

Range-diff vs v1:

 1:  3301a34f763 ! 1:  9aaf9662544 builtin: add a repository parameter for builtin functions
     @@ builtin.h: int is_builtin(const char *s);
       #endif
      
       ## builtin/add.c ##
     +@@ builtin/add.c: int interactive_add(const char **argv, const char *prefix, int patch)
     + 	return ret;
     + }
     + 
     +-static int edit_patch(int argc, const char **argv, const char *prefix)
     ++static int edit_patch(int argc,
     ++		      const char **argv,
     ++		      const char *prefix,
     ++		      struct repository *repo UNUSED)
     + {
     + 	char *file = git_pathdup("ADD_EDIT.patch");
     + 	struct child_process child = CHILD_PROCESS_INIT;
      @@ builtin/add.c: static int add_files(struct dir_struct *dir, int flags)
       	return exit_status;
       }
       
      -int cmd_add(int argc, const char **argv, const char *prefix)
     -+int cmd_add(int argc, const char **argv, const char *prefix, struct repository *repository UNUSED)
     ++int cmd_add(int argc,
     ++	    const char **argv,
     ++	    const char *prefix,
     ++	    struct repository *repo UNUSED)
       {
       	int exit_status = 0;
       	struct pathspec pathspec;
     +@@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix)
     + 	if (edit_interactive) {
     + 		if (pathspec_from_file)
     + 			die(_("options '%s' and '%s' cannot be used together"), "--pathspec-from-file", "--edit");
     +-		return(edit_patch(argc, argv, prefix));
     ++		return(edit_patch(argc, argv, prefix, the_repository));
     + 	}
     + 	argc--;
     + 	argv++;
      
       ## builtin/am.c ##
      @@ builtin/am.c: static int parse_opt_show_current_patch(const struct option *opt, const char *ar
     @@ builtin/am.c: static int parse_opt_show_current_patch(const struct option *opt,
       }
       
      -int cmd_am(int argc, const char **argv, const char *prefix)
     -+int cmd_am(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_am(int argc,
     ++	   const char **argv,
     ++	   const char *prefix,
     ++	   struct repository *repo UNUSED)
       {
       	struct am_state state;
       	int binary = -1;
     @@ builtin/annotate.c
       #include "strvec.h"
       
      -int cmd_annotate(int argc, const char **argv, const char *prefix)
     -+int cmd_annotate(int argc, const char **argv, const char *prefix, struct repository *repo)
     ++int cmd_annotate(int argc,
     ++		 const char **argv,
     ++		 const char *prefix,
     ++		 struct repository *repo UNUSED)
       {
       	struct strvec args = STRVEC_INIT;
       	int i;
     @@ builtin/annotate.c: int cmd_annotate(int argc, const char **argv, const char *pr
       	}
       
      -	return cmd_blame(args.nr, args.v, prefix);
     -+	return cmd_blame(args.nr, args.v, prefix, repo);
     ++	return cmd_blame(args.nr, args.v, prefix, the_repository);
       }
      
       ## builtin/apply.c ##
     @@ builtin/apply.c: static const char * const apply_usage[] = {
       };
       
      -int cmd_apply(int argc, const char **argv, const char *prefix)
     -+int cmd_apply(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_apply(int argc,
     ++	      const char **argv,
     ++	      const char *prefix,
     ++	      struct repository *repo UNUSED)
       {
       	int force_apply = 0;
       	int options = 0;
     @@ builtin/archive.c: static int run_remote_archiver(int argc, const char **argv,
       			     PARSE_OPT_NO_INTERNAL_HELP	)
       
      -int cmd_archive(int argc, const char **argv, const char *prefix)
     -+int cmd_archive(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_archive(int argc,
     ++		const char **argv,
     ++		const char *prefix,
     ++		struct repository *repo UNUSED)
       {
       	const char *exec = "git-upload-archive";
       	char *output = NULL;
     @@ builtin/bisect.c: static int cmd_bisect__run(int argc, const char **argv, const
       }
       
      -int cmd_bisect(int argc, const char **argv, const char *prefix)
     -+int cmd_bisect(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_bisect(int argc,
     ++	       const char **argv,
     ++	       const char *prefix,
     ++	       struct repository *repo UNUSED)
       {
       	int res = 0;
       	parse_opt_subcommand_fn *fn = NULL;
     @@ builtin/blame.c: static void build_ignorelist(struct blame_scoreboard *sb,
       }
       
      -int cmd_blame(int argc, const char **argv, const char *prefix)
     -+int cmd_blame(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_blame(int argc,
     ++	      const char **argv,
     ++	      const char *prefix,
     ++	      struct repository *repo UNUSED)
       {
       	struct rev_info revs;
       	char *path = NULL;
     @@ builtin/branch.c: static int edit_branch_description(const char *branch_name)
       }
       
      -int cmd_branch(int argc, const char **argv, const char *prefix)
     -+int cmd_branch(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_branch(int argc,
     ++	       const char **argv,
     ++	       const char *prefix,
     ++	       struct repository *repo UNUSED)
       {
       	/* possible actions */
       	int delete = 0, rename = 0, copy = 0, list = 0,
     @@ builtin/bugreport.c: static void get_header(struct strbuf *buf, const char *titl
       }
       
      -int cmd_bugreport(int argc, const char **argv, const char *prefix)
     -+int cmd_bugreport(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_bugreport(int argc,
     ++		  const char **argv,
     ++		  const char *prefix,
     ++		  struct repository *repo UNUSED)
       {
       	struct strbuf buffer = STRBUF_INIT;
       	struct strbuf report_path = STRBUF_INIT;
     @@ builtin/bundle.c: cleanup:
       }
       
      -int cmd_bundle(int argc, const char **argv, const char *prefix)
     -+int cmd_bundle(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_bundle(int argc,
     ++	       const char **argv,
     ++	       const char *prefix,
     ++	       struct repository *repo UNUSED)
       {
       	parse_opt_subcommand_fn *fn = NULL;
       	struct option options[] = {
     @@ builtin/cat-file.c: static int batch_option_callback(const struct option *opt,
       }
       
      -int cmd_cat_file(int argc, const char **argv, const char *prefix)
     -+int cmd_cat_file(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_cat_file(int argc,
     ++		 const char **argv,
     ++		 const char *prefix,
     ++		 struct repository *repo UNUSED)
       {
       	int opt = 0;
       	int opt_cw = 0;
     @@ builtin/check-attr.c: static NORETURN void error_with_usage(const char *msg)
       }
       
      -int cmd_check_attr(int argc, const char **argv, const char *prefix)
     -+int cmd_check_attr(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_check_attr(int argc,
     ++		   const char **argv,
     ++		   const char *prefix,
     ++		   struct repository *repo UNUSED)
       {
       	struct attr_check *check;
       	struct object_id initialized_oid;
     @@ builtin/check-ignore.c: static int check_ignore_stdin_paths(struct dir_struct *d
       }
       
      -int cmd_check_ignore(int argc, const char **argv, const char *prefix)
     -+int cmd_check_ignore(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_check_ignore(int argc,
     ++		     const char **argv,
     ++		     const char *prefix,
     ++		     struct repository *repo UNUSED)
       {
       	int num_ignored;
       	struct dir_struct dir = DIR_INIT;
     @@ builtin/check-mailmap.c: static void check_mailmap(struct string_list *mailmap,
       }
       
      -int cmd_check_mailmap(int argc, const char **argv, const char *prefix)
     -+int cmd_check_mailmap(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_check_mailmap(int argc,
     ++		      const char **argv,
     ++		      const char *prefix,
     ++		      struct repository *repo UNUSED)
       {
       	int i;
       	struct string_list mailmap = STRING_LIST_INIT_NODUP;
     @@ builtin/check-ref-format.c: static int check_ref_format_branch(const char *arg)
       }
       
      -int cmd_check_ref_format(int argc, const char **argv, const char *prefix)
     -+int cmd_check_ref_format(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_check_ref_format(int argc,
     ++			 const char **argv,
     ++			 const char *prefix,
     ++			 struct repository *repo UNUSED)
       {
       	int i;
       	int normalize = 0;
     @@ builtin/checkout--worker.c: static const char * const checkout_worker_usage[] =
       };
       
      -int cmd_checkout__worker(int argc, const char **argv, const char *prefix)
     -+int cmd_checkout__worker(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_checkout__worker(int argc,
     ++			 const char **argv,
     ++			 const char *prefix,
     ++			 struct repository *repo UNUSED)
       {
       	struct checkout state = CHECKOUT_INIT;
       	struct option checkout_worker_options[] = {
     @@ builtin/checkout-index.c: static int option_parse_stage(const struct option *opt
       }
       
      -int cmd_checkout_index(int argc, const char **argv, const char *prefix)
     -+int cmd_checkout_index(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_checkout_index(int argc,
     ++		       const char **argv,
     ++		       const char *prefix,
     ++		       struct repository *repo UNUSED)
       {
       	int i;
       	struct lock_file lock_file = LOCK_INIT;
     @@ builtin/checkout.c: static int checkout_main(int argc, const char **argv, const
       }
       
      -int cmd_checkout(int argc, const char **argv, const char *prefix)
     -+int cmd_checkout(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_checkout(int argc,
     ++		 const char **argv,
     ++		 const char *prefix,
     ++		 struct repository *repo UNUSED)
       {
       	struct checkout_opts opts = CHECKOUT_OPTS_INIT;
       	struct option *options;
     @@ builtin/checkout.c: int cmd_checkout(int argc, const char **argv, const char *pr
       }
       
      -int cmd_switch(int argc, const char **argv, const char *prefix)
     -+int cmd_switch(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_switch(int argc,
     ++	       const char **argv,
     ++	       const char *prefix,
     ++	       struct repository *repo UNUSED)
       {
       	struct checkout_opts opts = CHECKOUT_OPTS_INIT;
       	struct option *options = NULL;
     @@ builtin/checkout.c: int cmd_switch(int argc, const char **argv, const char *pref
       }
       
      -int cmd_restore(int argc, const char **argv, const char *prefix)
     -+int cmd_restore(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_restore(int argc,
     ++		const char **argv,
     ++		const char *prefix,
     ++		struct repository *repo UNUSED)
       {
       	struct checkout_opts opts = CHECKOUT_OPTS_INIT;
       	struct option *options;
     @@ builtin/clean.c: static void correct_untracked_entries(struct dir_struct *dir)
       }
       
      -int cmd_clean(int argc, const char **argv, const char *prefix)
     -+int cmd_clean(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_clean(int argc,
     ++	      const char **argv,
     ++	      const char *prefix,
     ++	      struct repository *repo UNUSED)
       {
       	int i, res;
       	int dry_run = 0, remove_directories = 0, quiet = 0, ignored = 0;
     @@ builtin/clone.c: static int path_exists(const char *path)
       }
       
      -int cmd_clone(int argc, const char **argv, const char *prefix)
     -+int cmd_clone(int argc, const char **argv, const char *prefix, struct repository *repository UNUSED)
     ++int cmd_clone(int argc,
     ++	      const char **argv,
     ++	      const char *prefix,
     ++	      struct repository *repository UNUSED)
       {
       	int is_bundle = 0, is_local;
       	int reject_shallow = 0;
     @@ builtin/column.c: static int column_config(const char *var, const char *value,
       }
       
      -int cmd_column(int argc, const char **argv, const char *prefix)
     -+int cmd_column(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_column(int argc,
     ++	       const char **argv,
     ++	       const char *prefix,
     ++	       struct repository *repo UNUSED)
       {
       	struct string_list list = STRING_LIST_INIT_DUP;
       	struct strbuf sb = STRBUF_INIT;
     @@ builtin/commit-graph.c: cleanup:
       }
       
      -int cmd_commit_graph(int argc, const char **argv, const char *prefix)
     -+int cmd_commit_graph(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_commit_graph(int argc,
     ++		     const char **argv,
     ++		     const char *prefix,
     ++		     struct repository *repo UNUSED)
       {
       	parse_opt_subcommand_fn *fn = NULL;
       	struct option builtin_commit_graph_options[] = {
     @@ builtin/commit-tree.c: static int parse_file_arg_callback(const struct option *o
       }
       
      -int cmd_commit_tree(int argc, const char **argv, const char *prefix)
     -+int cmd_commit_tree(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_commit_tree(int argc,
     ++		    const char **argv,
     ++		    const char *prefix,
     ++		    struct repository *repo UNUSED)
       {
       	static struct strbuf buffer = STRBUF_INIT;
       	struct commit_list *parents = NULL;
     @@ builtin/commit.c: static int git_status_config(const char *k, const char *v,
       }
       
      -int cmd_status(int argc, const char **argv, const char *prefix)
     -+int cmd_status(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_status(int argc,
     ++const char **argv,
     ++const char *prefix,
     ++struct repository *repo UNUSED)
       {
       	static int no_renames = -1;
       	static const char *rename_score_arg = (const char *)-1;
     @@ builtin/commit.c: static int git_commit_config(const char *k, const char *v,
       }
       
      -int cmd_commit(int argc, const char **argv, const char *prefix)
     -+int cmd_commit(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_commit(int argc,
     ++	       const char **argv,
     ++	       const char *prefix,
     ++	       struct repository *repo UNUSED)
       {
       	static struct wt_status s;
       	static struct option builtin_commit_options[] = {
     @@ builtin/config.c: out:
       }
       
      -int cmd_config(int argc, const char **argv, const char *prefix)
     -+int cmd_config(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_config(int argc,
     ++	       const char **argv,
     ++	       const char *prefix,
     ++	       struct repository *repo UNUSED)
       {
       	parse_opt_subcommand_fn *subcommand = NULL;
       	struct option subcommand_opts[] = {
     @@ builtin/count-objects.c: static char const * const count_objects_usage[] = {
       };
       
      -int cmd_count_objects(int argc, const char **argv, const char *prefix)
     -+int cmd_count_objects(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_count_objects(int argc,
     ++		      const char **argv,
     ++		      const char *prefix,
     ++		      struct repository *repo UNUSED)
       {
       	int human_readable = 0;
       	struct option opts[] = {
     @@ builtin/credential-cache--daemon.c: static void init_socket_directory(const char
       }
       
      -int cmd_credential_cache_daemon(int argc, const char **argv, const char *prefix)
     -+int cmd_credential_cache_daemon(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_credential_cache_daemon(int argc,
     ++				const char **argv,
     ++				const char *prefix,
     ++				struct repository *repo UNUSED)
       {
       	struct tempfile *socket_file;
       	const char *socket_path;
     @@ builtin/credential-cache--daemon.c: int cmd_credential_cache_daemon(int argc, co
       #else
       
      -int cmd_credential_cache_daemon(int argc, const char **argv, const char *prefix)
     -+int cmd_credential_cache_daemon(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_credential_cache_daemon(int argc,
     ++const char **argv,
     ++const char *prefix,
     ++struct repository *repo UNUSED)
       {
       	const char * const usage[] = {
       		"git credential-cache--daemon [--debug] <socket-path>",
     @@ builtin/credential-cache.c: static void announce_capabilities(void)
       }
       
      -int cmd_credential_cache(int argc, const char **argv, const char *prefix)
     -+int cmd_credential_cache(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_credential_cache(int argc,
     ++			 const char **argv,
     ++			 const char *prefix,
     ++			 struct repository *repo UNUSED)
       {
       	const char *socket_path_arg = NULL;
       	char *socket_path;
     @@ builtin/credential-store.c: static void lookup_credential(const struct string_li
       }
       
      -int cmd_credential_store(int argc, const char **argv, const char *prefix)
     -+int cmd_credential_store(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_credential_store(int argc,
     ++			 const char **argv,
     ++			 const char *prefix,
     ++			 struct repository *repo UNUSED)
       {
       	const char * const usage[] = {
       		"git credential-store [<options>] <action>",
     @@ builtin/credential.c
       	"git credential (fill|approve|reject)";
       
      -int cmd_credential(int argc, const char **argv, const char *prefix UNUSED)
     -+int cmd_credential(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)
     ++int cmd_credential(int argc,
     ++		   const char **argv,
     ++		   const char *prefix UNUSED,
     ++		   struct repository *repo UNUSED)
       {
       	const char *op;
       	struct credential c = CREDENTIAL_INIT;
     @@ builtin/describe.c: static int option_parse_exact_match(const struct option *opt
       }
       
      -int cmd_describe(int argc, const char **argv, const char *prefix)
     -+int cmd_describe(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED )
     ++int cmd_describe(int argc,
     ++		 const char **argv,
     ++		 const char *prefix,
     ++		 struct repository *repo UNUSED )
       {
       	int contains = 0;
       	struct option options[] = {
     @@ builtin/diagnose.c: static const char * const diagnose_usage[] = {
       };
       
      -int cmd_diagnose(int argc, const char **argv, const char *prefix)
     -+int cmd_diagnose(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_diagnose(int argc,
     ++		 const char **argv,
     ++		 const char *prefix,
     ++		 struct repository *repo UNUSED)
       {
       	struct strbuf zip_path = STRBUF_INIT;
       	time_t now = time(NULL);
     @@ builtin/diff-files.c: static const char diff_files_usage[] =
       COMMON_DIFF_OPTIONS_HELP;
       
      -int cmd_diff_files(int argc, const char **argv, const char *prefix)
     -+int cmd_diff_files(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_diff_files(int argc,
     ++		   const char **argv,
     ++		   const char *prefix,
     ++		   struct repository *repo UNUSED)
       {
       	struct rev_info rev;
       	int result;
     @@ builtin/diff-index.c: static const char diff_cache_usage[] =
       COMMON_DIFF_OPTIONS_HELP;
       
      -int cmd_diff_index(int argc, const char **argv, const char *prefix)
     -+int cmd_diff_index(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_diff_index(int argc,
     ++		   const char **argv,
     ++		   const char *prefix,
     ++		   struct repository *repo UNUSED)
       {
       	struct rev_info rev;
       	unsigned int option = 0;
     @@ builtin/diff-tree.c: static void diff_tree_tweak_rev(struct rev_info *rev)
       }
       
      -int cmd_diff_tree(int argc, const char **argv, const char *prefix)
     -+int cmd_diff_tree(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_diff_tree(int argc,
     ++		  const char **argv,
     ++		  const char *prefix,
     ++		  struct repository *repo UNUSED)
       {
       	char line[1000];
       	struct object *tree1, *tree2;
     @@ builtin/diff.c: static void symdiff_release(struct symdiff *sdiff)
       }
       
      -int cmd_diff(int argc, const char **argv, const char *prefix)
     -+int cmd_diff(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_diff(int argc,
     ++	     const char **argv,
     ++	     const char *prefix,
     ++	     struct repository *repo UNUSED)
       {
       	int i;
       	struct rev_info rev;
     @@ builtin/difftool.c: static int run_file_diff(int prompt, const char *prefix,
       }
       
      -int cmd_difftool(int argc, const char **argv, const char *prefix)
     -+int cmd_difftool(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_difftool(int argc,
     ++		 const char **argv,
     ++		 const char *prefix,
     ++		 struct repository *repo UNUSED)
       {
       	int use_gui_tool = -1, dir_diff = 0, prompt = -1, symlinks = 0,
       	    tool_help = 0, no_index = 0;
     @@ builtin/fast-export.c: static int parse_opt_anonymize_map(const struct option *o
       }
       
      -int cmd_fast_export(int argc, const char **argv, const char *prefix)
     -+int cmd_fast_export(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_fast_export(int argc,
     ++		    const char **argv,
     ++		    const char *prefix,
     ++		    struct repository *repo UNUSED)
       {
       	struct rev_info revs;
       	struct commit *commit;
     @@ builtin/fast-import.c: static void parse_argv(void)
       }
       
      -int cmd_fast_import(int argc, const char **argv, const char *prefix)
     -+int cmd_fast_import(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_fast_import(int argc,
     ++		    const char **argv,
     ++		    const char *prefix,
     ++		    struct repository *repo UNUSED)
       {
       	unsigned int i;
       
     @@ builtin/fetch-pack.c: static void add_sought_entry(struct ref ***sought, int *nr
       }
       
      -int cmd_fetch_pack(int argc, const char **argv, const char *prefix UNUSED)
     -+int cmd_fetch_pack(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)
     ++int cmd_fetch_pack(int argc,
     ++		   const char **argv,
     ++		   const char *prefix UNUSED,
     ++		   struct repository *repo UNUSED)
       {
       	int i, ret;
       	struct ref *ref = NULL;
     @@ builtin/fetch.c: static int fetch_one(struct remote *remote, int argc, const cha
       }
       
      -int cmd_fetch(int argc, const char **argv, const char *prefix)
     -+int cmd_fetch(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_fetch(int argc,
     ++	      const char **argv,
     ++	      const char *prefix,
     ++	      struct repository *repo UNUSED)
       {
       	struct fetch_config config = {
       		.display_format = DISPLAY_FORMAT_FULL,
     @@ builtin/fmt-merge-msg.c: static const char * const fmt_merge_msg_usage[] = {
       };
       
      -int cmd_fmt_merge_msg(int argc, const char **argv, const char *prefix)
     -+int cmd_fmt_merge_msg(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_fmt_merge_msg(int argc,
     ++		      const char **argv,
     ++		      const char *prefix,
     ++		      struct repository *repo UNUSED)
       {
       	char *inpath = NULL;
       	const char *message = NULL;
     @@ builtin/for-each-ref.c: static char const * const for_each_ref_usage[] = {
       };
       
      -int cmd_for_each_ref(int argc, const char **argv, const char *prefix)
     -+int cmd_for_each_ref(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_for_each_ref(int argc,
     ++		     const char **argv,
     ++		     const char *prefix,
     ++		     struct repository *repo UNUSED)
       {
       	struct ref_sorting *sorting;
       	struct string_list sorting_options = STRING_LIST_INIT_DUP;
     @@ builtin/for-each-repo.c: static int run_command_on_repo(const char *path, int ar
       }
       
      -int cmd_for_each_repo(int argc, const char **argv, const char *prefix)
     -+int cmd_for_each_repo(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_for_each_repo(int argc,
     ++		      const char **argv,
     ++		      const char *prefix,
     ++		      struct repository *repo UNUSED)
       {
       	static const char *config_key = NULL;
       	int keep_going = 0;
     @@ builtin/fsck.c: static struct option fsck_opts[] = {
       };
       
      -int cmd_fsck(int argc, const char **argv, const char *prefix)
     -+int cmd_fsck(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_fsck(int argc,
     ++	     const char **argv,
     ++	     const char *prefix,
     ++	     struct repository *repo UNUSED)
       {
       	int i;
       	struct object_directory *odb;
     @@ builtin/fsmonitor--daemon.c: static int try_to_start_background_daemon(void)
       }
       
      -int cmd_fsmonitor__daemon(int argc, const char **argv, const char *prefix)
     -+int cmd_fsmonitor__daemon(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_fsmonitor__daemon(int argc,
     ++			  const char **argv,
     ++			  const char *prefix,
     ++			  struct repository *repo UNUSED)
       {
       	const char *subcmd;
       	enum fsmonitor_reason reason;
     @@ builtin/gc.c: static void gc_before_repack(struct maintenance_run_opts *opts,
       }
       
      -int cmd_gc(int argc, const char **argv, const char *prefix)
     -+int cmd_gc(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_gc(int argc,
     ++const char **argv,
     ++const char *prefix,
     ++struct repository *repo UNUSED)
       {
       	int aggressive = 0;
       	int quiet = 0;
     @@ builtin/gc.c: static const char * const builtin_maintenance_usage[] = {
       };
       
      -int cmd_maintenance(int argc, const char **argv, const char *prefix)
     -+int cmd_maintenance(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_maintenance(int argc,
     ++		    const char **argv,
     ++		    const char *prefix,
     ++		    struct repository *repo UNUSED)
       {
       	parse_opt_subcommand_fn *fn = NULL;
       	struct option builtin_maintenance_options[] = {
     @@ builtin/get-tar-commit-id.c: static const char builtin_get_tar_commit_id_usage[]
       #define HEADERSIZE (2 * RECORDSIZE)
       
      -int cmd_get_tar_commit_id(int argc, const char **argv UNUSED, const char *prefix)
     -+int cmd_get_tar_commit_id(int argc, const char **argv UNUSED, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_get_tar_commit_id(int argc,
     ++			  const char **argv UNUSED,
     ++			  const char *prefix,
     ++			  struct repository *repo UNUSED)
       {
       	char buffer[HEADERSIZE];
       	struct ustar_header *header = (struct ustar_header *)buffer;
     @@ builtin/grep.c: static int pattern_callback(const struct option *opt, const char
       }
       
      -int cmd_grep(int argc, const char **argv, const char *prefix)
     -+int cmd_grep(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_grep(int argc,
     ++	     const char **argv,
     ++	     const char *prefix,
     ++	     struct repository *repo UNUSED)
       {
       	int hit = 0;
       	int cached = 0, untracked = 0, opt_exclude = -1;
     @@ builtin/hash-object.c: static void hash_stdin_paths(const char *type, int no_fil
       }
       
      -int cmd_hash_object(int argc, const char **argv, const char *prefix)
     -+int cmd_hash_object(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_hash_object(int argc,
     ++		    const char **argv,
     ++		    const char *prefix,
     ++		    struct repository *repo UNUSED)
       {
       	static const char * const hash_object_usage[] = {
       		N_("git hash-object [-t <type>] [-w] [--path=<file> | --no-filters]\n"
     @@ builtin/help.c: static void opt_mode_usage(int argc, const char *opt_mode,
       }
       
      -int cmd_help(int argc, const char **argv, const char *prefix)
     -+int cmd_help(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_help(int argc,
     ++	     const char **argv,
     ++	     const char *prefix,
     ++	     struct repository *repo UNUSED)
       {
       	int nongit;
       	enum help_format parsed_help_format;
     @@ builtin/hook.c: usage:
       }
       
      -int cmd_hook(int argc, const char **argv, const char *prefix)
     -+int cmd_hook(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_hook(int argc,
     ++	     const char **argv,
     ++	     const char *prefix,
     ++	     struct repository *repo UNUSED)
       {
       	parse_opt_subcommand_fn *fn = NULL;
       	struct option builtin_hook_options[] = {
     @@ builtin/index-pack.c: static void show_pack_info(int stat_only)
       }
       
      -int cmd_index_pack(int argc, const char **argv, const char *prefix)
     -+int cmd_index_pack(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_index_pack(int argc,
     ++		   const char **argv,
     ++		   const char *prefix,
     ++		   struct repository *repo UNUSED)
       {
       	int i, fix_thin_pack = 0, verify = 0, stat_only = 0, rev_index;
       	const char *curr_index;
     @@ builtin/init-db.c: static const char *const init_db_usage[] = {
        * be the judge.  The default case is to have one DB per managed directory.
        */
      -int cmd_init_db(int argc, const char **argv, const char *prefix)
     -+int cmd_init_db(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_init_db(int argc,
     ++		const char **argv,
     ++		const char *prefix,
     ++		struct repository *repo UNUSED)
       {
       	const char *git_dir;
       	const char *real_git_dir = NULL;
     @@ builtin/interpret-trailers.c: static void interpret_trailers(const struct proces
       }
       
      -int cmd_interpret_trailers(int argc, const char **argv, const char *prefix)
     -+int cmd_interpret_trailers(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_interpret_trailers(int argc,
     ++			   const char **argv,
     ++			   const char *prefix,
     ++			   struct repository *repo UNUSED)
       {
       	struct process_trailer_options opts = PROCESS_TRAILER_OPTIONS_INIT;
       	LIST_HEAD(trailers);
     @@ builtin/log.c: static int git_log_config(const char *var, const char *value,
       }
       
      -int cmd_whatchanged(int argc, const char **argv, const char *prefix)
     -+int cmd_whatchanged(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_whatchanged(int argc,
     ++		    const char **argv,
     ++		    const char *prefix,
     ++		    struct repository *repo UNUSED)
       {
       	struct log_config cfg;
       	struct rev_info rev;
     @@ builtin/log.c: static void show_setup_revisions_tweak(struct rev_info *rev)
       }
       
      -int cmd_show(int argc, const char **argv, const char *prefix)
     -+int cmd_show(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_show(int argc,
     ++	     const char **argv,
     ++	     const char *prefix,
     ++	     struct repository *repo UNUSED)
       {
       	struct log_config cfg;
       	struct rev_info rev;
     @@ builtin/log.c: int cmd_show(int argc, const char **argv, const char *prefix)
        * This is equivalent to "git log -g --abbrev-commit --pretty=oneline"
        */
      -int cmd_log_reflog(int argc, const char **argv, const char *prefix)
     -+int cmd_log_reflog(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_log_reflog(int argc,
     ++		   const char **argv,
     ++		   const char *prefix,
     ++		   struct repository *repo UNUSED)
       {
       	struct log_config cfg;
       	struct rev_info rev;
     @@ builtin/log.c: static void log_setup_revisions_tweak(struct rev_info *rev)
       }
       
      -int cmd_log(int argc, const char **argv, const char *prefix)
     -+int cmd_log(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_log(int argc,
     ++	    const char **argv,
     ++	    const char *prefix,
     ++	    struct repository *repo UNUSED)
       {
       	struct log_config cfg;
       	struct rev_info rev;
     @@ builtin/log.c: static void infer_range_diff_ranges(struct strbuf *r1,
       }
       
      -int cmd_format_patch(int argc, const char **argv, const char *prefix)
     -+int cmd_format_patch(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_format_patch(int argc,
     ++		     const char **argv,
     ++		     const char *prefix,
     ++		     struct repository *repo UNUSED)
       {
       	struct format_config cfg;
       	struct commit *commit;
     @@ builtin/log.c: static void print_commit(char sign, struct commit *commit, int ve
       }
       
      -int cmd_cherry(int argc, const char **argv, const char *prefix)
     -+int cmd_cherry(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_cherry(int argc,
     ++	       const char **argv,
     ++	       const char *prefix,
     ++	       struct repository *repo UNUSED)
       {
       	struct rev_info revs;
       	struct patch_ids ids;
     @@ builtin/ls-files.c: static int option_parse_exclude_standard(const struct option
       }
       
      -int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix)
     -+int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix, struct repository *repo UNUSED)
     ++int cmd_ls_files(int argc,
     ++		 const char **argv,
     ++		 const char *cmd_prefix,
     ++		 struct repository *repo UNUSED)
       {
       	int require_work_tree = 0, show_tag = 0, i;
       	char *max_prefix;
     @@ builtin/ls-remote.c: static int tail_match(const struct strvec *pattern, const c
       }
       
      -int cmd_ls_remote(int argc, const char **argv, const char *prefix)
     -+int cmd_ls_remote(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_ls_remote(int argc,
     ++		  const char **argv,
     ++		  const char *prefix,
     ++		  struct repository *repo UNUSED)
       {
       	const char *dest = NULL;
       	unsigned flags = 0;
     @@ builtin/ls-tree.c: static struct ls_tree_cmdmode_to_fmt ls_tree_cmdmode_format[]
       };
       
      -int cmd_ls_tree(int argc, const char **argv, const char *prefix)
     -+int cmd_ls_tree(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_ls_tree(int argc,
     ++		const char **argv,
     ++		const char *prefix,
     ++		struct repository *repo UNUSED)
       {
       	struct object_id oid;
       	struct tree *tree;
     @@ builtin/mailinfo.c: static int parse_opt_quoted_cr(const struct option *opt, con
       }
       
      -int cmd_mailinfo(int argc, const char **argv, const char *prefix)
     -+int cmd_mailinfo(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_mailinfo(int argc,
     ++		 const char **argv,
     ++		 const char *prefix,
     ++		 struct repository *repo UNUSED)
       {
       	struct metainfo_charset meta_charset;
       	struct mailinfo mi;
     @@ builtin/mailsplit.c: out:
       }
       
      -int cmd_mailsplit(int argc, const char **argv, const char *prefix)
     -+int cmd_mailsplit(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_mailsplit(int argc,
     ++		  const char **argv,
     ++		  const char *prefix,
     ++		  struct repository *repo UNUSED)
       {
       	int nr = 0, nr_prec = 4, num = 0;
       	int allow_bare = 0;
     @@ builtin/merge-base.c: static int handle_fork_point(int argc, const char **argv)
       }
       
      -int cmd_merge_base(int argc, const char **argv, const char *prefix)
     -+int cmd_merge_base(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_merge_base(int argc,
     ++		   const char **argv,
     ++		   const char *prefix,
     ++		   struct repository *repo UNUSED)
       {
       	struct commit **rev;
       	int rev_nr = 0;
     @@ builtin/merge-file.c: static int diff_algorithm_cb(const struct option *opt,
       }
       
      -int cmd_merge_file(int argc, const char **argv, const char *prefix)
     -+int cmd_merge_file(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_merge_file(int argc,
     ++		   const char **argv,
     ++		   const char *prefix,
     ++		   struct repository *repo UNUSED)
       {
       	const char *names[3] = { 0 };
       	mmfile_t mmfs[3] = { 0 };
     @@ builtin/merge-index.c: static void merge_all(void)
       }
       
      -int cmd_merge_index(int argc, const char **argv, const char *prefix UNUSED)
     -+int cmd_merge_index(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)
     ++int cmd_merge_index(int argc,
     ++		    const char **argv,
     ++		    const char *prefix UNUSED,
     ++		    struct repository *repo UNUSED)
       {
       	int i, force_file = 0;
       
     @@ builtin/merge-ours.c
       	"git merge-ours <base>... -- HEAD <remote>...";
       
      -int cmd_merge_ours(int argc, const char **argv, const char *prefix UNUSED)
     -+int cmd_merge_ours(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)
     ++int cmd_merge_ours(int argc,
     ++		   const char **argv,
     ++		   const char *prefix UNUSED,
     ++		   struct repository *repo UNUSED)
       {
       	if (argc == 2 && !strcmp(argv[1], "-h"))
       		usage(builtin_merge_ours_usage);
     @@ builtin/merge-recursive.c: static char *better_branch_name(const char *branch)
       }
       
      -int cmd_merge_recursive(int argc, const char **argv, const char *prefix UNUSED)
     -+int cmd_merge_recursive(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)
     ++int cmd_merge_recursive(int argc,
     ++			const char **argv,
     ++			const char *prefix UNUSED,
     ++			struct repository *repo UNUSED)
       {
       	struct object_id bases[21];
       	unsigned bases_count = 0;
     @@ builtin/merge-tree.c: static int real_merge(struct merge_tree_options *o,
       }
       
      -int cmd_merge_tree(int argc, const char **argv, const char *prefix)
     -+int cmd_merge_tree(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_merge_tree(int argc,
     ++		   const char **argv,
     ++		   const char *prefix,
     ++		   struct repository *repo UNUSED)
       {
       	struct merge_tree_options o = { .show_messages = -1 };
       	struct strvec xopts = STRVEC_INIT;
     @@ builtin/merge.c: static int merging_a_throwaway_tag(struct commit *commit)
       }
       
      -int cmd_merge(int argc, const char **argv, const char *prefix)
     -+int cmd_merge(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_merge(int argc,
     ++	      const char **argv,
     ++	      const char *prefix,
     ++	      struct repository *repo UNUSED)
       {
       	struct object_id result_tree, stash, head_oid;
       	struct commit *head_commit;
     @@ builtin/mktag.c: static int verify_object_in_tag(struct object_id *tagged_oid, i
       }
       
      -int cmd_mktag(int argc, const char **argv, const char *prefix)
     -+int cmd_mktag(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_mktag(int argc,
     ++	      const char **argv,
     ++	      const char *prefix,
     ++	      struct repository *repo UNUSED)
       {
       	static struct option builtin_mktag_options[] = {
       		OPT_BOOL(0, "strict", &option_strict,
     @@ builtin/mktree.c: static void mktree_line(char *buf, int nul_term_line, int allo
       }
       
      -int cmd_mktree(int ac, const char **av, const char *prefix)
     -+int cmd_mktree(int ac, const char **av, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_mktree(int ac,
     ++	       const char **av,
     ++	       const char *prefix,
     ++	       struct repository *repo UNUSED)
       {
       	struct strbuf sb = STRBUF_INIT;
       	struct object_id oid;
     +@@ builtin/mktree.c: int cmd_mktree(int ac, const char **av, const char *prefix)
     + 		used=0; /* reset tree entry buffer for re-use in batch mode */
     + 	}
     + 	strbuf_release(&sb);
     ++
     + 	return 0;
     + }
      
       ## builtin/multi-pack-index.c ##
      @@ builtin/multi-pack-index.c: static int cmd_multi_pack_index_repack(int argc, const char **argv,
     + 			   (size_t)opts.batch_size, opts.flags);
       }
       
     - int cmd_multi_pack_index(int argc, const char **argv,
     +-int cmd_multi_pack_index(int argc, const char **argv,
      -			 const char *prefix)
     -+			 const char *prefix, struct repository *repo UNUSED)
     ++int cmd_multi_pack_index(int argc,
     ++			 const char **argv,
     ++			 const char *prefix,
     ++			 struct repository *repo UNUSED)
       {
       	int res;
       	parse_opt_subcommand_fn *fn = NULL;
     @@ builtin/mv.c: static void remove_empty_src_dirs(const char **src_dir, size_t src
       }
       
      -int cmd_mv(int argc, const char **argv, const char *prefix)
     -+int cmd_mv(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_mv(int argc,
     ++	   const char **argv,
     ++	   const char *prefix,
     ++	   struct repository *repo UNUSED)
       {
       	int i, flags, gitmodules_modified = 0;
       	int verbose = 0, show_only = 0, force = 0, ignore_errors = 0, ignore_sparse = 0;
     @@ builtin/name-rev.c: static void name_rev_line(char *p, struct name_ref_data *dat
       }
       
      -int cmd_name_rev(int argc, const char **argv, const char *prefix)
     -+int cmd_name_rev(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_name_rev(int argc,
     ++		 const char **argv,
     ++		 const char *prefix,
     ++		 struct repository *repo UNUSED)
       {
       	struct mem_pool string_pool;
       	struct object_array revs = OBJECT_ARRAY_INIT;
     @@ builtin/notes.c: static int get_ref(int argc, const char **argv, const char *pre
       }
       
      -int cmd_notes(int argc, const char **argv, const char *prefix)
     -+int cmd_notes(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_notes(int argc,
     ++	      const char **argv,
     ++	      const char *prefix,
     ++	      struct repository *repo UNUSED)
       {
       	const char *override_notes_ref = NULL;
       	parse_opt_subcommand_fn *fn = NULL;
     @@ builtin/pack-objects.c: static int option_parse_cruft_expiration(const struct op
       }
       
      -int cmd_pack_objects(int argc, const char **argv, const char *prefix)
     -+int cmd_pack_objects(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_pack_objects(int argc,
     ++		     const char **argv,
     ++		     const char *prefix,
     ++		     struct repository *repo UNUSED)
       {
       	int use_internal_rev_list = 0;
       	int shallow = 0;
     @@ builtin/pack-redundant.c: static void load_all(void)
       }
       
      -int cmd_pack_redundant(int argc, const char **argv, const char *prefix UNUSED)
     -+int cmd_pack_redundant(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)
     - {
     - 	int i;
     - 	int i_still_use_this = 0;
     +-{
     +-	int i;
     +-	int i_still_use_this = 0;
     +-	struct pack_list *min = NULL, *red, *pl;
     ++int cmd_pack_redundant(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED) {
     ++	int i; int i_still_use_this = 0; struct pack_list *min = NULL, *red, *pl;
     + 	struct llist *ignore;
     + 	struct object_id *oid;
     + 	char buf[GIT_MAX_HEXSZ + 2]; /* hex hash + \n + \0 */
      
       ## builtin/pack-refs.c ##
      @@ builtin/pack-refs.c: static char const * const pack_refs_usage[] = {
     @@ builtin/pack-refs.c: static char const * const pack_refs_usage[] = {
       };
       
      -int cmd_pack_refs(int argc, const char **argv, const char *prefix)
     -+int cmd_pack_refs(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_pack_refs(int argc,
     ++		  const char **argv,
     ++		  const char *prefix,
     ++		  struct repository *repo UNUSED)
       {
       	struct ref_exclusions excludes = REF_EXCLUSIONS_INIT;
       	struct string_list included_refs = STRING_LIST_INIT_NODUP;
     @@ builtin/patch-id.c: static int git_patch_id_config(const char *var, const char *
       }
       
      -int cmd_patch_id(int argc, const char **argv, const char *prefix)
     -+int cmd_patch_id(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_patch_id(int argc,
     ++		 const char **argv,
     ++		 const char *prefix,
     ++		 struct repository *repo UNUSED)
       {
       	/* if nothing is set, default to unstable */
       	struct patch_id_opts config = {0, 0};
     @@ builtin/prune-packed.c: static const char * const prune_packed_usage[] = {
       };
       
      -int cmd_prune_packed(int argc, const char **argv, const char *prefix)
     -+int cmd_prune_packed(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_prune_packed(int argc,
     ++		     const char **argv,
     ++		     const char *prefix,
     ++		     struct repository *repo UNUSED)
       {
       	int opts = isatty(2) ? PRUNE_PACKED_VERBOSE : 0;
       	const struct option prune_packed_options[] = {
     @@ builtin/prune.c: static void remove_temporary_files(const char *path)
       }
       
      -int cmd_prune(int argc, const char **argv, const char *prefix)
     -+int cmd_prune(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_prune(int argc,
     ++	      const char **argv,
     ++	      const char *prefix,
     ++	      struct repository *repo UNUSED)
       {
       	struct rev_info revs;
       	int exclude_promisor_objects = 0;
     @@ builtin/pull.c: static void show_advice_pull_non_ff(void)
       }
       
      -int cmd_pull(int argc, const char **argv, const char *prefix)
     -+int cmd_pull(int argc, const char **argv, const char *prefix, struct repository *repository UNUSED)
     ++int cmd_pull(int argc,
     ++	     const char **argv,
     ++	     const char *prefix,
     ++	     struct repository *repository UNUSED)
       {
       	const char *repo, **refspecs;
       	struct oid_array merge_heads = OID_ARRAY_INIT;
     @@ builtin/push.c: static int git_push_config(const char *k, const char *v,
       }
       
      -int cmd_push(int argc, const char **argv, const char *prefix)
     -+int cmd_push(int argc, const char **argv, const char *prefix, struct repository *repository UNUSED)
     ++int cmd_push(int argc,
     ++	     const char **argv,
     ++	     const char *prefix,
     ++	     struct repository *repository UNUSED)
       {
       	int flags = 0;
       	int tags = 0;
     @@ builtin/range-diff.c: N_("git range-diff [<options>] <base> <old-tip> <new-tip>"
       };
       
      -int cmd_range_diff(int argc, const char **argv, const char *prefix)
     -+int cmd_range_diff(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_range_diff(int argc,
     ++		   const char **argv,
     ++		   const char *prefix,
     ++		   struct repository *repo UNUSED)
       {
       	struct diff_options diffopt = { NULL };
       	struct strvec other_arg = STRVEC_INIT;
     @@ builtin/read-tree.c: static int git_read_tree_config(const char *var, const char
       }
       
      -int cmd_read_tree(int argc, const char **argv, const char *cmd_prefix)
     -+int cmd_read_tree(int argc, const char **argv, const char *cmd_prefix, struct repository *repo UNUSED)
     ++int cmd_read_tree(int argc,
     ++		  const char **argv,
     ++		  const char *cmd_prefix,
     ++		  struct repository *repo UNUSED)
       {
       	int i, stage = 0;
       	struct object_id oid;
     @@ builtin/rebase.c: static int check_exec_cmd(const char *cmd)
       }
       
      -int cmd_rebase(int argc, const char **argv, const char *prefix)
     -+int cmd_rebase(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_rebase(int argc,
     ++	       const char **argv,
     ++	       const char *prefix,
     ++	       struct repository *repo UNUSED)
       {
       	struct rebase_options options = REBASE_OPTIONS_INIT;
       	const char *branch_name;
     @@ builtin/receive-pack.c: static int delete_only(struct command *commands)
       }
       
      -int cmd_receive_pack(int argc, const char **argv, const char *prefix)
     -+int cmd_receive_pack(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_receive_pack(int argc,
     ++		     const char **argv,
     ++		     const char *prefix,
     ++		     struct repository *repo UNUSED)
       {
       	int advertise_refs = 0;
       	struct command *commands;
     @@ builtin/reflog.c: static int cmd_reflog_exists(int argc, const char **argv, cons
        */
       
      -int cmd_reflog(int argc, const char **argv, const char *prefix)
     -+int cmd_reflog(int argc, const char **argv, const char *prefix, struct repository *repository)
     ++int cmd_reflog(int argc,
     ++	       const char **argv,
     ++	       const char *prefix,
     ++	       struct repository *repository)
       {
       	parse_opt_subcommand_fn *fn = NULL;
       	struct option options[] = {
     @@ builtin/refs.c: static int cmd_refs_verify(int argc, const char **argv, const ch
       }
       
      -int cmd_refs(int argc, const char **argv, const char *prefix)
     -+int cmd_refs(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_refs(int argc,
     ++	     const char **argv,
     ++	     const char *prefix,
     ++	     struct repository *repo UNUSED)
       {
       	const char * const refs_usage[] = {
       		REFS_MIGRATE_USAGE,
     @@ builtin/remote-ext.c: static int command_loop(const char *child)
       }
       
      -int cmd_remote_ext(int argc, const char **argv, const char *prefix)
     -+int cmd_remote_ext(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_remote_ext(int argc,
     ++		   const char **argv,
     ++		   const char *prefix,
     ++		   struct repository *repo UNUSED)
       {
       	BUG_ON_NON_EMPTY_PREFIX(prefix);
       
     @@ builtin/remote-fd.c: static void command_loop(int input_fd, int output_fd)
       }
       
      -int cmd_remote_fd(int argc, const char **argv, const char *prefix)
     -+int cmd_remote_fd(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_remote_fd(int argc,
     ++		  const char **argv,
     ++		  const char *prefix,
     ++		  struct repository *repo UNUSED)
       {
       	int input_fd = -1;
       	int output_fd = -1;
     @@ builtin/remote.c: out:
       }
       
      -int cmd_remote(int argc, const char **argv, const char *prefix)
     -+int cmd_remote(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_remote(int argc,
     ++	       const char **argv,
     ++	       const char *prefix,
     ++	       struct repository *repo UNUSED)
       {
       	parse_opt_subcommand_fn *fn = NULL;
       	struct option options[] = {
     @@ builtin/repack.c: static const char *find_pack_prefix(const char *packdir, const
       }
       
      -int cmd_repack(int argc, const char **argv, const char *prefix)
     -+int cmd_repack(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_repack(int argc,
     ++	       const char **argv,
     ++	       const char *prefix,
     ++	       struct repository *repo UNUSED)
       {
       	struct child_process cmd = CHILD_PROCESS_INIT;
       	struct string_list_item *item;
     @@ builtin/replace.c: static int convert_graft_file(int force)
       }
       
      -int cmd_replace(int argc, const char **argv, const char *prefix)
     -+int cmd_replace(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_replace(int argc,
     ++		const char **argv,
     ++		const char *prefix,
     ++		struct repository *repo UNUSED)
       {
       	int force = 0;
       	int raw = 0;
     @@ builtin/replay.c: static struct commit *pick_regular_commit(struct commit *pickm
       }
       
      -int cmd_replay(int argc, const char **argv, const char *prefix)
     -+int cmd_replay(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_replay(int argc,
     ++	       const char **argv,
     ++	       const char *prefix,
     ++	       struct repository *repo UNUSED)
       {
       	const char *advance_name_opt = NULL;
       	char *advance_name = NULL;
     @@ builtin/rerere.c: static int diff_two(const char *file1, const char *label1,
       }
       
      -int cmd_rerere(int argc, const char **argv, const char *prefix)
     -+int cmd_rerere(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_rerere(int argc,
     ++	       const char **argv,
     ++	       const char *prefix,
     ++	       struct repository *repo UNUSED)
       {
       	struct string_list merge_rr = STRING_LIST_INIT_DUP;
       	int i, autoupdate = -1, flags = 0;
     @@ builtin/reset.c: static int git_reset_config(const char *var, const char *value,
       }
       
      -int cmd_reset(int argc, const char **argv, const char *prefix)
     -+int cmd_reset(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_reset(int argc,
     ++	      const char **argv,
     ++	      const char *prefix,
     ++	      struct repository *repo UNUSED)
       {
       	int reset_type = NONE, update_ref_status = 0, quiet = 0;
       	int no_refresh = 0;
     @@ builtin/rev-list.c: static int try_bitmap_disk_usage(struct rev_info *revs,
       }
       
      -int cmd_rev_list(int argc, const char **argv, const char *prefix)
     -+int cmd_rev_list(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_rev_list(int argc,
     ++		 const char **argv,
     ++		 const char *prefix,
     ++		 struct repository *repo UNUSED)
       {
       	struct rev_info revs;
       	struct rev_list_info info;
     @@ builtin/rev-parse.c: static void print_path(const char *path, const char *prefix
       }
       
      -int cmd_rev_parse(int argc, const char **argv, const char *prefix)
     -+int cmd_rev_parse(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_rev_parse(int argc,
     ++		  const char **argv,
     ++		  const char *prefix,
     ++		  struct repository *repo UNUSED)
       {
       	int i, as_is = 0, verify = 0, quiet = 0, revs_count = 0, type = 0;
       	const struct git_hash_algo *output_algo = NULL;
     @@ builtin/revert.c: static int run_sequencer(int argc, const char **argv, const ch
       }
       
      -int cmd_revert(int argc, const char **argv, const char *prefix)
     -+int cmd_revert(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_revert(int argc,
     ++	       const char **argv,
     ++	       const char *prefix,
     ++	       struct repository *repo UNUSED)
       {
       	struct replay_opts opts = REPLAY_OPTS_INIT;
       	int res;
     @@ builtin/revert.c: int cmd_revert(int argc, const char **argv, const char *prefix
       }
       
      -int cmd_cherry_pick(int argc, const char **argv, const char *prefix)
     -+int cmd_cherry_pick(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_cherry_pick(int argc,
     ++const char **argv,
     ++const char *prefix,
     ++struct repository *repo UNUSED)
       {
       	struct replay_opts opts = REPLAY_OPTS_INIT;
       	int res;
     @@ builtin/rm.c: static struct option builtin_rm_options[] = {
       };
       
      -int cmd_rm(int argc, const char **argv, const char *prefix)
     -+int cmd_rm(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_rm(int argc,
     ++	   const char **argv,
     ++	   const char *prefix,
     ++	   struct repository *repo UNUSED)
       {
       	struct lock_file lock_file = LOCK_INIT;
       	int i, ret = 0;
     @@ builtin/send-pack.c: static int send_pack_config(const char *k, const char *v,
       }
       
      -int cmd_send_pack(int argc, const char **argv, const char *prefix)
     -+int cmd_send_pack(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_send_pack(int argc,
     ++		  const char **argv,
     ++		  const char *prefix,
     ++		  struct repository *repo UNUSED)
       {
       	struct refspec rs = REFSPEC_INIT_PUSH;
       	const char *remote_name = NULL;
     @@ builtin/shortlog.c: void shortlog_finish_setup(struct shortlog *log)
       }
       
      -int cmd_shortlog(int argc, const char **argv, const char *prefix)
     -+int cmd_shortlog(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_shortlog(int argc,
     ++		 const char **argv,
     ++		 const char *prefix,
     ++		 struct repository *repo UNUSED)
       {
       	struct shortlog log = { STRING_LIST_INIT_NODUP };
       	struct rev_info rev;
     @@ builtin/show-branch.c: static int parse_reflog_param(const struct option *opt, c
       }
       
      -int cmd_show_branch(int ac, const char **av, const char *prefix)
     -+int cmd_show_branch(int ac, const char **av, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_show_branch(int ac,
     ++		const char **av,
     ++		const char *prefix,
     ++		struct repository *repo UNUSED)
       {
       	struct commit *rev[MAX_REVS], *commit;
       	char *reflog_msg[MAX_REVS] = {0};
     @@ builtin/show-index.c: static const char *const show_index_usage[] = {
       };
       
      -int cmd_show_index(int argc, const char **argv, const char *prefix)
     -+int cmd_show_index(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_show_index(int argc,
     ++		   const char **argv,
     ++		   const char *prefix,
     ++		   struct repository *repo UNUSED)
       {
       	int i;
       	unsigned nr;
     @@ builtin/show-ref.c: static int exclude_existing_callback(const struct option *op
       }
       
      -int cmd_show_ref(int argc, const char **argv, const char *prefix)
     -+int cmd_show_ref(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_show_ref(int argc,
     ++const char **argv,
     ++const char *prefix,
     ++struct repository *repo UNUSED)
       {
       	struct exclude_existing_options exclude_existing_opts = {0};
       	struct patterns_options patterns_opts = {0};
     @@ builtin/sparse-checkout.c: static int sparse_checkout_check_rules(int argc, cons
       }
       
      -int cmd_sparse_checkout(int argc, const char **argv, const char *prefix)
     -+int cmd_sparse_checkout(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_sparse_checkout(int argc,
     ++			const char **argv,
     ++			const char *prefix,
     ++			struct repository *repo UNUSED)
       {
       	parse_opt_subcommand_fn *fn = NULL;
       	struct option builtin_sparse_checkout_options[] = {
     @@ builtin/stash.c: static int save_stash(int argc, const char **argv, const char *
       }
       
      -int cmd_stash(int argc, const char **argv, const char *prefix)
     -+int cmd_stash(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_stash(int argc,
     ++	      const char **argv,
     ++	      const char *prefix,
     ++	      struct repository *repo UNUSED)
       {
       	pid_t pid = getpid();
       	const char *index_file;
     @@ builtin/stripspace.c: enum stripspace_mode {
       };
       
      -int cmd_stripspace(int argc, const char **argv, const char *prefix)
     -+int cmd_stripspace(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_stripspace(int argc,
     ++		   const char **argv,
     ++		   const char *prefix,
     ++		   struct repository *repo UNUSED)
       {
       	struct strbuf buf = STRBUF_INIT;
       	enum stripspace_mode mode = STRIP_DEFAULT;
     @@ builtin/submodule--helper.c: cleanup:
       }
       
      -int cmd_submodule__helper(int argc, const char **argv, const char *prefix)
     -+int cmd_submodule__helper(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_submodule__helper(int argc,
     ++			  const char **argv,
     ++			  const char *prefix,
     ++			  struct repository *repo UNUSED)
       {
       	parse_opt_subcommand_fn *fn = NULL;
       	const char *const usage[] = {
     @@ builtin/symbolic-ref.c: static int check_symref(const char *HEAD, int quiet, int
       }
       
      -int cmd_symbolic_ref(int argc, const char **argv, const char *prefix)
     -+int cmd_symbolic_ref(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_symbolic_ref(int argc,
     ++		     const char **argv,
     ++		     const char *prefix,
     ++		     struct repository *repo UNUSED)
       {
       	int quiet = 0, delete = 0, shorten = 0, recurse = 1, ret = 0;
       	const char *msg = NULL;
     @@ builtin/tag.c: static int strbuf_check_tag_ref(struct strbuf *sb, const char *na
       }
       
      -int cmd_tag(int argc, const char **argv, const char *prefix)
     -+int cmd_tag(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_tag(int argc,
     ++	    const char **argv,
     ++	    const char *prefix,
     ++	    struct repository *repo UNUSED)
       {
       	struct strbuf buf = STRBUF_INIT;
       	struct strbuf ref = STRBUF_INIT;
     @@ builtin/unpack-file.c: static char *create_temp_file(struct object_id *oid)
       }
       
      -int cmd_unpack_file(int argc, const char **argv, const char *prefix UNUSED)
     -+int cmd_unpack_file(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)
     ++int cmd_unpack_file(int argc,
     ++		    const char **argv,
     ++		    const char *prefix UNUSED,
     ++		    struct repository *repo UNUSED)
       {
       	struct object_id oid;
       
     @@ builtin/unpack-objects.c: static void unpack_all(void)
       }
       
      -int cmd_unpack_objects(int argc, const char **argv, const char *prefix UNUSED)
     -+int cmd_unpack_objects(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)
     ++int cmd_unpack_objects(int argc,
     ++		       const char **argv,
     ++		       const char *prefix UNUSED,
     ++		       struct repository *repo UNUSED)
       {
       	int i;
       	struct object_id oid;
     @@ builtin/update-index.c: static enum parse_opt_result reupdate_callback(
       }
       
      -int cmd_update_index(int argc, const char **argv, const char *prefix)
     -+int cmd_update_index(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_update_index(int argc,
     ++		     const char **argv,
     ++		     const char *prefix,
     ++		     struct repository *repo UNUSED)
       {
       	int newfd, entries, has_errors = 0, nul_term_line = 0;
       	enum uc_mode untracked_cache = UC_UNSPECIFIED;
     @@ builtin/update-ref.c: static void update_refs_stdin(void)
       }
       
      -int cmd_update_ref(int argc, const char **argv, const char *prefix)
     -+int cmd_update_ref(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_update_ref(int argc,
     ++		   const char **argv,
     ++		   const char *prefix,
     ++		   struct repository *repo UNUSED)
       {
       	const char *refname, *oldval;
       	struct object_id oid, oldoid;
     @@ builtin/update-server-info.c: static const char * const update_server_info_usage
       };
       
      -int cmd_update_server_info(int argc, const char **argv, const char *prefix)
     -+int cmd_update_server_info(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_update_server_info(int argc,
     ++			   const char **argv,
     ++			   const char *prefix,
     ++			   struct repository *repo UNUSED)
       {
       	int force = 0;
       	struct option options[] = {
     @@ builtin/upload-archive.c: static const char deadchild[] =
       #define MAX_ARGS (64)
       
      -int cmd_upload_archive_writer(int argc, const char **argv, const char *prefix)
     -+int cmd_upload_archive_writer(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_upload_archive_writer(int argc,
     ++			      const char **argv,
     ++			      const char *prefix,
     ++			      struct repository *repo UNUSED)
       {
       	struct strvec sent_argv = STRVEC_INIT;
       	const char *arg_cmd = "argument ";
     @@ builtin/upload-archive.c: static ssize_t process_input(int child_fd, int band)
       }
       
      -int cmd_upload_archive(int argc, const char **argv, const char *prefix)
     -+int cmd_upload_archive(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_upload_archive(int argc,
     ++const char **argv,
     ++const char *prefix,
     ++struct repository *repo UNUSED)
       {
       	struct child_process writer = CHILD_PROCESS_INIT;
       
     @@ builtin/upload-pack.c: static const char * const upload_pack_usage[] = {
       };
       
      -int cmd_upload_pack(int argc, const char **argv, const char *prefix)
     -+int cmd_upload_pack(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_upload_pack(int argc,
     ++		    const char **argv,
     ++		    const char *prefix,
     ++		    struct repository *repo UNUSED)
       {
       	const char *dir;
       	int strict = 0;
     @@ builtin/var.c: static int show_config(const char *var, const char *value,
       }
       
      -int cmd_var(int argc, const char **argv, const char *prefix UNUSED)
     -+int cmd_var(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)
     ++int cmd_var(int argc,
     ++	    const char **argv,
     ++	    const char *prefix UNUSED,
     ++	    struct repository *repo UNUSED)
       {
       	const struct git_var *git_var;
       	char *val;
     @@ builtin/verify-commit.c: static int verify_commit(const char *name, unsigned fla
       }
       
      -int cmd_verify_commit(int argc, const char **argv, const char *prefix)
     -+int cmd_verify_commit(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_verify_commit(int argc,
     ++		      const char **argv,
     ++		      const char *prefix,
     ++		      struct repository *repo UNUSED)
       {
       	int i = 1, verbose = 0, had_error = 0;
       	unsigned flags = 0;
     @@ builtin/verify-pack.c: static const char * const verify_pack_usage[] = {
       };
       
      -int cmd_verify_pack(int argc, const char **argv, const char *prefix)
     -+int cmd_verify_pack(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_verify_pack(int argc,
     ++		    const char **argv,
     ++		    const char *prefix,
     ++		    struct repository *repo UNUSED)
       {
       	int err = 0;
       	unsigned int flags = 0;
     @@ builtin/verify-tag.c: static const char * const verify_tag_usage[] = {
       };
       
      -int cmd_verify_tag(int argc, const char **argv, const char *prefix)
     -+int cmd_verify_tag(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_verify_tag(int argc,
     ++		   const char **argv,
     ++		   const char *prefix,
     ++		   struct repository *repo UNUSED)
       {
       	int i = 1, verbose = 0, had_error = 0;
       	unsigned flags = 0;
     @@ builtin/worktree.c: static int repair(int ac, const char **av, const char *prefi
       }
       
      -int cmd_worktree(int ac, const char **av, const char *prefix)
     -+int cmd_worktree(int ac, const char **av, const char *prefix, struct repository *repo UNUSED)
     ++int cmd_worktree(int ac,
     ++		 const char **av,
     ++		 const char *prefix,
     ++		 struct repository *repo UNUSED)
       {
       	parse_opt_subcommand_fn *fn = NULL;
       	struct option options[] = {
     @@ builtin/write-tree.c: static const char * const write_tree_usage[] = {
       };
       
      -int cmd_write_tree(int argc, const char **argv, const char *cmd_prefix)
     -+int cmd_write_tree(int argc, const char **argv, const char *cmd_prefix, struct repository *repo UNUSED)
     ++int cmd_write_tree(int argc,
     ++		   const char **argv,
     ++		   const char *cmd_prefix,
     ++		   struct repository *repo UNUSED)
       {
       	int flags = 0, ret;
       	const char *tree_prefix = NULL;
     @@ git.c: static int run_builtin(struct cmd_struct *p, int argc, const char **argv)
      -	status = p->fn(argc, argv, prefix);
      -	validate_cache_entries(the_repository->index);
      +	validate_cache_entries(repo->index);
     -+
     -+	status = p->fn(argc, argv, prefix, startup_info->have_repository? repo: NULL) ;
     -+
     ++	status = p->fn(argc, argv, prefix, (p->option & RUN_SETUP)? repo : NULL);
      +	validate_cache_entries(repo->index);
       
       	if (status)
     @@ help.c: void get_version_info(struct strbuf *buf, int show_build_options)
       {
       	struct strbuf buf = STRBUF_INIT;
       	int build_options = 0;
     +
     + ## stkOs5Qh (new) ##
     + Binary files /dev/null and stkOs5Qh differ
 2:  17acc1e054c ! 2:  434c8babbb1 builtin: remove USE_THE_REPOSITORY_VARIABLE from builtin.h
     @@ Commit message
          builtin: remove USE_THE_REPOSITORY_VARIABLE from builtin.h
      
          Instead of including USE_THE_REPOSITORY_VARIABLE by default on every
     -    builtin, remove it from builtin.h and add it where necessary to
     -    individual builtins/*. The next step will be to migrate each builtin
     +    builtin, remove it from builtin.h and add it to all the builtins that
     +    reference the_repository.
     +
     +    Also, remove the include statement for repository.h since it gets
     +    brought in through builtin.h.
     +
     +    The next step will be to migrate each builtin
          from having to use the_repository.
      
          Signed-off-by: John Cai <johncai86@gmail.com>
     @@ builtin/add.c
       #include "builtin.h"
       #include "advice.h"
       #include "config.h"
     +@@
     + #include "preload-index.h"
     + #include "diff.h"
     + #include "read-cache.h"
     +-#include "repository.h"
     + #include "revision.h"
     + #include "bulk-checkin.h"
     + #include "strvec.h"
      
       ## builtin/am.c ##
      @@
     @@ builtin/am.c
       #include "builtin.h"
       #include "abspath.h"
       #include "advice.h"
     +@@
     + #include "string-list.h"
     + #include "pager.h"
     + #include "path.h"
     +-#include "repository.h"
     + #include "pretty.h"
     + 
     + /**
     +
     + ## builtin/annotate.c ##
     +@@
     +  *
     +  * Copyright (C) 2006 Ryan Anderson
     +  */
     ++
     ++#define USE_THE_REPOSITORY_VARIABLE
     + #include "git-compat-util.h"
     + #include "builtin.h"
     + #include "strvec.h"
      
       ## builtin/apply.c ##
      @@
      +#define USE_THE_REPOSITORY_VARIABLE
       #include "builtin.h"
       #include "gettext.h"
     - #include "repository.h"
     +-#include "repository.h"
     + #include "hash.h"
     + #include "apply.h"
     + 
      
       ## builtin/archive.c ##
      @@
     @@ builtin/archive.c
       #include "builtin.h"
       #include "archive.h"
       #include "gettext.h"
     + #include "transport.h"
     + #include "parse-options.h"
     + #include "pkt-line.h"
     +-#include "repository.h"
     + 
     + static void create_output_file(const char *output_file)
     + {
      
       ## builtin/bisect.c ##
      @@
     @@ builtin/blame.c
       #include "builtin.h"
       #include "config.h"
       #include "color.h"
     +@@
     + #include "environment.h"
     + #include "gettext.h"
     + #include "hex.h"
     +-#include "repository.h"
     + #include "commit.h"
     + #include "diff.h"
     + #include "revision.h"
      
       ## builtin/branch.c ##
      @@
     @@ builtin/branch.c
      -
      +#define USE_THE_REPOSITORY_VARIABLE
       #include "builtin.h"
     -+#include "repository.h"
       #include "config.h"
       #include "color.h"
     - #include "editor.h"
      
       ## builtin/bugreport.c ##
      @@
     @@ builtin/bundle.c
       #include "builtin.h"
       #include "abspath.h"
       #include "gettext.h"
     +@@
     + #include "strvec.h"
     + #include "parse-options.h"
     + #include "pkt-line.h"
     +-#include "repository.h"
     + #include "bundle.h"
     + 
     + /*
      
       ## builtin/cat-file.c ##
      @@
     @@ builtin/cat-file.c
      -
      +#define USE_THE_REPOSITORY_VARIABLE
       #include "builtin.h"
     -+#include "repository.h"
       #include "config.h"
       #include "convert.h"
     - #include "diff.h"
      
       ## builtin/check-attr.c ##
      @@
     @@ builtin/check-attr.c
       #include "builtin.h"
       #include "config.h"
       #include "attr.h"
     +@@
     + #include "gettext.h"
     + #include "object-name.h"
     + #include "quote.h"
     +-#include "repository.h"
     + #include "setup.h"
     + #include "parse-options.h"
     + #include "write-or-die.h"
      
       ## builtin/check-ignore.c ##
      @@
     @@ builtin/check-ignore.c
       #include "builtin.h"
       #include "config.h"
       #include "dir.h"
     +@@
     + #include "quote.h"
     + #include "pathspec.h"
     + #include "parse-options.h"
     +-#include "repository.h"
     + #include "submodule.h"
     + #include "write-or-die.h"
     + 
      
       ## builtin/check-mailmap.c ##
      @@
     @@ builtin/checkout-index.c
        * Copyright (C) 2005 Linus Torvalds
        *
        */
     +-
      +#define USE_THE_REPOSITORY_VARIABLE
     - 
       #include "builtin.h"
       #include "config.h"
     + #include "gettext.h"
     + #include "lockfile.h"
     + #include "quote.h"
     +-#include "repository.h"
     + #include "cache-tree.h"
     + #include "parse-options.h"
     + #include "entry.h"
      
       ## builtin/checkout.c ##
      @@
     @@ builtin/clean.c
       #include "builtin.h"
       #include "abspath.h"
       #include "config.h"
     +@@
     + #include "parse-options.h"
     + #include "path.h"
     + #include "read-cache-ll.h"
     +-#include "repository.h"
     + #include "setup.h"
     + #include "string-list.h"
     + #include "quote.h"
      
       ## builtin/clone.c ##
      @@
     @@ builtin/clone.c
      -
      +#define USE_THE_REPOSITORY_VARIABLE
       #include "builtin.h"
     -+#include "repository.h"
     ++
       #include "abspath.h"
       #include "advice.h"
       #include "config.h"
     @@ builtin/clone.c
       ## builtin/column.c ##
      @@
      +#define USE_THE_REPOSITORY_VARIABLE
     -+
       #include "builtin.h"
       #include "config.h"
       #include "gettext.h"
     @@ builtin/commit-graph.c
       #include "builtin.h"
       #include "commit.h"
       #include "config.h"
     +@@
     + #include "gettext.h"
     + #include "hex.h"
     + #include "parse-options.h"
     +-#include "repository.h"
     + #include "commit-graph.h"
     + #include "object-store-ll.h"
     + #include "progress.h"
      
       ## builtin/commit-tree.c ##
      @@
     @@ builtin/commit-tree.c
       #include "builtin.h"
       #include "config.h"
       #include "gettext.h"
     + #include "hex.h"
     + #include "object-name.h"
     + #include "object-store-ll.h"
     +-#include "repository.h"
     ++
     + #include "commit.h"
     + #include "parse-options.h"
     + 
      
       ## builtin/commit.c ##
      @@
     @@ builtin/commit.c
      -
      +#define USE_THE_REPOSITORY_VARIABLE
       #include "builtin.h"
     -+#include "repository.h"
       #include "advice.h"
       #include "config.h"
     - #include "lockfile.h"
      
       ## builtin/config.c ##
      @@
     @@ builtin/config.c
       #include "builtin.h"
       #include "abspath.h"
       #include "config.h"
     + #include "color.h"
     + #include "editor.h"
     + #include "environment.h"
     +-#include "repository.h"
     + #include "gettext.h"
     + #include "ident.h"
     + #include "parse-options.h"
      
       ## builtin/count-objects.c ##
      @@
     @@ builtin/count-objects.c
       #include "builtin.h"
       #include "config.h"
       #include "dir.h"
     + #include "environment.h"
     + #include "gettext.h"
     + #include "path.h"
     +-#include "repository.h"
     + #include "parse-options.h"
     + #include "quote.h"
     + #include "packfile.h"
      
       ## builtin/credential-cache--daemon.c ##
      @@
     @@ builtin/diff-files.c
       #include "builtin.h"
       #include "config.h"
       #include "diff.h"
     + #include "diff-merges.h"
     + #include "commit.h"
     + #include "preload-index.h"
     +-#include "repository.h"
     + #include "revision.h"
     + 
     + static const char diff_files_usage[] =
      
       ## builtin/diff-index.c ##
      @@
     @@ builtin/diff-index.c
       #include "builtin.h"
       #include "config.h"
       #include "diff.h"
     + #include "diff-merges.h"
     + #include "commit.h"
     + #include "preload-index.h"
     +-#include "repository.h"
     + #include "revision.h"
     + #include "setup.h"
     + 
      
       ## builtin/diff-tree.c ##
      @@
     @@ builtin/diff-tree.c
       #include "builtin.h"
       #include "config.h"
       #include "diff.h"
     +@@
     + #include "hex.h"
     + #include "log-tree.h"
     + #include "read-cache-ll.h"
     +-#include "repository.h"
     + #include "revision.h"
     + #include "tmp-objdir.h"
     + #include "tree.h"
      
       ## builtin/diff.c ##
      @@
     @@ builtin/diff.c
      -
      +#define USE_THE_REPOSITORY_VARIABLE
       #include "builtin.h"
     -+#include "repository.h"
       #include "config.h"
       #include "ewah/ewok.h"
     - #include "lockfile.h"
      
       ## builtin/difftool.c ##
      @@
     @@ builtin/difftool.c
      -
      +#define USE_THE_REPOSITORY_VARIABLE
       #include "builtin.h"
     -+#include "repository.h"
     ++
       #include "abspath.h"
       #include "config.h"
       #include "copy.h"
     @@ builtin/fast-export.c
        */
      +#define USE_THE_REPOSITORY_VARIABLE
       #include "builtin.h"
     -+#include "repository.h"
       #include "config.h"
       #include "gettext.h"
     - #include "hex.h"
      
       ## builtin/fast-import.c ##
      @@
     @@ builtin/fast-import.c
       #include "builtin.h"
       #include "abspath.h"
       #include "environment.h"
     + #include "gettext.h"
     + #include "hex.h"
     +-#include "repository.h"
     + #include "config.h"
     + #include "lockfile.h"
     + #include "object.h"
      
       ## builtin/fetch-pack.c ##
      @@
     @@ builtin/fetch.c
       #include "builtin.h"
       #include "advice.h"
       #include "config.h"
     + #include "gettext.h"
     + #include "environment.h"
     + #include "hex.h"
     +-#include "repository.h"
     + #include "refs.h"
     + #include "refspec.h"
     + #include "object-name.h"
      
       ## builtin/fmt-merge-msg.c ##
      @@
     @@ builtin/for-each-repo.c
       #include "builtin.h"
       #include "config.h"
       #include "gettext.h"
     + #include "parse-options.h"
     + #include "path.h"
     +-#include "repository.h"
     + #include "run-command.h"
     + #include "string-list.h"
     + 
      
       ## builtin/fsck.c ##
      @@
     @@ builtin/fsck.c
       #include "builtin.h"
       #include "gettext.h"
       #include "hex.h"
     +-#include "repository.h"
     + #include "config.h"
     + #include "commit.h"
     + #include "tree.h"
      
       ## builtin/fsmonitor--daemon.c ##
      @@
     @@ builtin/fsmonitor--daemon.c
       #include "builtin.h"
       #include "abspath.h"
       #include "config.h"
     +@@
     + #include "compat/fsmonitor/fsm-health.h"
     + #include "compat/fsmonitor/fsm-listen.h"
     + #include "fsmonitor--daemon.h"
     +-#include "repository.h"
     ++
     + #include "simple-ipc.h"
     + #include "khash.h"
     + #include "run-command.h"
      
       ## builtin/gc.c ##
      @@
     @@ builtin/gc.c
       #include "builtin.h"
       #include "abspath.h"
       #include "date.h"
     + #include "environment.h"
     + #include "hex.h"
     +-#include "repository.h"
     + #include "config.h"
     + #include "tempfile.h"
     + #include "lockfile.h"
      
       ## builtin/grep.c ##
      @@
     @@ builtin/grep.c
       #include "builtin.h"
       #include "abspath.h"
       #include "gettext.h"
     + #include "hex.h"
     +-#include "repository.h"
     + #include "config.h"
     + #include "tag.h"
     + #include "tree-walk.h"
      
       ## builtin/hash-object.c ##
      @@
     @@ builtin/hash-object.c
        */
      +#define USE_THE_REPOSITORY_VARIABLE
       #include "builtin.h"
     -+#include "repository.h"
       #include "abspath.h"
       #include "config.h"
     - #include "gettext.h"
      
       ## builtin/help.c ##
      @@
     @@ builtin/index-pack.c
       #include "config.h"
       #include "delta.h"
      
     + ## builtin/init-db.c ##
     +@@
     +  *
     +  * Copyright (C) Linus Torvalds, 2005
     +  */
     ++#define USE_THE_REPOSITORY_VARIABLE
     + #include "builtin.h"
     + #include "abspath.h"
     + #include "environment.h"
     +@@
     + #include "parse-options.h"
     + #include "path.h"
     + #include "refs.h"
     +-#include "repository.h"
     + #include "setup.h"
     + #include "strbuf.h"
     + 
     +
       ## builtin/interpret-trailers.c ##
      @@
        * Copyright (c) 2013, 2014 Christian Couder <chriscool@tuxfamily.org>
     @@ builtin/log.c
       #include "builtin.h"
       #include "abspath.h"
       #include "config.h"
     +@@
     + #include "mailmap.h"
     + #include "progress.h"
     + #include "commit-slab.h"
     +-#include "repository.h"
     ++
     + #include "commit-reach.h"
     + #include "range-diff.h"
     + #include "tmp-objdir.h"
      
       ## builtin/ls-files.c ##
      @@
     @@ builtin/ls-files.c
        */
      +#define USE_THE_REPOSITORY_VARIABLE
       #include "builtin.h"
     - #include "repository.h"
     +-#include "repository.h"
       #include "config.h"
     + #include "convert.h"
     + #include "quote.h"
      
       ## builtin/ls-remote.c ##
      @@
     @@ builtin/ls-tree.c
        */
      +#define USE_THE_REPOSITORY_VARIABLE
       #include "builtin.h"
     -+#include "repository.h"
     ++
       #include "config.h"
       #include "gettext.h"
       #include "hex.h"
      
     + ## builtin/mailinfo.c ##
     +@@
     +  * Another stupid program, this one parsing the headers of an
     +  * email to figure out authorship and subject
     +  */
     ++#define USE_THE_REPOSITORY_VARIABLE
     + #include "builtin.h"
     + #include "abspath.h"
     + #include "environment.h"
     +
       ## builtin/merge-base.c ##
      @@
      +#define USE_THE_REPOSITORY_VARIABLE
       #include "builtin.h"
       #include "config.h"
       #include "commit.h"
     +@@
     + #include "hex.h"
     + #include "object-name.h"
     + #include "parse-options.h"
     +-#include "repository.h"
     + #include "commit-reach.h"
     + 
     + static int show_merge_base(struct commit **rev, int rev_nr, int show_all)
      
       ## builtin/merge-file.c ##
      @@
     @@ builtin/merge-index.c
       #include "builtin.h"
       #include "hex.h"
       #include "read-cache-ll.h"
     +-#include "repository.h"
     + #include "run-command.h"
     + #include "sparse-index.h"
     + 
      
       ## builtin/merge-ours.c ##
      @@
     @@ builtin/merge-ours.c
       #include "git-compat-util.h"
       #include "builtin.h"
       #include "diff.h"
     +-#include "repository.h"
     ++
     + 
     + static const char builtin_merge_ours_usage[] =
     + 	"git merge-ours <base>... -- HEAD <remote>...";
      
       ## builtin/merge-recursive.c ##
      @@
     @@ builtin/merge-recursive.c
       #include "builtin.h"
       #include "advice.h"
       #include "gettext.h"
     + #include "hash.h"
     + #include "merge-recursive.h"
     + #include "object-name.h"
     +-#include "repository.h"
     + 
     + static const char builtin_merge_recursive_usage[] =
     + 	"git %s <base>... -- <head> <remote> ...";
      
       ## builtin/merge-tree.c ##
      @@
     @@ builtin/merge-tree.c
       #include "builtin.h"
       #include "tree-walk.h"
       #include "xdiff-interface.h"
     +@@
     + #include "object-name.h"
     + #include "object-store-ll.h"
     + #include "parse-options.h"
     +-#include "repository.h"
     + #include "blob.h"
     + #include "merge-blobs.h"
     + #include "quote.h"
      
       ## builtin/merge.c ##
      @@
     @@ builtin/merge.c
      -
      +#define USE_THE_REPOSITORY_VARIABLE
       #include "builtin.h"
     -+#include "repository.h"
     ++
       #include "abspath.h"
       #include "advice.h"
       #include "config.h"
     @@ builtin/mktree.c
        */
      +#define USE_THE_REPOSITORY_VARIABLE
       #include "builtin.h"
     -+#include "repository.h"
       #include "gettext.h"
       #include "hex.h"
     - #include "quote.h"
      
       ## builtin/multi-pack-index.c ##
      @@
     @@ builtin/mv.c
       
       #include "builtin.h"
       #include "abspath.h"
     +@@
     + #include "string-list.h"
     + #include "parse-options.h"
     + #include "read-cache-ll.h"
     +-#include "repository.h"
     ++
     + #include "setup.h"
     + #include "strvec.h"
     + #include "submodule.h"
      
       ## builtin/name-rev.c ##
      @@
     @@ builtin/name-rev.c
       #include "builtin.h"
       #include "environment.h"
       #include "gettext.h"
     + #include "hex.h"
     +-#include "repository.h"
     + #include "config.h"
     + #include "commit.h"
     + #include "tag.h"
      
       ## builtin/notes.c ##
      @@
     @@ builtin/notes.c
       #include "builtin.h"
       #include "config.h"
       #include "editor.h"
     +@@
     + #include "object-name.h"
     + #include "object-store-ll.h"
     + #include "path.h"
     +-#include "repository.h"
     ++
     + #include "pretty.h"
     + #include "refs.h"
     + #include "exec-cmd.h"
      
       ## builtin/pack-objects.c ##
      @@
     @@ builtin/pack-objects.c
       #include "builtin.h"
       #include "environment.h"
       #include "gettext.h"
     + #include "hex.h"
     +-#include "repository.h"
     + #include "config.h"
     + #include "attr.h"
     + #include "object.h"
      
       ## builtin/pack-redundant.c ##
      @@
     @@ builtin/pack-redundant.c
       
       #include "builtin.h"
       #include "gettext.h"
     + #include "hex.h"
     +-#include "repository.h"
     ++
     + #include "packfile.h"
     + #include "object-store-ll.h"
     + 
      
       ## builtin/pack-refs.c ##
      @@
     @@ builtin/pack-refs.c
       #include "builtin.h"
       #include "config.h"
       #include "gettext.h"
     + #include "parse-options.h"
     + #include "refs.h"
     +-#include "repository.h"
     + #include "revision.h"
     + 
     + static char const * const pack_refs_usage[] = {
      
       ## builtin/patch-id.c ##
      @@
     @@ builtin/push.c
       #include "builtin.h"
       #include "advice.h"
       #include "branch.h"
     +@@
     + #include "transport.h"
     + #include "parse-options.h"
     + #include "pkt-line.h"
     +-#include "repository.h"
     + #include "submodule.h"
     + #include "submodule-config.h"
     + #include "send-pack.h"
      
       ## builtin/range-diff.c ##
      @@
     @@ builtin/range-diff.c
       #include "builtin.h"
       #include "gettext.h"
       #include "object-name.h"
     + #include "parse-options.h"
     + #include "range-diff.h"
     + #include "config.h"
     +-#include "repository.h"
     ++
     + 
     + static const char * const builtin_range_diff_usage[] = {
     + N_("git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>"),
      
       ## builtin/read-tree.c ##
      @@
     @@ builtin/read-tree.c
       #include "builtin.h"
       #include "config.h"
       #include "gettext.h"
     +@@
     + #include "cache-tree.h"
     + #include "unpack-trees.h"
     + #include "parse-options.h"
     +-#include "repository.h"
     + #include "resolve-undo.h"
     + #include "setup.h"
     + #include "sparse-index.h"
      
       ## builtin/rebase.c ##
      @@
     @@ builtin/rebase.c
      -
      +#define USE_THE_REPOSITORY_VARIABLE
       #include "builtin.h"
     -+#include "repository.h"
     ++
       #include "abspath.h"
       #include "environment.h"
       #include "gettext.h"
     @@ builtin/receive-pack.c
      +#define USE_THE_REPOSITORY_VARIABLE
       #include "builtin.h"
       #include "abspath.h"
     - #include "repository.h"
     +-#include "repository.h"
     ++
     + #include "config.h"
     + #include "environment.h"
     + #include "gettext.h"
      
       ## builtin/reflog.c ##
      @@
     @@ builtin/reflog.c
       #include "builtin.h"
       #include "config.h"
       #include "gettext.h"
     +-#include "repository.h"
     + #include "revision.h"
     + #include "reachable.h"
     + #include "wildmatch.h"
      
       ## builtin/refs.c ##
      @@
     @@ builtin/refs.c
       #include "builtin.h"
       #include "config.h"
       #include "fsck.h"
     + #include "parse-options.h"
     + #include "refs.h"
     +-#include "repository.h"
     + #include "strbuf.h"
     + 
     + #define REFS_MIGRATE_USAGE \
      
       ## builtin/remote.c ##
      @@
     @@ builtin/replace.c
        * and Carlos Rica <jasampler@gmail.com> that was itself based on
        * git-tag.sh and mktag.c by Linus Torvalds.
        */
     +-
      +#define USE_THE_REPOSITORY_VARIABLE
     - 
       #include "builtin.h"
       #include "config.h"
     + #include "editor.h"
     +@@
     + #include "object-name.h"
     + #include "object-store-ll.h"
     + #include "replace-object.h"
     +-#include "repository.h"
     + #include "tag.h"
     + #include "wildmatch.h"
     + 
      
       ## builtin/replay.c ##
      @@
     @@ builtin/rerere.c
       #include "builtin.h"
       #include "config.h"
       #include "gettext.h"
     + #include "parse-options.h"
     +-#include "repository.h"
     ++
     + #include "string-list.h"
     + #include "rerere.h"
     + #include "xdiff/xdiff.h"
      
       ## builtin/reset.c ##
      @@
     @@ builtin/reset.c
      -
      +#define USE_THE_REPOSITORY_VARIABLE
       #include "builtin.h"
     -+#include "repository.h"
       #include "advice.h"
       #include "config.h"
     - #include "environment.h"
      
       ## builtin/rev-list.c ##
      @@
     @@ builtin/rev-parse.c
      -
      +#define USE_THE_REPOSITORY_VARIABLE
       #include "builtin.h"
     -+#include "repository.h"
     ++
       #include "abspath.h"
       #include "config.h"
       #include "commit.h"
     @@ builtin/revert.c
       #include "git-compat-util.h"
       #include "builtin.h"
       #include "parse-options.h"
     + #include "diff.h"
     + #include "gettext.h"
     +-#include "repository.h"
     + #include "revision.h"
     + #include "rerere.h"
     + #include "sequencer.h"
      
       ## builtin/rm.c ##
      @@
     @@ builtin/rm.c
       #include "builtin.h"
       #include "advice.h"
       #include "config.h"
     +@@
     + #include "object-name.h"
     + #include "parse-options.h"
     + #include "read-cache.h"
     +-#include "repository.h"
     ++
     + #include "string-list.h"
     + #include "setup.h"
     + #include "sparse-index.h"
      
       ## builtin/send-pack.c ##
      @@
     @@ builtin/shortlog.c
       #include "builtin.h"
       #include "config.h"
       #include "commit.h"
     +@@
     + #include "environment.h"
     + #include "gettext.h"
     + #include "string-list.h"
     +-#include "repository.h"
     + #include "revision.h"
     + #include "utf8.h"
     + #include "mailmap.h"
      
       ## builtin/show-branch.c ##
      @@
     @@ builtin/show-branch.c
       #include "builtin.h"
       #include "config.h"
       #include "environment.h"
     +@@
     + #include "strvec.h"
     + #include "object-name.h"
     + #include "parse-options.h"
     +-#include "repository.h"
     ++
     + #include "dir.h"
     + #include "commit-slab.h"
     + #include "date.h"
      
       ## builtin/show-index.c ##
      @@
     @@ builtin/show-index.c
       #include "builtin.h"
       #include "gettext.h"
       #include "hash.h"
     + #include "hex.h"
     + #include "pack.h"
     + #include "parse-options.h"
     +-#include "repository.h"
     + 
     + static const char *const show_index_usage[] = {
     + 	"git show-index [--object-format=<hash-algorithm>]",
      
       ## builtin/show-ref.c ##
      @@
     @@ builtin/sparse-checkout.c
       #include "builtin.h"
       #include "config.h"
       #include "dir.h"
     +@@
     + #include "object-name.h"
     + #include "parse-options.h"
     + #include "pathspec.h"
     +-#include "repository.h"
     + #include "strbuf.h"
     + #include "string-list.h"
     + #include "lockfile.h"
      
       ## builtin/stash.c ##
      @@
     @@ builtin/submodule--helper.c
       #include "builtin.h"
       #include "abspath.h"
       #include "environment.h"
     + #include "gettext.h"
     + #include "hex.h"
     +-#include "repository.h"
     ++
     + #include "config.h"
     + #include "parse-options.h"
     + #include "quote.h"
      
       ## builtin/symbolic-ref.c ##
      @@
     @@ builtin/tag.c
      -
      +#define USE_THE_REPOSITORY_VARIABLE
       #include "builtin.h"
     -+#include "repository.h"
       #include "advice.h"
       #include "config.h"
     - #include "editor.h"
      
       ## builtin/unpack-file.c ##
      @@
     @@ builtin/update-index.c
        *
        * Copyright (C) Linus Torvalds, 2005
        */
     +-
      +#define USE_THE_REPOSITORY_VARIABLE
     - 
       #include "builtin.h"
       #include "bulk-checkin.h"
     + #include "config.h"
     +@@
     + #include "pathspec.h"
     + #include "dir.h"
     + #include "read-cache.h"
     +-#include "repository.h"
     + #include "setup.h"
     + #include "sparse-index.h"
     + #include "split-index.h"
      
       ## builtin/update-ref.c ##
      @@
     @@ builtin/update-ref.c
       #include "builtin.h"
       #include "config.h"
       #include "gettext.h"
     +@@
     + #include "object-name.h"
     + #include "parse-options.h"
     + #include "quote.h"
     +-#include "repository.h"
     + 
     + static const char * const git_update_ref_usage[] = {
     + 	N_("git update-ref [<options>] -d <refname> [<old-oid>]"),
      
       ## builtin/update-server-info.c ##
      @@
     @@ builtin/upload-archive.c
       #include "builtin.h"
       #include "archive.h"
       #include "path.h"
     + #include "pkt-line.h"
     + #include "sideband.h"
     +-#include "repository.h"
     + #include "run-command.h"
     + #include "strvec.h"
     + 
      
       ## builtin/var.c ##
      @@
     @@ builtin/var.c
        */
      +#define USE_THE_REPOSITORY_VARIABLE
       #include "builtin.h"
     -+#include "repository.h"
     ++
       #include "attr.h"
       #include "config.h"
       #include "editor.h"
     @@ builtin/verify-commit.c
       #include "builtin.h"
       #include "config.h"
       #include "gettext.h"
     + #include "object-name.h"
     +-#include "repository.h"
     + #include "commit.h"
     + #include "parse-options.h"
     + #include "gpg-interface.h"
      
       ## builtin/verify-pack.c ##
      @@
     @@ builtin/verify-tag.c
        */
      +#define USE_THE_REPOSITORY_VARIABLE
       #include "builtin.h"
     -+#include "repository.h"
       #include "config.h"
       #include "gettext.h"
     - #include "tag.h"
      
       ## builtin/worktree.c ##
      @@
     @@ builtin/worktree.c
       #include "builtin.h"
       #include "abspath.h"
       #include "advice.h"
     +@@
     + #include "read-cache-ll.h"
     + #include "refs.h"
     + #include "remote.h"
     +-#include "repository.h"
     + #include "run-command.h"
     + #include "hook.h"
     + #include "sigchain.h"
      
       ## builtin/write-tree.c ##
      @@
     @@ builtin/write-tree.c
       #include "builtin.h"
       #include "config.h"
       #include "environment.h"
     +@@
     + #include "tree.h"
     + #include "cache-tree.h"
     + #include "parse-options.h"
     +-#include "repository.h"
     + 
     + static const char * const write_tree_usage[] = {
     + 	N_("git write-tree [--missing-ok] [--prefix=<prefix>/]"),
 3:  bc909046934 ! 3:  6956d3fe897 add: pass in repo variable instead of global the_repository
     @@ Commit message
          Signed-off-by: John Cai <johncai86@gmail.com>
      
       ## builtin/add.c ##
     +@@
     +  *
     +  * Copyright (C) 2006 Linus Torvalds
     +  */
     +-#define USE_THE_REPOSITORY_VARIABLE
     + #include "builtin.h"
     + #include "advice.h"
     + #include "config.h"
      @@ builtin/add.c: static int pathspec_file_nul;
       static int include_sparse;
       static const char *pathspec_from_file;
       
      -static int chmod_pathspec(struct pathspec *pathspec, char flip, int show_only)
     -+static int chmod_pathspec(struct pathspec *pathspec,
     ++static int chmod_pathspec(struct repository *repo,
     ++			  struct pathspec *pathspec,
      +			  char flip,
     -+			  int show_only,
     -+			  struct repository *repo)
     ++			  int show_only)
       {
       	int i, ret = 0;
       
     @@ builtin/add.c: static int chmod_pathspec(struct pathspec *pathspec, char flip, i
       }
       
      -static int renormalize_tracked_files(const struct pathspec *pathspec, int flags)
     -+static int renormalize_tracked_files(const struct pathspec *pathspec, int flags, struct repository *repo)
     ++static int renormalize_tracked_files(struct repository *repo,
     ++				     const struct pathspec *pathspec,
     ++				     int flags)
       {
       	int i, retval = 0;
       
     @@ builtin/add.c: static int chmod_pathspec(struct pathspec *pathspec, char flip, i
       }
       
      -static char *prune_directory(struct dir_struct *dir, struct pathspec *pathspec, int prefix)
     -+static char *prune_directory(struct dir_struct *dir, struct pathspec *pathspec, int prefix, struct repository *repo)
     ++static char *prune_directory(struct repository *repo,
     ++			     struct dir_struct *dir,
     ++			     struct pathspec *pathspec,
     ++			     int prefix)
       {
       	char *seen;
       	int i;
     @@ builtin/add.c: static char *prune_directory(struct dir_struct *dir, struct paths
       }
       
      -static int refresh(int verbose, const struct pathspec *pathspec)
     -+static int refresh(int verbose, const struct pathspec *pathspec, struct repository *repo)
     ++static int refresh(struct repository *repo, int verbose, const struct pathspec *pathspec)
       {
       	char *seen;
       	int i, ret = 0;
     @@ builtin/add.c: static int refresh(int verbose, const struct pathspec *pathspec)
       }
       
      -int interactive_add(const char **argv, const char *prefix, int patch)
     -+int interactive_add(const char **argv, const char *prefix, int patch, struct repository *repo)
     ++int interactive_add(struct repository *repo,
     ++		    const char **argv,
     ++		    const char *prefix,
     ++		    int patch)
       {
       	struct pathspec pathspec;
       	int ret;
     @@ builtin/add.c: int interactive_add(const char **argv, const char *prefix, int pa
       	return ret;
       }
       
     --static int edit_patch(int argc, const char **argv, const char *prefix)
     -+static int edit_patch(int argc, const char **argv, const char *prefix, struct repository *repo)
     +-static int edit_patch(int argc,
     ++static int edit_patch(struct repository *repo,
     ++		      int argc,
     + 		      const char **argv,
     +-		      const char *prefix,
     +-		      struct repository *repo UNUSED)
     ++		      const char *prefix)
       {
     - 	char *file = git_pathdup("ADD_EDIT.patch");
     +-	char *file = git_pathdup("ADD_EDIT.patch");
     ++	char *file = repo_git_path(repo, "ADD_EDIT.patch");
       	struct child_process child = CHILD_PROCESS_INIT;
     -@@ builtin/add.c: static int edit_patch(int argc, const char **argv, const char *prefix)
     + 	struct rev_info rev;
     + 	int out;
     + 	struct stat st;
       
     - 	git_config(git_diff_basic_config, NULL); /* no "diff" UI options */
     +-	git_config(git_diff_basic_config, NULL); /* no "diff" UI options */
     ++	repo_config(repo, git_diff_basic_config, NULL);
       
      -	if (repo_read_index(the_repository) < 0)
      +	if (repo_read_index(repo) < 0)
     @@ builtin/add.c: static void check_embedded_repo(const char *path)
       }
       
      -static int add_files(struct dir_struct *dir, int flags)
     -+static int add_files(struct dir_struct *dir, int flags, struct repository *repo)
     ++static int add_files(struct repository *repo, struct dir_struct *dir, int flags)
       {
       	int i, exit_status = 0;
       	struct string_list matched_sparse_paths = STRING_LIST_INIT_NODUP;
     @@ builtin/add.c: static int add_files(struct dir_struct *dir, int flags)
       				die(_("adding files failed"));
       			exit_status = 1;
      @@ builtin/add.c: static int add_files(struct dir_struct *dir, int flags)
     - 	return exit_status;
     - }
     - 
     --int cmd_add(int argc, const char **argv, const char *prefix, struct repository *repository UNUSED)
     -+int cmd_add(int argc, const char **argv, const char *prefix, struct repository *repo)
     + int cmd_add(int argc,
     + 	    const char **argv,
     + 	    const char *prefix,
     +-	    struct repository *repo UNUSED)
     ++	    struct repository *repo)
       {
       	int exit_status = 0;
       	struct pathspec pathspec;
     -@@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, struct repository *
     +@@ builtin/add.c: int cmd_add(int argc,
     + 	char *ps_matched = NULL;
     + 	struct lock_file lock_file = LOCK_INIT;
     + 
     +-	git_config(add_config, NULL);
     ++	repo_config(repo, add_config, NULL);
     + 
     + 	argc = parse_options(argc, argv, prefix, builtin_add_options,
     + 			  builtin_add_usage, PARSE_OPT_KEEP_ARGV0);
     +@@ builtin/add.c: int cmd_add(int argc,
       			die(_("options '%s' and '%s' cannot be used together"), "--dry-run", "--interactive/--patch");
       		if (pathspec_from_file)
       			die(_("options '%s' and '%s' cannot be used together"), "--pathspec-from-file", "--interactive/--patch");
      -		exit(interactive_add(argv + 1, prefix, patch_interactive));
     -+		exit(interactive_add(argv + 1, prefix, patch_interactive, repo));
     ++		exit(interactive_add(repo, argv + 1, prefix, patch_interactive));
       	}
       
       	if (edit_interactive) {
       		if (pathspec_from_file)
       			die(_("options '%s' and '%s' cannot be used together"), "--pathspec-from-file", "--edit");
     --		return(edit_patch(argc, argv, prefix));
     -+		return(edit_patch(argc, argv, prefix, repo));
     +-		return(edit_patch(argc, argv, prefix, the_repository));
     ++		return(edit_patch(repo, argc, argv, prefix));
       	}
       	argc--;
       	argv++;
     -@@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, struct repository *
     +@@ builtin/add.c: int cmd_add(int argc,
       	add_new_files = !take_worktree_changes && !refresh_only && !add_renormalize;
       	require_pathspec = !(take_worktree_changes || (0 < addremove_explicit));
       
     @@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, stru
       
       	/*
       	 * Check the "pathspec '%s' did not match any files" block
     -@@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, struct repository *
     +@@ builtin/add.c: int cmd_add(int argc,
       		 (!(addremove || take_worktree_changes)
       		  ? ADD_CACHE_IGNORE_REMOVAL : 0));
       
     @@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, stru
       
       	if (add_new_files) {
       		int baselen;
     -@@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, struct repository *
     +@@ builtin/add.c: int cmd_add(int argc,
       		}
       
       		/* This picks up the paths that are not tracked */
     @@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, stru
      +		baselen = fill_directory(&dir, repo->index, &pathspec);
       		if (pathspec.nr)
      -			seen = prune_directory(&dir, &pathspec, baselen);
     -+			seen = prune_directory(&dir, &pathspec, baselen, repo);
     ++			seen = prune_directory(repo, &dir, &pathspec, baselen);
       	}
       
       	if (refresh_only) {
      -		exit_status |= refresh(verbose, &pathspec);
     -+		exit_status |= refresh(verbose, &pathspec, repo);
     ++		exit_status |= refresh(repo, verbose, &pathspec);
       		goto finish;
       	}
       
     -@@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, struct repository *
     +@@ builtin/add.c: int cmd_add(int argc,
       
       		if (!seen)
       			seen = find_pathspecs_matching_against_index(&pathspec,
     @@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, stru
       
       		/*
       		 * file_exists() assumes exact match
     -@@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, struct repository *
     +@@ builtin/add.c: int cmd_add(int argc,
       			    !file_exists(path)) {
       				if (ignore_missing) {
       					int dtype = DT_UNKNOWN;
     @@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, stru
       								path, pathspec.items[i].len);
       				} else
       					die(_("pathspec '%s' did not match any files"),
     -@@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, struct repository *
     +@@ builtin/add.c: int cmd_add(int argc,
       
       	ps_matched = xcalloc(pathspec.nr, 1);
       	if (add_renormalize)
      -		exit_status |= renormalize_tracked_files(&pathspec, flags);
     -+		exit_status |= renormalize_tracked_files(&pathspec, flags, repo);
     ++		exit_status |= renormalize_tracked_files(repo, &pathspec, flags);
       	else
      -		exit_status |= add_files_to_cache(the_repository, prefix,
      +		exit_status |= add_files_to_cache(repo, prefix,
       						  &pathspec, ps_matched,
       						  include_sparse, flags);
       
     -@@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, struct repository *
     +@@ builtin/add.c: int cmd_add(int argc,
       		exit(128);
       
       	if (add_new_files)
      -		exit_status |= add_files(&dir, flags);
     -+		exit_status |= add_files(&dir, flags, repo);
     ++		exit_status |= add_files(repo, &dir, flags);
       
       	if (chmod_arg && pathspec.nr)
      -		exit_status |= chmod_pathspec(&pathspec, chmod_arg[0], show_only);
     -+		exit_status |= chmod_pathspec(&pathspec, chmod_arg[0], show_only, repo);
     ++		exit_status |= chmod_pathspec(repo, &pathspec, chmod_arg[0], show_only);
       	end_odb_transaction();
       
       finish:
     @@ builtin/commit.c: static const char *prepare_index(const char **argv, const char
       		setenv(INDEX_ENVIRONMENT, the_repository->index_file, 1);
       
      -		if (interactive_add(argv, prefix, patch_interactive) != 0)
     -+		if (interactive_add(argv, prefix, patch_interactive, the_repository) != 0)
     ++		if (interactive_add(the_repository, argv, prefix, patch_interactive) != 0)
       			die(_("interactive add failed"));
       
       		the_repository->index_file = old_repo_index_file;
      
       ## commit.h ##
     -@@
     - #define COMMIT_H
     - 
     - #include "object.h"
     -+#include "repository.h"
     - 
     - struct signature_check;
     - struct strbuf;
      @@ commit.h: struct oid_array;
       struct ref;
       int for_each_commit_graft(each_commit_graft_fn, void *);
       
      -int interactive_add(const char **argv, const char *prefix, int patch);
     -+int interactive_add(const char **argv, const char *prefix, int patch, struct repository *repo);
     ++int interactive_add(struct repository *repo,
     ++		    const char **argv,
     ++		    const char *prefix,
     ++		    int patch);
       
       struct commit_extra_header {
       	struct commit_extra_header *next;

-- 
gitgitgadget

  parent reply	other threads:[~2024-09-10 20:59 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-05 16:57 [PATCH 0/3] Add repository parameter to builtins John Cai via GitGitGadget
2024-09-05 16:57 ` [PATCH 1/3] builtin: add a repository parameter for builtin functions John Cai via GitGitGadget
2024-09-06 10:46   ` Patrick Steinhardt
2024-09-09 21:08     ` John Cai
2024-09-05 16:57 ` [PATCH 2/3] builtin: remove USE_THE_REPOSITORY_VARIABLE from builtin.h John Cai via GitGitGadget
2024-09-05 17:50   ` Junio C Hamano
2024-09-06 10:46     ` Patrick Steinhardt
2024-09-06 15:43   ` Junio C Hamano
2024-09-05 16:57 ` [PATCH 3/3] add: pass in repo variable instead of global the_repository John Cai via GitGitGadget
2024-09-06 10:46   ` Patrick Steinhardt
2024-09-05 17:21 ` [PATCH 0/3] Add repository parameter to builtins Junio C Hamano
2024-09-10 20:59 ` John Cai via GitGitGadget [this message]
2024-09-10 20:59   ` [PATCH v2 1/3] builtin: add a repository parameter for builtin functions John Cai via GitGitGadget
2024-09-10 21:40     ` Junio C Hamano
2024-09-11 21:08       ` Junio C Hamano
2024-09-12  9:45         ` Patrick Steinhardt
2024-09-12 10:43           ` Jeff King
2024-09-12 10:50             ` Jeff King
2024-09-12 10:55               ` Patrick Steinhardt
2024-09-13 17:54                 ` John Cai
2024-09-10 20:59   ` [PATCH v2 2/3] builtin: remove USE_THE_REPOSITORY_VARIABLE from builtin.h John Cai via GitGitGadget
2024-09-11 18:15     ` Junio C Hamano
2024-09-13 18:00       ` John Cai
2024-09-10 20:59   ` [PATCH v2 3/3] add: pass in repo variable instead of global the_repository John Cai via GitGitGadget
2024-09-11 18:23     ` Junio C Hamano
2024-09-13 21:16   ` [PATCH v3 0/4] Add repository parameter to builtins John Cai via GitGitGadget
2024-09-13 21:16     ` [PATCH v3 1/4] builtin: add a repository parameter for builtin functions John Cai via GitGitGadget
2024-09-13 21:16     ` [PATCH v3 2/4] builtin: remove USE_THE_REPOSITORY_VARIABLE from builtin.h John Cai via GitGitGadget
2024-09-13 21:32       ` Junio C Hamano
2024-09-13 21:16     ` [PATCH v3 3/4] builtin: remove USE_THE_REPOSITORY for those without the_repository John Cai via GitGitGadget
2024-09-13 21:16     ` [PATCH v3 4/4] add: pass in repo variable instead of global the_repository John Cai via GitGitGadget
2024-09-13 21:35       ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=pull.1778.v2.git.git.1726001960.gitgitgadget@gmail.com \
    --to=gitgitgadget@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=johncai86@gmail.com \
    --cc=ps@pks.im \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.