{"thread":{"id":"62067","subject":"[PATCH 0/3] Add repository parameter to builtins","startedAt":"2024-09-05T16:57:52Z","lastAt":"2024-09-13T21:35:42Z","messageCount":32,"participants":["John Cai via GitGitGadget","Junio C Hamano","Patrick Steinhardt","John Cai","Jeff King"],"isPatch":true,"patchVersion":1,"patchTotal":3},"messages":[{"id":"502262","messageId":"pull.1778.git.git.1725555467.gitgitgadget@gmail.com","threadId":"62067","inReplyTo":null,"subject":"[PATCH 0/3] Add repository parameter to builtins","fromName":"John Cai via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2024-09-05T16:57:44Z","receivedAt":"2024-09-05T16:57:52Z","isPatch":true,"sender":{"key":"johncai86@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2354211?v=4"},"body":"As part of the effort to remove global state of the_repository, add a\nrepository parameter to builtins so that a repository variable can be passed\ndown. The patches are ordered as follows:\n\n 1. Changes the signature of builtins and passes the_repository down in\n    git.c to be called by all builtins.\n 2. Remove USE_THE_REPOSITORY_VARIABLE from builtin.h, and instead add it to\n    each individual builtin. This paves the way for a migration process\n    whereby each builtin can be migrated away from using the_repository.\n 3. As an example, migrate builtin/add.c to get rid of the_repository by\n    instead passing the repository argument down into helper functions.\n\nJohn Cai (3):\n  builtin: add a repository parameter for builtin functions\n  builtin: remove USE_THE_REPOSITORY_VARIABLE from builtin.h\n  add: pass in repo variable instead of global the_repository\n\n builtin.h                          | 285 ++++++++++++++---------------\n builtin/add.c                      |  99 +++++-----\n builtin/am.c                       |   3 +-\n builtin/annotate.c                 |   4 +-\n builtin/apply.c                    |   3 +-\n builtin/archive.c                  |   3 +-\n builtin/bisect.c                   |   3 +-\n builtin/blame.c                    |   4 +-\n builtin/branch.c                   |   5 +-\n builtin/bugreport.c                |   3 +-\n builtin/bundle.c                   |   3 +-\n builtin/cat-file.c                 |   7 +-\n builtin/check-attr.c               |   3 +-\n builtin/check-ignore.c             |   3 +-\n builtin/check-mailmap.c            |   3 +-\n builtin/check-ref-format.c         |   2 +-\n builtin/checkout--worker.c         |   3 +-\n builtin/checkout-index.c           |   3 +-\n builtin/checkout.c                 |   7 +-\n builtin/clean.c                    |   4 +-\n builtin/clone.c                    |   5 +-\n builtin/column.c                   |   4 +-\n builtin/commit-graph.c             |   3 +-\n builtin/commit-tree.c              |   3 +-\n builtin/commit.c                   |   9 +-\n builtin/config.c                   |   3 +-\n builtin/count-objects.c            |   4 +-\n builtin/credential-cache--daemon.c |   5 +-\n builtin/credential-cache.c         |   2 +-\n builtin/credential-store.c         |   3 +-\n builtin/credential.c               |   4 +-\n builtin/describe.c                 |   5 +-\n builtin/diagnose.c                 |   2 +-\n builtin/diff-files.c               |   3 +-\n builtin/diff-index.c               |   3 +-\n builtin/diff-tree.c                |   3 +-\n builtin/diff.c                     |   5 +-\n builtin/difftool.c                 |   5 +-\n builtin/fast-export.c              |   4 +-\n builtin/fast-import.c              |   3 +-\n builtin/fetch-pack.c               |   3 +-\n builtin/fetch.c                    |   3 +-\n builtin/fmt-merge-msg.c            |   3 +-\n builtin/for-each-ref.c             |   3 +-\n builtin/for-each-repo.c            |   3 +-\n builtin/fsck.c                     |   3 +-\n builtin/fsmonitor--daemon.c        |   5 +-\n builtin/gc.c                       |   6 +-\n builtin/get-tar-commit-id.c        |   2 +-\n builtin/grep.c                     |   3 +-\n builtin/hash-object.c              |   4 +-\n builtin/help.c                     |   4 +-\n builtin/hook.c                     |   3 +-\n builtin/index-pack.c               |   3 +-\n builtin/init-db.c                  |   2 +-\n builtin/interpret-trailers.c       |   4 +-\n builtin/log.c                      |  13 +-\n builtin/ls-files.c                 |   3 +-\n builtin/ls-remote.c                |   3 +-\n builtin/ls-tree.c                  |   4 +-\n builtin/mailinfo.c                 |   2 +-\n builtin/mailsplit.c                |   2 +-\n builtin/merge-base.c               |   3 +-\n builtin/merge-file.c               |   3 +-\n builtin/merge-index.c              |   3 +-\n builtin/merge-ours.c               |   3 +-\n builtin/merge-recursive.c          |   3 +-\n builtin/merge-tree.c               |   3 +-\n builtin/merge.c                    |   9 +-\n builtin/mktag.c                    |   3 +-\n builtin/mktree.c                   |   4 +-\n builtin/multi-pack-index.c         |   3 +-\n builtin/mv.c                       |   3 +-\n builtin/name-rev.c                 |   3 +-\n builtin/notes.c                    |   4 +-\n builtin/pack-objects.c             |   3 +-\n builtin/pack-redundant.c           |   3 +-\n builtin/pack-refs.c                |   3 +-\n builtin/patch-id.c                 |   3 +-\n builtin/prune-packed.c             |   2 +-\n builtin/prune.c                    |   3 +-\n builtin/pull.c                     |   3 +-\n builtin/push.c                     |   3 +-\n builtin/range-diff.c               |   3 +-\n builtin/read-tree.c                |   4 +-\n builtin/rebase.c                   |   5 +-\n builtin/receive-pack.c             |   3 +-\n builtin/reflog.c                   |   7 +-\n builtin/refs.c                     |   3 +-\n builtin/remote-ext.c               |   2 +-\n builtin/remote-fd.c                |   2 +-\n builtin/remote.c                   |   3 +-\n builtin/repack.c                   |   3 +-\n builtin/replace.c                  |   3 +-\n builtin/replay.c                   |   3 +-\n builtin/rerere.c                   |   3 +-\n builtin/reset.c                    |   5 +-\n builtin/rev-list.c                 |   3 +-\n builtin/rev-parse.c                |   5 +-\n builtin/revert.c                   |   5 +-\n builtin/rm.c                       |   4 +-\n builtin/send-pack.c                |   3 +-\n builtin/shortlog.c                 |   3 +-\n builtin/show-branch.c              |   3 +-\n builtin/show-index.c               |   3 +-\n builtin/show-ref.c                 |   3 +-\n builtin/sparse-checkout.c          |   3 +-\n builtin/stash.c                    |   3 +-\n builtin/stripspace.c               |   3 +-\n builtin/submodule--helper.c        |   3 +-\n builtin/symbolic-ref.c             |   3 +-\n builtin/tag.c                      |   5 +-\n builtin/unpack-file.c              |   3 +-\n builtin/unpack-objects.c           |   3 +-\n builtin/update-index.c             |   3 +-\n builtin/update-ref.c               |   3 +-\n builtin/update-server-info.c       |   3 +-\n builtin/upload-archive.c           |   5 +-\n builtin/upload-pack.c              |   2 +-\n builtin/var.c                      |   4 +-\n builtin/verify-commit.c            |   3 +-\n builtin/verify-pack.c              |   3 +-\n builtin/verify-tag.c               |   4 +-\n builtin/worktree.c                 |   3 +-\n builtin/write-tree.c               |   4 +-\n commit.h                           |   3 +-\n git.c                              |  14 +-\n help.c                             |   3 +-\n 128 files changed, 477 insertions(+), 366 deletions(-)\n\n\nbase-commit: 4590f2e9412378c61eac95966709c78766d326ba\nPublished-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1778%2Fjohn-cai%2Fjc%2Fadd-the-repository-to-builtin-signature-v1\nFetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1778/john-cai/jc/add-the-repository-to-builtin-signature-v1\nPull-Request: https://github.com/git/git/pull/1778\n-- \ngitgitgadget\n"},{"id":"502264","messageId":"17acc1e054c26b67659df17db828b106c005ffea.1725555468.git.gitgitgadget@gmail.com","threadId":"62067","inReplyTo":"pull.1778.git.git.1725555467.gitgitgadget@gmail.com","subject":"[PATCH 2/3] builtin: remove USE_THE_REPOSITORY_VARIABLE from builtin.h","fromName":"John Cai via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2024-09-05T16:57:46Z","receivedAt":"2024-09-05T16:57:54Z","isPatch":true,"sender":{"key":"johncai86@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2354211?v=4"},"body":"From: John Cai <johncai86@gmail.com>\n\nInstead of including USE_THE_REPOSITORY_VARIABLE by default on every\nbuiltin, remove it from builtin.h and add it where necessary to\nindividual builtins/*. The next step will be to migrate each builtin\nfrom having to use the_repository.\n\nSigned-off-by: John Cai <johncai86@gmail.com>\n---\n builtin.h                          | 8 --------\n builtin/add.c                      | 2 +-\n builtin/am.c                       | 1 +\n builtin/apply.c                    | 1 +\n builtin/archive.c                  | 1 +\n builtin/bisect.c                   | 1 +\n builtin/blame.c                    | 2 +-\n builtin/branch.c                   | 3 ++-\n builtin/bugreport.c                | 1 +\n builtin/bundle.c                   | 1 +\n builtin/cat-file.c                 | 3 ++-\n builtin/check-attr.c               | 1 +\n builtin/check-ignore.c             | 1 +\n builtin/check-mailmap.c            | 1 +\n builtin/checkout--worker.c         | 1 +\n builtin/checkout-index.c           | 1 +\n builtin/checkout.c                 | 1 +\n builtin/clean.c                    | 2 +-\n builtin/clone.c                    | 3 ++-\n builtin/column.c                   | 2 ++\n builtin/commit-graph.c             | 1 +\n builtin/commit-tree.c              | 1 +\n builtin/commit.c                   | 3 ++-\n builtin/config.c                   | 1 +\n builtin/count-objects.c            | 2 +-\n builtin/credential-cache--daemon.c | 1 +\n builtin/credential-store.c         | 1 +\n builtin/credential.c               | 2 ++\n builtin/describe.c                 | 1 +\n builtin/diff-files.c               | 1 +\n builtin/diff-index.c               | 1 +\n builtin/diff-tree.c                | 1 +\n builtin/diff.c                     | 3 ++-\n builtin/difftool.c                 | 3 ++-\n builtin/fast-export.c              | 2 ++\n builtin/fast-import.c              | 1 +\n builtin/fetch-pack.c               | 1 +\n builtin/fetch.c                    | 1 +\n builtin/fmt-merge-msg.c            | 1 +\n builtin/for-each-ref.c             | 1 +\n builtin/for-each-repo.c            | 1 +\n builtin/fsck.c                     | 1 +\n builtin/fsmonitor--daemon.c        | 1 +\n builtin/gc.c                       | 2 +-\n builtin/grep.c                     | 1 +\n builtin/hash-object.c              | 2 ++\n builtin/help.c                     | 2 ++\n builtin/hook.c                     | 1 +\n builtin/index-pack.c               | 1 +\n builtin/interpret-trailers.c       | 2 +-\n builtin/log.c                      | 1 +\n builtin/ls-files.c                 | 1 +\n builtin/ls-remote.c                | 1 +\n builtin/ls-tree.c                  | 2 ++\n builtin/merge-base.c               | 1 +\n builtin/merge-file.c               | 1 +\n builtin/merge-index.c              | 1 +\n builtin/merge-ours.c               | 1 +\n builtin/merge-recursive.c          | 1 +\n builtin/merge-tree.c               | 1 +\n builtin/merge.c                    | 3 ++-\n builtin/mktag.c                    | 1 +\n builtin/mktree.c                   | 2 ++\n builtin/multi-pack-index.c         | 1 +\n builtin/mv.c                       | 1 +\n builtin/name-rev.c                 | 1 +\n builtin/notes.c                    | 2 +-\n builtin/pack-objects.c             | 1 +\n builtin/pack-redundant.c           | 1 +\n builtin/pack-refs.c                | 1 +\n builtin/patch-id.c                 | 1 +\n builtin/prune.c                    | 1 +\n builtin/pull.c                     | 1 +\n builtin/push.c                     | 1 +\n builtin/range-diff.c               | 1 +\n builtin/read-tree.c                | 2 +-\n builtin/rebase.c                   | 3 ++-\n builtin/receive-pack.c             | 1 +\n builtin/reflog.c                   | 1 +\n builtin/refs.c                     | 1 +\n builtin/remote.c                   | 1 +\n builtin/repack.c                   | 1 +\n builtin/replace.c                  | 1 +\n builtin/replay.c                   | 1 +\n builtin/rerere.c                   | 1 +\n builtin/reset.c                    | 3 ++-\n builtin/rev-list.c                 | 1 +\n builtin/rev-parse.c                | 3 ++-\n builtin/revert.c                   | 1 +\n builtin/rm.c                       | 2 +-\n builtin/send-pack.c                | 1 +\n builtin/shortlog.c                 | 1 +\n builtin/show-branch.c              | 1 +\n builtin/show-index.c               | 1 +\n builtin/show-ref.c                 | 1 +\n builtin/sparse-checkout.c          | 1 +\n builtin/stash.c                    | 1 +\n builtin/stripspace.c               | 1 +\n builtin/submodule--helper.c        | 1 +\n builtin/symbolic-ref.c             | 1 +\n builtin/tag.c                      | 3 ++-\n builtin/unpack-file.c              | 1 +\n builtin/unpack-objects.c           | 1 +\n builtin/update-index.c             | 1 +\n builtin/update-ref.c               | 1 +\n builtin/update-server-info.c       | 1 +\n builtin/upload-archive.c           | 1 +\n builtin/var.c                      | 2 ++\n builtin/verify-commit.c            | 1 +\n builtin/verify-pack.c              | 1 +\n builtin/verify-tag.c               | 2 ++\n builtin/worktree.c                 | 1 +\n builtin/write-tree.c               | 2 +-\n 113 files changed, 132 insertions(+), 29 deletions(-)\n\ndiff --git a/builtin.h b/builtin.h\nindex fc6fc8ffed8..f7b166b3348 100644\n--- a/builtin.h\n+++ b/builtin.h\n@@ -1,14 +1,6 @@\n #ifndef BUILTIN_H\n #define BUILTIN_H\n \n-/*\n- * TODO: Almost all of our builtins access `the_repository` by necessity\n- * because they do not get passed a pointer to it. We should adapt the function\n- * signature of those main functions to accept a `struct repository *` and then\n- * remove the macro here.\n- */\n-#define USE_THE_REPOSITORY_VARIABLE\n-\n #include \"git-compat-util.h\"\n #include \"repository.h\"\n \ndiff --git a/builtin/add.c b/builtin/add.c\nindex 3b9bc93ed9a..dac832df3e7 100644\n--- a/builtin/add.c\n+++ b/builtin/add.c\n@@ -3,7 +3,7 @@\n  *\n  * Copyright (C) 2006 Linus Torvalds\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"config.h\"\ndiff --git a/builtin/am.c b/builtin/am.c\nindex 830c295314b..0546aee12ad 100644\n--- a/builtin/am.c\n+++ b/builtin/am.c\n@@ -4,6 +4,7 @@\n  * Based on git-am.sh by Junio C Hamano.\n  */\n \n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"advice.h\"\ndiff --git a/builtin/apply.c b/builtin/apply.c\nindex 923ce992bdd..456b1498067 100644\n--- a/builtin/apply.c\n+++ b/builtin/apply.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"repository.h\"\ndiff --git a/builtin/archive.c b/builtin/archive.c\nindex 21e5e3b877b..e1743b93ac0 100644\n--- a/builtin/archive.c\n+++ b/builtin/archive.c\n@@ -2,6 +2,7 @@\n  * Copyright (c) 2006 Franck Bui-Huu\n  * Copyright (c) 2006 Rene Scharfe\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"archive.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/bisect.c b/builtin/bisect.c\nindex 8cf6167df61..23af9a3ae4d 100644\n--- a/builtin/bisect.c\n+++ b/builtin/bisect.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"copy.h\"\n #include \"environment.h\"\ndiff --git a/builtin/blame.c b/builtin/blame.c\nindex 522f564d6b0..2d263074e90 100644\n--- a/builtin/blame.c\n+++ b/builtin/blame.c\n@@ -4,7 +4,7 @@\n  * Copyright (c) 2006, 2014 by its authors\n  * See COPYING for licensing conditions\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"color.h\"\ndiff --git a/builtin/branch.c b/builtin/branch.c\nindex e20420059a2..8a5424c836f 100644\n--- a/builtin/branch.c\n+++ b/builtin/branch.c\n@@ -4,8 +4,9 @@\n  * Copyright (c) 2006 Kristian Høgsberg <krh@redhat.com>\n  * Based on git-branch.sh by Junio C Hamano.\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+#include \"repository.h\"\n #include \"config.h\"\n #include \"color.h\"\n #include \"editor.h\"\ndiff --git a/builtin/bugreport.c b/builtin/bugreport.c\nindex 5269f073d59..428d3a26f80 100644\n--- a/builtin/bugreport.c\n+++ b/builtin/bugreport.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"editor.h\"\ndiff --git a/builtin/bundle.c b/builtin/bundle.c\nindex e26c1f7d4a7..f54559a54ea 100644\n--- a/builtin/bundle.c\n+++ b/builtin/bundle.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/cat-file.c b/builtin/cat-file.c\nindex 6e6f134eab1..34888633e4f 100644\n--- a/builtin/cat-file.c\n+++ b/builtin/cat-file.c\n@@ -3,8 +3,9 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+#include \"repository.h\"\n #include \"config.h\"\n #include \"convert.h\"\n #include \"diff.h\"\ndiff --git a/builtin/check-attr.c b/builtin/check-attr.c\nindex 0f180350bec..704da2743bf 100644\n--- a/builtin/check-attr.c\n+++ b/builtin/check-attr.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"attr.h\"\ndiff --git a/builtin/check-ignore.c b/builtin/check-ignore.c\nindex 4067127c8b4..319676e2b8e 100644\n--- a/builtin/check-ignore.c\n+++ b/builtin/check-ignore.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"dir.h\"\ndiff --git a/builtin/check-mailmap.c b/builtin/check-mailmap.c\nindex 07ab8fa9b3c..18733e78fb6 100644\n--- a/builtin/check-mailmap.c\n+++ b/builtin/check-mailmap.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/checkout--worker.c b/builtin/checkout--worker.c\nindex 61758a11d5d..369097aa43e 100644\n--- a/builtin/checkout--worker.c\n+++ b/builtin/checkout--worker.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"entry.h\"\ndiff --git a/builtin/checkout-index.c b/builtin/checkout-index.c\nindex dcf58a4fe13..118845bcc25 100644\n--- a/builtin/checkout-index.c\n+++ b/builtin/checkout-index.c\n@@ -4,6 +4,7 @@\n  * Copyright (C) 2005 Linus Torvalds\n  *\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n \n #include \"builtin.h\"\n #include \"config.h\"\ndiff --git a/builtin/checkout.c b/builtin/checkout.c\nindex c43bba082f5..74052571026 100644\n--- a/builtin/checkout.c\n+++ b/builtin/checkout.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"branch.h\"\ndiff --git a/builtin/clean.c b/builtin/clean.c\nindex d4e00f4f3af..f3eb6a0886e 100644\n--- a/builtin/clean.c\n+++ b/builtin/clean.c\n@@ -5,7 +5,7 @@\n  *\n  * Based on git-clean.sh by Pavel Roskin\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"config.h\"\ndiff --git a/builtin/clone.c b/builtin/clone.c\nindex fb820861cd9..9772a9723e7 100644\n--- a/builtin/clone.c\n+++ b/builtin/clone.c\n@@ -7,8 +7,9 @@\n  *\n  * Clone a repository into a different directory that does not yet exist.\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+#include \"repository.h\"\n #include \"abspath.h\"\n #include \"advice.h\"\n #include \"config.h\"\ndiff --git a/builtin/column.c b/builtin/column.c\nindex ca2b522284e..e3e95a9ee20 100644\n--- a/builtin/column.c\n+++ b/builtin/column.c\n@@ -1,3 +1,5 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n+\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/commit-graph.c b/builtin/commit-graph.c\nindex 67e27ef0cd7..83e566de652 100644\n--- a/builtin/commit-graph.c\n+++ b/builtin/commit-graph.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"commit.h\"\n #include \"config.h\"\ndiff --git a/builtin/commit-tree.c b/builtin/commit-tree.c\nindex 42f88d007ff..2e7e2ecb203 100644\n--- a/builtin/commit-tree.c\n+++ b/builtin/commit-tree.c\n@@ -3,6 +3,7 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/commit.c b/builtin/commit.c\nindex 27c807cde08..141c8d85620 100644\n--- a/builtin/commit.c\n+++ b/builtin/commit.c\n@@ -4,8 +4,9 @@\n  * Copyright (c) 2007 Kristian Høgsberg <krh@redhat.com>\n  * Based on git-commit.sh by Junio C Hamano and Linus Torvalds\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+#include \"repository.h\"\n #include \"advice.h\"\n #include \"config.h\"\n #include \"lockfile.h\"\ndiff --git a/builtin/config.c b/builtin/config.c\nindex 8604986fa98..69b2e857888 100644\n--- a/builtin/config.c\n+++ b/builtin/config.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"config.h\"\ndiff --git a/builtin/count-objects.c b/builtin/count-objects.c\nindex 74225ff2488..7d9d7cd94ab 100644\n--- a/builtin/count-objects.c\n+++ b/builtin/count-objects.c\n@@ -3,7 +3,7 @@\n  *\n  * Copyright (c) 2006 Junio C Hamano\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"dir.h\"\ndiff --git a/builtin/credential-cache--daemon.c b/builtin/credential-cache--daemon.c\nindex 0c4d29a0745..9cda9f30739 100644\n--- a/builtin/credential-cache--daemon.c\n+++ b/builtin/credential-cache--daemon.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/credential-store.c b/builtin/credential-store.c\nindex e79d72d9695..6dfa66b300e 100644\n--- a/builtin/credential-store.c\n+++ b/builtin/credential-store.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/credential.c b/builtin/credential.c\nindex 9235fbf1977..73510946cac 100644\n--- a/builtin/credential.c\n+++ b/builtin/credential.c\n@@ -1,3 +1,5 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n+\n #include \"git-compat-util.h\"\n #include \"credential.h\"\n #include \"builtin.h\"\ndiff --git a/builtin/describe.c b/builtin/describe.c\nindex 32ab17de651..d8ea2e8fdf8 100644\n--- a/builtin/describe.c\n+++ b/builtin/describe.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"environment.h\"\ndiff --git a/builtin/diff-files.c b/builtin/diff-files.c\nindex 93a3df766ad..b2e3628d9ef 100644\n--- a/builtin/diff-files.c\n+++ b/builtin/diff-files.c\n@@ -3,6 +3,7 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"diff.h\"\ndiff --git a/builtin/diff-index.c b/builtin/diff-index.c\nindex 645d2fba359..15e0dcf60f8 100644\n--- a/builtin/diff-index.c\n+++ b/builtin/diff-index.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"diff.h\"\ndiff --git a/builtin/diff-tree.c b/builtin/diff-tree.c\nindex 0d17708d2a3..e01caea94d7 100644\n--- a/builtin/diff-tree.c\n+++ b/builtin/diff-tree.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"diff.h\"\ndiff --git a/builtin/diff.c b/builtin/diff.c\nindex ebf71aa5592..bf3b7ab3350 100644\n--- a/builtin/diff.c\n+++ b/builtin/diff.c\n@@ -3,8 +3,9 @@\n  *\n  * Copyright (c) 2006 Junio C Hamano\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+#include \"repository.h\"\n #include \"config.h\"\n #include \"ewah/ewok.h\"\n #include \"lockfile.h\"\ndiff --git a/builtin/difftool.c b/builtin/difftool.c\nindex 94f3bf72a7c..f1a2c7e7e1e 100644\n--- a/builtin/difftool.c\n+++ b/builtin/difftool.c\n@@ -11,8 +11,9 @@\n  *\n  * Copyright (C) 2016 Johannes Schindelin\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+#include \"repository.h\"\n #include \"abspath.h\"\n #include \"config.h\"\n #include \"copy.h\"\ndiff --git a/builtin/fast-export.c b/builtin/fast-export.c\nindex 37482785b81..d2e1a5028d3 100644\n--- a/builtin/fast-export.c\n+++ b/builtin/fast-export.c\n@@ -3,7 +3,9 @@\n  *\n  * Copyright (C) 2007 Johannes E. Schindelin\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+#include \"repository.h\"\n #include \"config.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\ndiff --git a/builtin/fast-import.c b/builtin/fast-import.c\nindex 36b76490e1e..e0df21bf5fe 100644\n--- a/builtin/fast-import.c\n+++ b/builtin/fast-import.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"environment.h\"\ndiff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c\nindex fcabd1906d4..83b131d5c5d 100644\n--- a/builtin/fetch-pack.c\n+++ b/builtin/fetch-pack.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\ndiff --git a/builtin/fetch.c b/builtin/fetch.c\nindex ccdb409da43..b4bd8d89851 100644\n--- a/builtin/fetch.c\n+++ b/builtin/fetch.c\n@@ -1,6 +1,7 @@\n /*\n  * \"git fetch\"\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"config.h\"\ndiff --git a/builtin/fmt-merge-msg.c b/builtin/fmt-merge-msg.c\nindex 0a9c2008429..af4264159af 100644\n--- a/builtin/fmt-merge-msg.c\n+++ b/builtin/fmt-merge-msg.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"fmt-merge-msg.h\"\ndiff --git a/builtin/for-each-ref.c b/builtin/for-each-ref.c\nindex 70391638a3d..aeba8e69408 100644\n--- a/builtin/for-each-ref.c\n+++ b/builtin/for-each-ref.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"commit.h\"\n #include \"config.h\"\ndiff --git a/builtin/for-each-repo.c b/builtin/for-each-repo.c\nindex 6b2935ae140..47a97653474 100644\n--- a/builtin/for-each-repo.c\n+++ b/builtin/for-each-repo.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/fsck.c b/builtin/fsck.c\nindex 2b69c963b2e..bc6046c3c73 100644\n--- a/builtin/fsck.c\n+++ b/builtin/fsck.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\ndiff --git a/builtin/fsmonitor--daemon.c b/builtin/fsmonitor--daemon.c\nindex 93f4a60ca22..1bd7cf41ffd 100644\n--- a/builtin/fsmonitor--daemon.c\n+++ b/builtin/fsmonitor--daemon.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"config.h\"\ndiff --git a/builtin/gc.c b/builtin/gc.c\nindex 462dacb0bdb..2cca94afce4 100644\n--- a/builtin/gc.c\n+++ b/builtin/gc.c\n@@ -9,7 +9,7 @@\n  *\n  * Copyright (c) 2006 Shawn O. Pearce\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"date.h\"\ndiff --git a/builtin/grep.c b/builtin/grep.c\nindex 98eea1f4dc5..b0b149d81bf 100644\n--- a/builtin/grep.c\n+++ b/builtin/grep.c\n@@ -3,6 +3,7 @@\n  *\n  * Copyright (c) 2006 Junio C Hamano\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/hash-object.c b/builtin/hash-object.c\nindex 59a48345394..293fc2ab879 100644\n--- a/builtin/hash-object.c\n+++ b/builtin/hash-object.c\n@@ -4,7 +4,9 @@\n  * Copyright (C) Linus Torvalds, 2005\n  * Copyright (C) Junio C Hamano, 2005\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+#include \"repository.h\"\n #include \"abspath.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/help.c b/builtin/help.c\nindex 4efdccfb7fb..557d2b645e6 100644\n--- a/builtin/help.c\n+++ b/builtin/help.c\n@@ -1,6 +1,8 @@\n+\n /*\n  * Builtin help command\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"exec-cmd.h\"\ndiff --git a/builtin/hook.c b/builtin/hook.c\nindex 2aa6476f8fc..1b71eb021c2 100644\n--- a/builtin/hook.c\n+++ b/builtin/hook.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/index-pack.c b/builtin/index-pack.c\nindex 64754da036d..a0acfad823d 100644\n--- a/builtin/index-pack.c\n+++ b/builtin/index-pack.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"delta.h\"\ndiff --git a/builtin/interpret-trailers.c b/builtin/interpret-trailers.c\nindex 79da472e8eb..2e05551b4dd 100644\n--- a/builtin/interpret-trailers.c\n+++ b/builtin/interpret-trailers.c\n@@ -4,7 +4,7 @@\n  * Copyright (c) 2013, 2014 Christian Couder <chriscool@tuxfamily.org>\n  *\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"parse-options.h\"\ndiff --git a/builtin/log.c b/builtin/log.c\nindex c9018e89e55..5353ec02df7 100644\n--- a/builtin/log.c\n+++ b/builtin/log.c\n@@ -4,6 +4,7 @@\n  * (C) Copyright 2006 Linus Torvalds\n  *\t\t 2006 Junio Hamano\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"config.h\"\ndiff --git a/builtin/ls-files.c b/builtin/ls-files.c\nindex 5185f264e8d..5496536b0ff 100644\n--- a/builtin/ls-files.c\n+++ b/builtin/ls-files.c\n@@ -5,6 +5,7 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"repository.h\"\n #include \"config.h\"\ndiff --git a/builtin/ls-remote.c b/builtin/ls-remote.c\nindex ce826d32686..de282999059 100644\n--- a/builtin/ls-remote.c\n+++ b/builtin/ls-remote.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\ndiff --git a/builtin/ls-tree.c b/builtin/ls-tree.c\nindex f91361ca788..57a9a00c348 100644\n--- a/builtin/ls-tree.c\n+++ b/builtin/ls-tree.c\n@@ -3,7 +3,9 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+#include \"repository.h\"\n #include \"config.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\ndiff --git a/builtin/merge-base.c b/builtin/merge-base.c\nindex d5aef8b32c0..b6b28d60df2 100644\n--- a/builtin/merge-base.c\n+++ b/builtin/merge-base.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"commit.h\"\ndiff --git a/builtin/merge-file.c b/builtin/merge-file.c\nindex a538edf2a46..a5a6d821f20 100644\n--- a/builtin/merge-file.c\n+++ b/builtin/merge-file.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"diff.h\"\ndiff --git a/builtin/merge-index.c b/builtin/merge-index.c\nindex 39870e14bfa..7ca6af69539 100644\n--- a/builtin/merge-index.c\n+++ b/builtin/merge-index.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"hex.h\"\n #include \"read-cache-ll.h\"\ndiff --git a/builtin/merge-ours.c b/builtin/merge-ours.c\nindex 391c767e122..258d5560a17 100644\n--- a/builtin/merge-ours.c\n+++ b/builtin/merge-ours.c\n@@ -7,6 +7,7 @@\n  *\n  * Pretend we resolved the heads, but declare our tree trumps everybody else.\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"git-compat-util.h\"\n #include \"builtin.h\"\n #include \"diff.h\"\ndiff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c\nindex cd2b4d9a721..c7ec78b0d66 100644\n--- a/builtin/merge-recursive.c\n+++ b/builtin/merge-recursive.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/merge-tree.c b/builtin/merge-tree.c\nindex e69ed337f46..f247480b434 100644\n--- a/builtin/merge-tree.c\n+++ b/builtin/merge-tree.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"tree-walk.h\"\n #include \"xdiff-interface.h\"\ndiff --git a/builtin/merge.c b/builtin/merge.c\nindex 4e817f6e91f..6427b7c4a8b 100644\n--- a/builtin/merge.c\n+++ b/builtin/merge.c\n@@ -5,8 +5,9 @@\n  *\n  * Based on git-merge.sh by Junio C Hamano.\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+#include \"repository.h\"\n #include \"abspath.h\"\n #include \"advice.h\"\n #include \"config.h\"\ndiff --git a/builtin/mktag.c b/builtin/mktag.c\nindex cc3f1b7c5bb..d4bcebb0abf 100644\n--- a/builtin/mktag.c\n+++ b/builtin/mktag.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\ndiff --git a/builtin/mktree.c b/builtin/mktree.c\nindex 1c43360b50c..f52015a5e81 100644\n--- a/builtin/mktree.c\n+++ b/builtin/mktree.c\n@@ -3,7 +3,9 @@\n  *\n  * Copyright (c) Junio C Hamano, 2006, 2009\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+#include \"repository.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\n #include \"quote.h\"\ndiff --git a/builtin/multi-pack-index.c b/builtin/multi-pack-index.c\nindex 91324a5581d..86f974bc6ae 100644\n--- a/builtin/multi-pack-index.c\n+++ b/builtin/multi-pack-index.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"config.h\"\ndiff --git a/builtin/mv.c b/builtin/mv.c\nindex 3069d1d9ce8..1123c3d5f1a 100644\n--- a/builtin/mv.c\n+++ b/builtin/mv.c\n@@ -3,6 +3,7 @@\n  *\n  * Copyright (C) 2006 Johannes Schindelin\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n \n #include \"builtin.h\"\n #include \"abspath.h\"\ndiff --git a/builtin/name-rev.c b/builtin/name-rev.c\nindex f46f5546629..8bccc3ebf59 100644\n--- a/builtin/name-rev.c\n+++ b/builtin/name-rev.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"environment.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/notes.c b/builtin/notes.c\nindex 2f8e896283a..9b894ab85f3 100644\n--- a/builtin/notes.c\n+++ b/builtin/notes.c\n@@ -6,7 +6,7 @@\n  * Based on git-notes.sh by Johannes Schindelin,\n  * and builtin/tag.c by Kristian Høgsberg and Carlos Rica.\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"editor.h\"\ndiff --git a/builtin/pack-objects.c b/builtin/pack-objects.c\nindex 702d10ea86b..cf255e537d0 100644\n--- a/builtin/pack-objects.c\n+++ b/builtin/pack-objects.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"environment.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/pack-redundant.c b/builtin/pack-redundant.c\nindex 42d367c95d1..690dbe233f9 100644\n--- a/builtin/pack-redundant.c\n+++ b/builtin/pack-redundant.c\n@@ -5,6 +5,7 @@\n * This file is licensed under the GPL v2.\n *\n */\n+#define USE_THE_REPOSITORY_VARIABLE\n \n #include \"builtin.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/pack-refs.c b/builtin/pack-refs.c\nindex c61e876216a..ea155d4f076 100644\n--- a/builtin/pack-refs.c\n+++ b/builtin/pack-refs.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/patch-id.c b/builtin/patch-id.c\nindex 4449c44580a..7853f052ce1 100644\n--- a/builtin/patch-id.c\n+++ b/builtin/patch-id.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"diff.h\"\ndiff --git a/builtin/prune.c b/builtin/prune.c\nindex ed532fab0a5..289344efdb8 100644\n--- a/builtin/prune.c\n+++ b/builtin/prune.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"commit.h\"\n #include \"diff.h\"\ndiff --git a/builtin/pull.c b/builtin/pull.c\nindex 906c02e5a97..60ac523e4f4 100644\n--- a/builtin/pull.c\n+++ b/builtin/pull.c\n@@ -6,6 +6,7 @@\n  * Fetch one or more remote refs and merge it/them into the current HEAD.\n  */\n \n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"config.h\"\ndiff --git a/builtin/push.c b/builtin/push.c\nindex a6b7fcd9538..5d5e4899bb8 100644\n--- a/builtin/push.c\n+++ b/builtin/push.c\n@@ -1,6 +1,7 @@\n /*\n  * \"git push\"\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"branch.h\"\ndiff --git a/builtin/range-diff.c b/builtin/range-diff.c\nindex 30a5b003bab..82a44684805 100644\n--- a/builtin/range-diff.c\n+++ b/builtin/range-diff.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"object-name.h\"\ndiff --git a/builtin/read-tree.c b/builtin/read-tree.c\nindex 89fa0b728d7..b08627980da 100644\n--- a/builtin/read-tree.c\n+++ b/builtin/read-tree.c\n@@ -3,7 +3,7 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/rebase.c b/builtin/rebase.c\nindex 20a0a324aff..232b1fecffd 100644\n--- a/builtin/rebase.c\n+++ b/builtin/rebase.c\n@@ -3,8 +3,9 @@\n  *\n  * Copyright (c) 2018 Pratik Karki\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+#include \"repository.h\"\n #include \"abspath.h\"\n #include \"environment.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/receive-pack.c b/builtin/receive-pack.c\nindex 74677ff1a24..db23fff7dac 100644\n--- a/builtin/receive-pack.c\n+++ b/builtin/receive-pack.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"repository.h\"\ndiff --git a/builtin/reflog.c b/builtin/reflog.c\nindex 1eab96aca98..d946d1b2245 100644\n--- a/builtin/reflog.c\n+++ b/builtin/reflog.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/refs.c b/builtin/refs.c\nindex 355e0abce76..aa020eef7f8 100644\n--- a/builtin/refs.c\n+++ b/builtin/refs.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"fsck.h\"\ndiff --git a/builtin/remote.c b/builtin/remote.c\nindex d24d4966ccb..cfd5b891181 100644\n--- a/builtin/remote.c\n+++ b/builtin/remote.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/repack.c b/builtin/repack.c\nindex ea06f0b4a0f..8a7e8e80af1 100644\n--- a/builtin/repack.c\n+++ b/builtin/repack.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"dir.h\"\ndiff --git a/builtin/replace.c b/builtin/replace.c\nindex 9c6d846c497..d157c237d57 100644\n--- a/builtin/replace.c\n+++ b/builtin/replace.c\n@@ -7,6 +7,7 @@\n  * and Carlos Rica <jasampler@gmail.com> that was itself based on\n  * git-tag.sh and mktag.c by Linus Torvalds.\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n \n #include \"builtin.h\"\n #include \"config.h\"\ndiff --git a/builtin/replay.c b/builtin/replay.c\nindex 66f417aab78..feb2e0192c6 100644\n--- a/builtin/replay.c\n+++ b/builtin/replay.c\n@@ -4,6 +4,7 @@\n \n #include \"git-compat-util.h\"\n \n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"environment.h\"\n #include \"hex.h\"\ndiff --git a/builtin/rerere.c b/builtin/rerere.c\nindex 7bccf393c8d..2a33c57c481 100644\n--- a/builtin/rerere.c\n+++ b/builtin/rerere.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/reset.c b/builtin/reset.c\nindex a8e293b0c57..956d716c787 100644\n--- a/builtin/reset.c\n+++ b/builtin/reset.c\n@@ -7,8 +7,9 @@\n  *\n  * Copyright (c) 2005, 2006 Linus Torvalds and Junio C Hamano\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+#include \"repository.h\"\n #include \"advice.h\"\n #include \"config.h\"\n #include \"environment.h\"\ndiff --git a/builtin/rev-list.c b/builtin/rev-list.c\nindex 71bc12ee6b2..c90c7e77a11 100644\n--- a/builtin/rev-list.c\n+++ b/builtin/rev-list.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"commit.h\"\ndiff --git a/builtin/rev-parse.c b/builtin/rev-parse.c\nindex ba5bc0facd7..b84b2ef642a 100644\n--- a/builtin/rev-parse.c\n+++ b/builtin/rev-parse.c\n@@ -3,8 +3,9 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+#include \"repository.h\"\n #include \"abspath.h\"\n #include \"config.h\"\n #include \"commit.h\"\ndiff --git a/builtin/revert.c b/builtin/revert.c\nindex e6be55a2bd9..e4f71b5fbf0 100644\n--- a/builtin/revert.c\n+++ b/builtin/revert.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"git-compat-util.h\"\n #include \"builtin.h\"\n #include \"parse-options.h\"\ndiff --git a/builtin/rm.c b/builtin/rm.c\nindex 4fd94f7e7e8..6f9638ca079 100644\n--- a/builtin/rm.c\n+++ b/builtin/rm.c\n@@ -3,7 +3,7 @@\n  *\n  * Copyright (C) Linus Torvalds 2006\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"config.h\"\ndiff --git a/builtin/send-pack.c b/builtin/send-pack.c\nindex 5479cd5731c..02654613ed5 100644\n--- a/builtin/send-pack.c\n+++ b/builtin/send-pack.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"hex.h\"\ndiff --git a/builtin/shortlog.c b/builtin/shortlog.c\nindex c911383026d..f12f7ad0a53 100644\n--- a/builtin/shortlog.c\n+++ b/builtin/shortlog.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"commit.h\"\ndiff --git a/builtin/show-branch.c b/builtin/show-branch.c\nindex 800a64fd4c7..27207e515be 100644\n--- a/builtin/show-branch.c\n+++ b/builtin/show-branch.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"environment.h\"\ndiff --git a/builtin/show-index.c b/builtin/show-index.c\nindex 952ea798fc1..b96a28531cd 100644\n--- a/builtin/show-index.c\n+++ b/builtin/show-index.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"hash.h\"\ndiff --git a/builtin/show-ref.c b/builtin/show-ref.c\nindex 8d908a03949..47831bf793b 100644\n--- a/builtin/show-ref.c\n+++ b/builtin/show-ref.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/sparse-checkout.c b/builtin/sparse-checkout.c\nindex da9d582b12d..138cece3ac9 100644\n--- a/builtin/sparse-checkout.c\n+++ b/builtin/sparse-checkout.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"dir.h\"\ndiff --git a/builtin/stash.c b/builtin/stash.c\nindex da90d18f16d..557bbcc6740 100644\n--- a/builtin/stash.c\n+++ b/builtin/stash.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"config.h\"\ndiff --git a/builtin/stripspace.c b/builtin/stripspace.c\nindex a83ad2b5f30..336194a93f4 100644\n--- a/builtin/stripspace.c\n+++ b/builtin/stripspace.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"environment.h\"\ndiff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c\nindex 1a1fc40e467..970d0b93022 100644\n--- a/builtin/submodule--helper.c\n+++ b/builtin/submodule--helper.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"environment.h\"\ndiff --git a/builtin/symbolic-ref.c b/builtin/symbolic-ref.c\nindex 682f3cf3ae4..a13dc8b35a2 100644\n--- a/builtin/symbolic-ref.c\n+++ b/builtin/symbolic-ref.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/tag.c b/builtin/tag.c\nindex 925e269f0f4..757fd390b29 100644\n--- a/builtin/tag.c\n+++ b/builtin/tag.c\n@@ -5,8 +5,9 @@\n  *                    Carlos Rica <jasampler@gmail.com>\n  * Based on git-tag.sh and mktag.c by Linus Torvalds.\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+#include \"repository.h\"\n #include \"advice.h\"\n #include \"config.h\"\n #include \"editor.h\"\ndiff --git a/builtin/unpack-file.c b/builtin/unpack-file.c\nindex 366d4743d4c..f4ba988711c 100644\n--- a/builtin/unpack-file.c\n+++ b/builtin/unpack-file.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"hex.h\"\ndiff --git a/builtin/unpack-objects.c b/builtin/unpack-objects.c\nindex c6f9456a0ec..51075fc0e54 100644\n--- a/builtin/unpack-objects.c\n+++ b/builtin/unpack-objects.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"bulk-checkin.h\"\n #include \"config.h\"\ndiff --git a/builtin/update-index.c b/builtin/update-index.c\nindex c2974b57661..df1ee60dd2d 100644\n--- a/builtin/update-index.c\n+++ b/builtin/update-index.c\n@@ -3,6 +3,7 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n \n #include \"builtin.h\"\n #include \"bulk-checkin.h\"\ndiff --git a/builtin/update-ref.c b/builtin/update-ref.c\nindex 97f116ed391..ede553a34c8 100644\n--- a/builtin/update-ref.c\n+++ b/builtin/update-ref.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/update-server-info.c b/builtin/update-server-info.c\nindex b09527b2865..ce0784f390b 100644\n--- a/builtin/update-server-info.c\n+++ b/builtin/update-server-info.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/upload-archive.c b/builtin/upload-archive.c\nindex 447fbbb90b5..f7f89771827 100644\n--- a/builtin/upload-archive.c\n+++ b/builtin/upload-archive.c\n@@ -1,6 +1,7 @@\n /*\n  * Copyright (c) 2006 Franck Bui-Huu\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"archive.h\"\n #include \"path.h\"\ndiff --git a/builtin/var.c b/builtin/var.c\nindex 8b07a7a6a09..07785b3dd1b 100644\n--- a/builtin/var.c\n+++ b/builtin/var.c\n@@ -3,7 +3,9 @@\n  *\n  * Copyright (C) Eric Biederman, 2005\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+#include \"repository.h\"\n #include \"attr.h\"\n #include \"config.h\"\n #include \"editor.h\"\ndiff --git a/builtin/verify-commit.c b/builtin/verify-commit.c\nindex dbf5b315569..57fa5657add 100644\n--- a/builtin/verify-commit.c\n+++ b/builtin/verify-commit.c\n@@ -5,6 +5,7 @@\n  *\n  * Based on git-verify-tag\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/verify-pack.c b/builtin/verify-pack.c\nindex 1d0a789d19a..323466af865 100644\n--- a/builtin/verify-pack.c\n+++ b/builtin/verify-pack.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/verify-tag.c b/builtin/verify-tag.c\nindex 8e81a9a9e05..818c373cc63 100644\n--- a/builtin/verify-tag.c\n+++ b/builtin/verify-tag.c\n@@ -5,7 +5,9 @@\n  *\n  * Based on git-verify-tag.sh\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+#include \"repository.h\"\n #include \"config.h\"\n #include \"gettext.h\"\n #include \"tag.h\"\ndiff --git a/builtin/worktree.c b/builtin/worktree.c\nindex 4c2b9e19217..e4f024cf2db 100644\n--- a/builtin/worktree.c\n+++ b/builtin/worktree.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"advice.h\"\ndiff --git a/builtin/write-tree.c b/builtin/write-tree.c\nindex 91b80e05d3a..47a2837cb8e 100644\n--- a/builtin/write-tree.c\n+++ b/builtin/write-tree.c\n@@ -3,7 +3,7 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"environment.h\"\n-- \ngitgitgadget\n\n"},{"id":"502265","messageId":"3301a34f76303c43feaf4eb9d6913fbeec439e97.1725555468.git.gitgitgadget@gmail.com","threadId":"62067","inReplyTo":"pull.1778.git.git.1725555467.gitgitgadget@gmail.com","subject":"[PATCH 1/3] builtin: add a repository parameter for builtin functions","fromName":"John Cai via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2024-09-05T16:57:45Z","receivedAt":"2024-09-05T16:57:54Z","isPatch":true,"sender":{"key":"johncai86@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2354211?v=4"},"body":"From: John Cai <johncai86@gmail.com>\n\nIn order to reduce the usage of the global the_repository, add a\nparameter to builtin functions that will get passed a repository\nvariable.\n\nThis commit uses UNUSED on most of the builtin functions, as subsequent\ncommits will modify the actual builtins to pass the repository parameter\ndown.\n\nSigned-off-by: John Cai <johncai86@gmail.com>\n---\n builtin.h                          | 277 +++++++++++++++--------------\n builtin/add.c                      |   2 +-\n builtin/am.c                       |   2 +-\n builtin/annotate.c                 |   4 +-\n builtin/apply.c                    |   2 +-\n builtin/archive.c                  |   2 +-\n builtin/bisect.c                   |   2 +-\n builtin/blame.c                    |   2 +-\n builtin/branch.c                   |   2 +-\n builtin/bugreport.c                |   2 +-\n builtin/bundle.c                   |   2 +-\n builtin/cat-file.c                 |   4 +-\n builtin/check-attr.c               |   2 +-\n builtin/check-ignore.c             |   2 +-\n builtin/check-mailmap.c            |   2 +-\n builtin/check-ref-format.c         |   2 +-\n builtin/checkout--worker.c         |   2 +-\n builtin/checkout-index.c           |   2 +-\n builtin/checkout.c                 |   6 +-\n builtin/clean.c                    |   2 +-\n builtin/clone.c                    |   2 +-\n builtin/column.c                   |   2 +-\n builtin/commit-graph.c             |   2 +-\n builtin/commit-tree.c              |   2 +-\n builtin/commit.c                   |   4 +-\n builtin/config.c                   |   2 +-\n builtin/count-objects.c            |   2 +-\n builtin/credential-cache--daemon.c |   4 +-\n builtin/credential-cache.c         |   2 +-\n builtin/credential-store.c         |   2 +-\n builtin/credential.c               |   2 +-\n builtin/describe.c                 |   4 +-\n builtin/diagnose.c                 |   2 +-\n builtin/diff-files.c               |   2 +-\n builtin/diff-index.c               |   2 +-\n builtin/diff-tree.c                |   2 +-\n builtin/diff.c                     |   2 +-\n builtin/difftool.c                 |   2 +-\n builtin/fast-export.c              |   2 +-\n builtin/fast-import.c              |   2 +-\n builtin/fetch-pack.c               |   2 +-\n builtin/fetch.c                    |   2 +-\n builtin/fmt-merge-msg.c            |   2 +-\n builtin/for-each-ref.c             |   2 +-\n builtin/for-each-repo.c            |   2 +-\n builtin/fsck.c                     |   2 +-\n builtin/fsmonitor--daemon.c        |   4 +-\n builtin/gc.c                       |   4 +-\n builtin/get-tar-commit-id.c        |   2 +-\n builtin/grep.c                     |   2 +-\n builtin/hash-object.c              |   2 +-\n builtin/help.c                     |   2 +-\n builtin/hook.c                     |   2 +-\n builtin/index-pack.c               |   2 +-\n builtin/init-db.c                  |   2 +-\n builtin/interpret-trailers.c       |   2 +-\n builtin/log.c                      |  12 +-\n builtin/ls-files.c                 |   2 +-\n builtin/ls-remote.c                |   2 +-\n builtin/ls-tree.c                  |   2 +-\n builtin/mailinfo.c                 |   2 +-\n builtin/mailsplit.c                |   2 +-\n builtin/merge-base.c               |   2 +-\n builtin/merge-file.c               |   2 +-\n builtin/merge-index.c              |   2 +-\n builtin/merge-ours.c               |   2 +-\n builtin/merge-recursive.c          |   2 +-\n builtin/merge-tree.c               |   2 +-\n builtin/merge.c                    |   6 +-\n builtin/mktag.c                    |   2 +-\n builtin/mktree.c                   |   2 +-\n builtin/multi-pack-index.c         |   2 +-\n builtin/mv.c                       |   2 +-\n builtin/name-rev.c                 |   2 +-\n builtin/notes.c                    |   2 +-\n builtin/pack-objects.c             |   2 +-\n builtin/pack-redundant.c           |   2 +-\n builtin/pack-refs.c                |   2 +-\n builtin/patch-id.c                 |   2 +-\n builtin/prune-packed.c             |   2 +-\n builtin/prune.c                    |   2 +-\n builtin/pull.c                     |   2 +-\n builtin/push.c                     |   2 +-\n builtin/range-diff.c               |   2 +-\n builtin/read-tree.c                |   2 +-\n builtin/rebase.c                   |   2 +-\n builtin/receive-pack.c             |   2 +-\n builtin/reflog.c                   |   6 +-\n builtin/refs.c                     |   2 +-\n builtin/remote-ext.c               |   2 +-\n builtin/remote-fd.c                |   2 +-\n builtin/remote.c                   |   2 +-\n builtin/repack.c                   |   2 +-\n builtin/replace.c                  |   2 +-\n builtin/replay.c                   |   2 +-\n builtin/rerere.c                   |   2 +-\n builtin/reset.c                    |   2 +-\n builtin/rev-list.c                 |   2 +-\n builtin/rev-parse.c                |   2 +-\n builtin/revert.c                   |   4 +-\n builtin/rm.c                       |   2 +-\n builtin/send-pack.c                |   2 +-\n builtin/shortlog.c                 |   2 +-\n builtin/show-branch.c              |   2 +-\n builtin/show-index.c               |   2 +-\n builtin/show-ref.c                 |   2 +-\n builtin/sparse-checkout.c          |   2 +-\n builtin/stash.c                    |   2 +-\n builtin/stripspace.c               |   2 +-\n builtin/submodule--helper.c        |   2 +-\n builtin/symbolic-ref.c             |   2 +-\n builtin/tag.c                      |   2 +-\n builtin/unpack-file.c              |   2 +-\n builtin/unpack-objects.c           |   2 +-\n builtin/update-index.c             |   2 +-\n builtin/update-ref.c               |   2 +-\n builtin/update-server-info.c       |   2 +-\n builtin/upload-archive.c           |   4 +-\n builtin/upload-pack.c              |   2 +-\n builtin/var.c                      |   2 +-\n builtin/verify-commit.c            |   2 +-\n builtin/verify-pack.c              |   2 +-\n builtin/verify-tag.c               |   2 +-\n builtin/worktree.c                 |   2 +-\n builtin/write-tree.c               |   2 +-\n git.c                              |  14 +-\n help.c                             |   3 +-\n 127 files changed, 293 insertions(+), 289 deletions(-)\n\ndiff --git a/builtin.h b/builtin.h\nindex 14fa0171607..fc6fc8ffed8 100644\n--- a/builtin.h\n+++ b/builtin.h\n@@ -10,6 +10,7 @@\n #define USE_THE_REPOSITORY_VARIABLE\n \n #include \"git-compat-util.h\"\n+#include \"repository.h\"\n \n /*\n  * builtin API\n@@ -122,143 +123,143 @@ int is_builtin(const char *s);\n \t\tBUG(\"unexpected prefix in builtin: %s\", (prefix)); \\\n } while (0)\n \n-int cmd_add(int argc, const char **argv, const char *prefix);\n-int cmd_am(int argc, const char **argv, const char *prefix);\n-int cmd_annotate(int argc, const char **argv, const char *prefix);\n-int cmd_apply(int argc, const char **argv, const char *prefix);\n-int cmd_archive(int argc, const char **argv, const char *prefix);\n-int cmd_bisect(int argc, const char **argv, const char *prefix);\n-int cmd_blame(int argc, const char **argv, const char *prefix);\n-int cmd_branch(int argc, const char **argv, const char *prefix);\n-int cmd_bugreport(int argc, const char **argv, const char *prefix);\n-int cmd_bundle(int argc, const char **argv, const char *prefix);\n-int cmd_cat_file(int argc, const char **argv, const char *prefix);\n-int cmd_checkout(int argc, const char **argv, const char *prefix);\n-int cmd_checkout__worker(int argc, const char **argv, const char *prefix);\n-int cmd_checkout_index(int argc, const char **argv, const char *prefix);\n-int cmd_check_attr(int argc, const char **argv, const char *prefix);\n-int cmd_check_ignore(int argc, const char **argv, const char *prefix);\n-int cmd_check_mailmap(int argc, const char **argv, const char *prefix);\n-int cmd_check_ref_format(int argc, const char **argv, const char *prefix);\n-int cmd_cherry(int argc, const char **argv, const char *prefix);\n-int cmd_cherry_pick(int argc, const char **argv, const char *prefix);\n-int cmd_clone(int argc, const char **argv, const char *prefix);\n-int cmd_clean(int argc, const char **argv, const char *prefix);\n-int cmd_column(int argc, const char **argv, const char *prefix);\n-int cmd_commit(int argc, const char **argv, const char *prefix);\n-int cmd_commit_graph(int argc, const char **argv, const char *prefix);\n-int cmd_commit_tree(int argc, const char **argv, const char *prefix);\n-int cmd_config(int argc, const char **argv, const char *prefix);\n-int cmd_count_objects(int argc, const char **argv, const char *prefix);\n-int cmd_credential(int argc, const char **argv, const char *prefix);\n-int cmd_credential_cache(int argc, const char **argv, const char *prefix);\n-int cmd_credential_cache_daemon(int argc, const char **argv, const char *prefix);\n-int cmd_credential_store(int argc, const char **argv, const char *prefix);\n-int cmd_describe(int argc, const char **argv, const char *prefix);\n-int cmd_diagnose(int argc, const char **argv, const char *prefix);\n-int cmd_diff_files(int argc, const char **argv, const char *prefix);\n-int cmd_diff_index(int argc, const char **argv, const char *prefix);\n-int cmd_diff(int argc, const char **argv, const char *prefix);\n-int cmd_diff_tree(int argc, const char **argv, const char *prefix);\n-int cmd_difftool(int argc, const char **argv, const char *prefix);\n-int cmd_env__helper(int argc, const char **argv, const char *prefix);\n-int cmd_fast_export(int argc, const char **argv, const char *prefix);\n-int cmd_fast_import(int argc, const char **argv, const char *prefix);\n-int cmd_fetch(int argc, const char **argv, const char *prefix);\n-int cmd_fetch_pack(int argc, const char **argv, const char *prefix);\n-int cmd_fmt_merge_msg(int argc, const char **argv, const char *prefix);\n-int cmd_for_each_ref(int argc, const char **argv, const char *prefix);\n-int cmd_for_each_repo(int argc, const char **argv, const char *prefix);\n-int cmd_format_patch(int argc, const char **argv, const char *prefix);\n-int cmd_fsck(int argc, const char **argv, const char *prefix);\n-int cmd_fsmonitor__daemon(int argc, const char **argv, const char *prefix);\n-int cmd_gc(int argc, const char **argv, const char *prefix);\n-int cmd_get_tar_commit_id(int argc, const char **argv, const char *prefix);\n-int cmd_grep(int argc, const char **argv, const char *prefix);\n-int cmd_hash_object(int argc, const char **argv, const char *prefix);\n-int cmd_help(int argc, const char **argv, const char *prefix);\n-int cmd_hook(int argc, const char **argv, const char *prefix);\n-int cmd_index_pack(int argc, const char **argv, const char *prefix);\n-int cmd_init_db(int argc, const char **argv, const char *prefix);\n-int cmd_interpret_trailers(int argc, const char **argv, const char *prefix);\n-int cmd_log(int argc, const char **argv, const char *prefix);\n-int cmd_log_reflog(int argc, const char **argv, const char *prefix);\n-int cmd_ls_files(int argc, const char **argv, const char *prefix);\n-int cmd_ls_tree(int argc, const char **argv, const char *prefix);\n-int cmd_ls_remote(int argc, const char **argv, const char *prefix);\n-int cmd_mailinfo(int argc, const char **argv, const char *prefix);\n-int cmd_mailsplit(int argc, const char **argv, const char *prefix);\n-int cmd_maintenance(int argc, const char **argv, const char *prefix);\n-int cmd_merge(int argc, const char **argv, const char *prefix);\n-int cmd_merge_base(int argc, const char **argv, const char *prefix);\n-int cmd_merge_index(int argc, const char **argv, const char *prefix);\n-int cmd_merge_ours(int argc, const char **argv, const char *prefix);\n-int cmd_merge_file(int argc, const char **argv, const char *prefix);\n-int cmd_merge_recursive(int argc, const char **argv, const char *prefix);\n-int cmd_merge_tree(int argc, const char **argv, const char *prefix);\n-int cmd_mktag(int argc, const char **argv, const char *prefix);\n-int cmd_mktree(int argc, const char **argv, const char *prefix);\n-int cmd_multi_pack_index(int argc, const char **argv, const char *prefix);\n-int cmd_mv(int argc, const char **argv, const char *prefix);\n-int cmd_name_rev(int argc, const char **argv, const char *prefix);\n-int cmd_notes(int argc, const char **argv, const char *prefix);\n-int cmd_pack_objects(int argc, const char **argv, const char *prefix);\n-int cmd_pack_redundant(int argc, const char **argv, const char *prefix);\n-int cmd_patch_id(int argc, const char **argv, const char *prefix);\n-int cmd_prune(int argc, const char **argv, const char *prefix);\n-int cmd_prune_packed(int argc, const char **argv, const char *prefix);\n-int cmd_pull(int argc, const char **argv, const char *prefix);\n-int cmd_push(int argc, const char **argv, const char *prefix);\n-int cmd_range_diff(int argc, const char **argv, const char *prefix);\n-int cmd_read_tree(int argc, const char **argv, const char *prefix);\n-int cmd_rebase(int argc, const char **argv, const char *prefix);\n-int cmd_rebase__interactive(int argc, const char **argv, const char *prefix);\n-int cmd_receive_pack(int argc, const char **argv, const char *prefix);\n-int cmd_reflog(int argc, const char **argv, const char *prefix);\n-int cmd_refs(int argc, const char **argv, const char *prefix);\n-int cmd_remote(int argc, const char **argv, const char *prefix);\n-int cmd_remote_ext(int argc, const char **argv, const char *prefix);\n-int cmd_remote_fd(int argc, const char **argv, const char *prefix);\n-int cmd_repack(int argc, const char **argv, const char *prefix);\n-int cmd_replay(int argc, const char **argv, const char *prefix);\n-int cmd_rerere(int argc, const char **argv, const char *prefix);\n-int cmd_reset(int argc, const char **argv, const char *prefix);\n-int cmd_restore(int argc, const char **argv, const char *prefix);\n-int cmd_rev_list(int argc, const char **argv, const char *prefix);\n-int cmd_rev_parse(int argc, const char **argv, const char *prefix);\n-int cmd_revert(int argc, const char **argv, const char *prefix);\n-int cmd_rm(int argc, const char **argv, const char *prefix);\n-int cmd_send_pack(int argc, const char **argv, const char *prefix);\n-int cmd_shortlog(int argc, const char **argv, const char *prefix);\n-int cmd_show(int argc, const char **argv, const char *prefix);\n-int cmd_show_branch(int argc, const char **argv, const char *prefix);\n-int cmd_show_index(int argc, const char **argv, const char *prefix);\n-int cmd_sparse_checkout(int argc, const char **argv, const char *prefix);\n-int cmd_status(int argc, const char **argv, const char *prefix);\n-int cmd_stash(int argc, const char **argv, const char *prefix);\n-int cmd_stripspace(int argc, const char **argv, const char *prefix);\n-int cmd_submodule__helper(int argc, const char **argv, const char *prefix);\n-int cmd_switch(int argc, const char **argv, const char *prefix);\n-int cmd_symbolic_ref(int argc, const char **argv, const char *prefix);\n-int cmd_tag(int argc, const char **argv, const char *prefix);\n-int cmd_unpack_file(int argc, const char **argv, const char *prefix);\n-int cmd_unpack_objects(int argc, const char **argv, const char *prefix);\n-int cmd_update_index(int argc, const char **argv, const char *prefix);\n-int cmd_update_ref(int argc, const char **argv, const char *prefix);\n-int cmd_update_server_info(int argc, const char **argv, const char *prefix);\n-int cmd_upload_archive(int argc, const char **argv, const char *prefix);\n-int cmd_upload_archive_writer(int argc, const char **argv, const char *prefix);\n-int cmd_upload_pack(int argc, const char **argv, const char *prefix);\n-int cmd_var(int argc, const char **argv, const char *prefix);\n-int cmd_verify_commit(int argc, const char **argv, const char *prefix);\n-int cmd_verify_tag(int argc, const char **argv, const char *prefix);\n-int cmd_version(int argc, const char **argv, const char *prefix);\n-int cmd_whatchanged(int argc, const char **argv, const char *prefix);\n-int cmd_worktree(int argc, const char **argv, const char *prefix);\n-int cmd_write_tree(int argc, const char **argv, const char *prefix);\n-int cmd_verify_pack(int argc, const char **argv, const char *prefix);\n-int cmd_show_ref(int argc, const char **argv, const char *prefix);\n-int cmd_pack_refs(int argc, const char **argv, const char *prefix);\n-int cmd_replace(int argc, const char **argv, const char *prefix);\n+int cmd_add(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_am(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_annotate(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_apply(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_archive(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_bisect(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_blame(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_branch(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_bugreport(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_bundle(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_cat_file(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_checkout(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_checkout__worker(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_checkout_index(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_check_attr(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_check_ignore(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_check_mailmap(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_check_ref_format(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_cherry(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_cherry_pick(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_clone(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_clean(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_column(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_commit(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_commit_graph(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_commit_tree(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_config(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_count_objects(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_credential(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_credential_cache(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_credential_cache_daemon(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_credential_store(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_describe(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_diagnose(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_diff_files(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_diff_index(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_diff(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_diff_tree(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_difftool(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_env__helper(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_fast_export(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_fast_import(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_fetch(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_fetch_pack(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_fmt_merge_msg(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_for_each_ref(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_for_each_repo(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_format_patch(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_fsck(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_fsmonitor__daemon(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_gc(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_get_tar_commit_id(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_grep(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_hash_object(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_help(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_hook(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_index_pack(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_init_db(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_interpret_trailers(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_log_reflog(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_log(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_ls_files(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_ls_tree(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_ls_remote(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_mailinfo(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_mailsplit(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_maintenance(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_merge(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_merge_base(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_merge_index(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_merge_ours(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_merge_file(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_merge_recursive(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_merge_tree(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_mktag(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_mktree(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_multi_pack_index(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_mv(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_name_rev(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_notes(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_pack_objects(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_pack_redundant(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_patch_id(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_prune(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_prune_packed(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_pull(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_push(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_range_diff(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_read_tree(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_rebase(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_rebase__interactive(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_receive_pack(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_reflog(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_refs(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_remote(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_remote_ext(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_remote_fd(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_repack(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_replay(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_rerere(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_reset(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_restore(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_rev_list(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_rev_parse(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_revert(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_rm(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_send_pack(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_shortlog(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_show(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_show_branch(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_show_index(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_sparse_checkout(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_status(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_stash(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_stripspace(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_submodule__helper(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_switch(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_symbolic_ref(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_tag(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_unpack_file(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_unpack_objects(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_update_index(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_update_ref(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_update_server_info(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_upload_archive(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_upload_archive_writer(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_upload_pack(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_var(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_verify_commit(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_verify_tag(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_version(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_whatchanged(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_worktree(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_write_tree(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_verify_pack(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_show_ref(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_pack_refs(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_replace(int argc, const char **argv, const char *prefix, struct repository *repo);\n \n #endif\ndiff --git a/builtin/add.c b/builtin/add.c\nindex 40b61ef90d9..3b9bc93ed9a 100644\n--- a/builtin/add.c\n+++ b/builtin/add.c\n@@ -358,7 +358,7 @@ static int add_files(struct dir_struct *dir, int flags)\n \treturn exit_status;\n }\n \n-int cmd_add(int argc, const char **argv, const char *prefix)\n+int cmd_add(int argc, const char **argv, const char *prefix, struct repository *repository UNUSED)\n {\n \tint exit_status = 0;\n \tstruct pathspec pathspec;\ndiff --git a/builtin/am.c b/builtin/am.c\nindex d8875ad4022..830c295314b 100644\n--- a/builtin/am.c\n+++ b/builtin/am.c\n@@ -2298,7 +2298,7 @@ static int parse_opt_show_current_patch(const struct option *opt, const char *ar\n \treturn 0;\n }\n \n-int cmd_am(int argc, const char **argv, const char *prefix)\n+int cmd_am(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct am_state state;\n \tint binary = -1;\ndiff --git a/builtin/annotate.c b/builtin/annotate.c\nindex 58ff977a231..3878b1994d8 100644\n--- a/builtin/annotate.c\n+++ b/builtin/annotate.c\n@@ -7,7 +7,7 @@\n #include \"builtin.h\"\n #include \"strvec.h\"\n \n-int cmd_annotate(int argc, const char **argv, const char *prefix)\n+int cmd_annotate(int argc, const char **argv, const char *prefix, struct repository *repo)\n {\n \tstruct strvec args = STRVEC_INIT;\n \tint i;\n@@ -18,5 +18,5 @@ int cmd_annotate(int argc, const char **argv, const char *prefix)\n \t\tstrvec_push(&args, argv[i]);\n \t}\n \n-\treturn cmd_blame(args.nr, args.v, prefix);\n+\treturn cmd_blame(args.nr, args.v, prefix, repo);\n }\ndiff --git a/builtin/apply.c b/builtin/apply.c\nindex d623c52f78f..923ce992bdd 100644\n--- a/builtin/apply.c\n+++ b/builtin/apply.c\n@@ -9,7 +9,7 @@ static const char * const apply_usage[] = {\n \tNULL\n };\n \n-int cmd_apply(int argc, const char **argv, const char *prefix)\n+int cmd_apply(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint force_apply = 0;\n \tint options = 0;\ndiff --git a/builtin/archive.c b/builtin/archive.c\nindex b50981504f3..21e5e3b877b 100644\n--- a/builtin/archive.c\n+++ b/builtin/archive.c\n@@ -76,7 +76,7 @@ static int run_remote_archiver(int argc, const char **argv,\n \t\t\t     PARSE_OPT_KEEP_UNKNOWN_OPT |\t\\\n \t\t\t     PARSE_OPT_NO_INTERNAL_HELP\t)\n \n-int cmd_archive(int argc, const char **argv, const char *prefix)\n+int cmd_archive(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tconst char *exec = \"git-upload-archive\";\n \tchar *output = NULL;\ndiff --git a/builtin/bisect.c b/builtin/bisect.c\nindex 453a6cccd70..8cf6167df61 100644\n--- a/builtin/bisect.c\n+++ b/builtin/bisect.c\n@@ -1411,7 +1411,7 @@ static int cmd_bisect__run(int argc, const char **argv, const char *prefix UNUSE\n \treturn res;\n }\n \n-int cmd_bisect(int argc, const char **argv, const char *prefix)\n+int cmd_bisect(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint res = 0;\n \tparse_opt_subcommand_fn *fn = NULL;\ndiff --git a/builtin/blame.c b/builtin/blame.c\nindex 35e975fb132..522f564d6b0 100644\n--- a/builtin/blame.c\n+++ b/builtin/blame.c\n@@ -864,7 +864,7 @@ static void build_ignorelist(struct blame_scoreboard *sb,\n \t}\n }\n \n-int cmd_blame(int argc, const char **argv, const char *prefix)\n+int cmd_blame(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct rev_info revs;\n \tchar *path = NULL;\ndiff --git a/builtin/branch.c b/builtin/branch.c\nindex 3f870741bfd..e20420059a2 100644\n--- a/builtin/branch.c\n+++ b/builtin/branch.c\n@@ -704,7 +704,7 @@ static int edit_branch_description(const char *branch_name)\n \treturn 0;\n }\n \n-int cmd_branch(int argc, const char **argv, const char *prefix)\n+int cmd_branch(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \t/* possible actions */\n \tint delete = 0, rename = 0, copy = 0, list = 0,\ndiff --git a/builtin/bugreport.c b/builtin/bugreport.c\nindex bdfed3d8f18..5269f073d59 100644\n--- a/builtin/bugreport.c\n+++ b/builtin/bugreport.c\n@@ -98,7 +98,7 @@ static void get_header(struct strbuf *buf, const char *title)\n \tstrbuf_addf(buf, \"\\n\\n[%s]\\n\", title);\n }\n \n-int cmd_bugreport(int argc, const char **argv, const char *prefix)\n+int cmd_bugreport(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct strbuf buffer = STRBUF_INIT;\n \tstruct strbuf report_path = STRBUF_INIT;\ndiff --git a/builtin/bundle.c b/builtin/bundle.c\nindex 86d0ed7049c..e26c1f7d4a7 100644\n--- a/builtin/bundle.c\n+++ b/builtin/bundle.c\n@@ -226,7 +226,7 @@ cleanup:\n \treturn ret;\n }\n \n-int cmd_bundle(int argc, const char **argv, const char *prefix)\n+int cmd_bundle(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tstruct option options[] = {\ndiff --git a/builtin/cat-file.c b/builtin/cat-file.c\nindex 18fe58d6b8b..6e6f134eab1 100644\n--- a/builtin/cat-file.c\n+++ b/builtin/cat-file.c\n@@ -191,7 +191,7 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name,\n \t\t\tconst char *ls_args[3] = { NULL };\n \t\t\tls_args[0] =  \"ls-tree\";\n \t\t\tls_args[1] =  obj_name;\n-\t\t\tret = cmd_ls_tree(2, ls_args, NULL);\n+\t\t\tret = cmd_ls_tree(2, ls_args, NULL, the_repository);\n \t\t\tgoto cleanup;\n \t\t}\n \n@@ -923,7 +923,7 @@ static int batch_option_callback(const struct option *opt,\n \treturn 0;\n }\n \n-int cmd_cat_file(int argc, const char **argv, const char *prefix)\n+int cmd_cat_file(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint opt = 0;\n \tint opt_cw = 0;\ndiff --git a/builtin/check-attr.c b/builtin/check-attr.c\nindex 93768107100..0f180350bec 100644\n--- a/builtin/check-attr.c\n+++ b/builtin/check-attr.c\n@@ -107,7 +107,7 @@ static NORETURN void error_with_usage(const char *msg)\n \tusage_with_options(check_attr_usage, check_attr_options);\n }\n \n-int cmd_check_attr(int argc, const char **argv, const char *prefix)\n+int cmd_check_attr(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct attr_check *check;\n \tstruct object_id initialized_oid;\ndiff --git a/builtin/check-ignore.c b/builtin/check-ignore.c\nindex 2bda6a1d462..4067127c8b4 100644\n--- a/builtin/check-ignore.c\n+++ b/builtin/check-ignore.c\n@@ -151,7 +151,7 @@ static int check_ignore_stdin_paths(struct dir_struct *dir, const char *prefix)\n \treturn num_ignored;\n }\n \n-int cmd_check_ignore(int argc, const char **argv, const char *prefix)\n+int cmd_check_ignore(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint num_ignored;\n \tstruct dir_struct dir = DIR_INIT;\ndiff --git a/builtin/check-mailmap.c b/builtin/check-mailmap.c\nindex b8a05b8e07b..07ab8fa9b3c 100644\n--- a/builtin/check-mailmap.c\n+++ b/builtin/check-mailmap.c\n@@ -40,7 +40,7 @@ static void check_mailmap(struct string_list *mailmap, const char *contact)\n \tprintf(\"<%.*s>\\n\", (int)maillen, mail);\n }\n \n-int cmd_check_mailmap(int argc, const char **argv, const char *prefix)\n+int cmd_check_mailmap(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint i;\n \tstruct string_list mailmap = STRING_LIST_INIT_NODUP;\ndiff --git a/builtin/check-ref-format.c b/builtin/check-ref-format.c\nindex 5eb6bdc3f69..594a5465d4d 100644\n--- a/builtin/check-ref-format.c\n+++ b/builtin/check-ref-format.c\n@@ -51,7 +51,7 @@ static int check_ref_format_branch(const char *arg)\n \treturn 0;\n }\n \n-int cmd_check_ref_format(int argc, const char **argv, const char *prefix)\n+int cmd_check_ref_format(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint i;\n \tint normalize = 0;\ndiff --git a/builtin/checkout--worker.c b/builtin/checkout--worker.c\nindex 6b62b5375bd..61758a11d5d 100644\n--- a/builtin/checkout--worker.c\n+++ b/builtin/checkout--worker.c\n@@ -113,7 +113,7 @@ static const char * const checkout_worker_usage[] = {\n \tNULL\n };\n \n-int cmd_checkout__worker(int argc, const char **argv, const char *prefix)\n+int cmd_checkout__worker(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct checkout state = CHECKOUT_INIT;\n \tstruct option checkout_worker_options[] = {\ndiff --git a/builtin/checkout-index.c b/builtin/checkout-index.c\nindex 29e744d11be..dcf58a4fe13 100644\n--- a/builtin/checkout-index.c\n+++ b/builtin/checkout-index.c\n@@ -208,7 +208,7 @@ static int option_parse_stage(const struct option *opt,\n \treturn 0;\n }\n \n-int cmd_checkout_index(int argc, const char **argv, const char *prefix)\n+int cmd_checkout_index(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint i;\n \tstruct lock_file lock_file = LOCK_INIT;\ndiff --git a/builtin/checkout.c b/builtin/checkout.c\nindex 4cfe6fab505..c43bba082f5 100644\n--- a/builtin/checkout.c\n+++ b/builtin/checkout.c\n@@ -1953,7 +1953,7 @@ static int checkout_main(int argc, const char **argv, const char *prefix,\n \treturn ret;\n }\n \n-int cmd_checkout(int argc, const char **argv, const char *prefix)\n+int cmd_checkout(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct checkout_opts opts = CHECKOUT_OPTS_INIT;\n \tstruct option *options;\n@@ -2000,7 +2000,7 @@ int cmd_checkout(int argc, const char **argv, const char *prefix)\n \t\t\t     checkout_usage);\n }\n \n-int cmd_switch(int argc, const char **argv, const char *prefix)\n+int cmd_switch(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct checkout_opts opts = CHECKOUT_OPTS_INIT;\n \tstruct option *options = NULL;\n@@ -2036,7 +2036,7 @@ int cmd_switch(int argc, const char **argv, const char *prefix)\n \t\t\t     switch_branch_usage);\n }\n \n-int cmd_restore(int argc, const char **argv, const char *prefix)\n+int cmd_restore(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct checkout_opts opts = CHECKOUT_OPTS_INIT;\n \tstruct option *options;\ndiff --git a/builtin/clean.c b/builtin/clean.c\nindex ded5a91534c..d4e00f4f3af 100644\n--- a/builtin/clean.c\n+++ b/builtin/clean.c\n@@ -915,7 +915,7 @@ static void correct_untracked_entries(struct dir_struct *dir)\n \tdir->nr = dst;\n }\n \n-int cmd_clean(int argc, const char **argv, const char *prefix)\n+int cmd_clean(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint i, res;\n \tint dry_run = 0, remove_directories = 0, quiet = 0, ignored = 0;\ndiff --git a/builtin/clone.c b/builtin/clone.c\nindex 269b6e18a4e..fb820861cd9 100644\n--- a/builtin/clone.c\n+++ b/builtin/clone.c\n@@ -956,7 +956,7 @@ static int path_exists(const char *path)\n \treturn !stat(path, &sb);\n }\n \n-int cmd_clone(int argc, const char **argv, const char *prefix)\n+int cmd_clone(int argc, const char **argv, const char *prefix, struct repository *repository UNUSED)\n {\n \tint is_bundle = 0, is_local;\n \tint reject_shallow = 0;\ndiff --git a/builtin/column.c b/builtin/column.c\nindex 10ff7e01668..ca2b522284e 100644\n--- a/builtin/column.c\n+++ b/builtin/column.c\n@@ -18,7 +18,7 @@ static int column_config(const char *var, const char *value,\n \treturn git_column_config(var, value, cb, &colopts);\n }\n \n-int cmd_column(int argc, const char **argv, const char *prefix)\n+int cmd_column(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct string_list list = STRING_LIST_INIT_DUP;\n \tstruct strbuf sb = STRBUF_INIT;\ndiff --git a/builtin/commit-graph.c b/builtin/commit-graph.c\nindex 7102ee90a00..67e27ef0cd7 100644\n--- a/builtin/commit-graph.c\n+++ b/builtin/commit-graph.c\n@@ -331,7 +331,7 @@ cleanup:\n \treturn result;\n }\n \n-int cmd_commit_graph(int argc, const char **argv, const char *prefix)\n+int cmd_commit_graph(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tstruct option builtin_commit_graph_options[] = {\ndiff --git a/builtin/commit-tree.c b/builtin/commit-tree.c\nindex 84bb4502229..42f88d007ff 100644\n--- a/builtin/commit-tree.c\n+++ b/builtin/commit-tree.c\n@@ -90,7 +90,7 @@ static int parse_file_arg_callback(const struct option *opt,\n \treturn 0;\n }\n \n-int cmd_commit_tree(int argc, const char **argv, const char *prefix)\n+int cmd_commit_tree(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstatic struct strbuf buffer = STRBUF_INIT;\n \tstruct commit_list *parents = NULL;\ndiff --git a/builtin/commit.c b/builtin/commit.c\nindex b2033c48877..27c807cde08 100644\n--- a/builtin/commit.c\n+++ b/builtin/commit.c\n@@ -1502,7 +1502,7 @@ static int git_status_config(const char *k, const char *v,\n \treturn git_diff_ui_config(k, v, ctx, NULL);\n }\n \n-int cmd_status(int argc, const char **argv, const char *prefix)\n+int cmd_status(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstatic int no_renames = -1;\n \tstatic const char *rename_score_arg = (const char *)-1;\n@@ -1641,7 +1641,7 @@ static int git_commit_config(const char *k, const char *v,\n \treturn git_status_config(k, v, ctx, s);\n }\n \n-int cmd_commit(int argc, const char **argv, const char *prefix)\n+int cmd_commit(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstatic struct wt_status s;\n \tstatic struct option builtin_commit_options[] = {\ndiff --git a/builtin/config.c b/builtin/config.c\nindex e00d983596b..8604986fa98 100644\n--- a/builtin/config.c\n+++ b/builtin/config.c\n@@ -1392,7 +1392,7 @@ out:\n \treturn ret;\n }\n \n-int cmd_config(int argc, const char **argv, const char *prefix)\n+int cmd_config(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *subcommand = NULL;\n \tstruct option subcommand_opts[] = {\ndiff --git a/builtin/count-objects.c b/builtin/count-objects.c\nindex ec6098a149d..74225ff2488 100644\n--- a/builtin/count-objects.c\n+++ b/builtin/count-objects.c\n@@ -95,7 +95,7 @@ static char const * const count_objects_usage[] = {\n \tNULL\n };\n \n-int cmd_count_objects(int argc, const char **argv, const char *prefix)\n+int cmd_count_objects(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint human_readable = 0;\n \tstruct option opts[] = {\ndiff --git a/builtin/credential-cache--daemon.c b/builtin/credential-cache--daemon.c\nindex 4952b225477..0c4d29a0745 100644\n--- a/builtin/credential-cache--daemon.c\n+++ b/builtin/credential-cache--daemon.c\n@@ -287,7 +287,7 @@ static void init_socket_directory(const char *path)\n \tfree(path_copy);\n }\n \n-int cmd_credential_cache_daemon(int argc, const char **argv, const char *prefix)\n+int cmd_credential_cache_daemon(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct tempfile *socket_file;\n \tconst char *socket_path;\n@@ -330,7 +330,7 @@ int cmd_credential_cache_daemon(int argc, const char **argv, const char *prefix)\n \n #else\n \n-int cmd_credential_cache_daemon(int argc, const char **argv, const char *prefix)\n+int cmd_credential_cache_daemon(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tconst char * const usage[] = {\n \t\t\"git credential-cache--daemon [--debug] <socket-path>\",\ndiff --git a/builtin/credential-cache.c b/builtin/credential-cache.c\nindex aaf2f8438b4..7e6e749ed45 100644\n--- a/builtin/credential-cache.c\n+++ b/builtin/credential-cache.c\n@@ -137,7 +137,7 @@ static void announce_capabilities(void)\n \tcredential_announce_capabilities(&c, stdout);\n }\n \n-int cmd_credential_cache(int argc, const char **argv, const char *prefix)\n+int cmd_credential_cache(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tconst char *socket_path_arg = NULL;\n \tchar *socket_path;\ndiff --git a/builtin/credential-store.c b/builtin/credential-store.c\nindex 97968bfa1c2..e79d72d9695 100644\n--- a/builtin/credential-store.c\n+++ b/builtin/credential-store.c\n@@ -170,7 +170,7 @@ static void lookup_credential(const struct string_list *fns, struct credential *\n \t\t\treturn; /* Found credential */\n }\n \n-int cmd_credential_store(int argc, const char **argv, const char *prefix)\n+int cmd_credential_store(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tconst char * const usage[] = {\n \t\t\"git credential-store [<options>] <action>\",\ndiff --git a/builtin/credential.c b/builtin/credential.c\nindex b72e76dd9a6..9235fbf1977 100644\n--- a/builtin/credential.c\n+++ b/builtin/credential.c\n@@ -6,7 +6,7 @@\n static const char usage_msg[] =\n \t\"git credential (fill|approve|reject)\";\n \n-int cmd_credential(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_credential(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)\n {\n \tconst char *op;\n \tstruct credential c = CREDENTIAL_INIT;\ndiff --git a/builtin/describe.c b/builtin/describe.c\nindex b43093c099f..32ab17de651 100644\n--- a/builtin/describe.c\n+++ b/builtin/describe.c\n@@ -571,7 +571,7 @@ static int option_parse_exact_match(const struct option *opt, const char *arg,\n \treturn 0;\n }\n \n-int cmd_describe(int argc, const char **argv, const char *prefix)\n+int cmd_describe(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED )\n {\n \tint contains = 0;\n \tstruct option options[] = {\n@@ -650,7 +650,7 @@ int cmd_describe(int argc, const char **argv, const char *prefix)\n \t\t\targv_copy[i] = args.v[i];\n \t\targv_copy[args.nr] = NULL;\n \n-\t\tret = cmd_name_rev(args.nr, argv_copy, prefix);\n+\t\tret = cmd_name_rev(args.nr, argv_copy, prefix, the_repository);\n \n \t\tstrvec_clear(&args);\n \t\tfree(argv_copy);\ndiff --git a/builtin/diagnose.c b/builtin/diagnose.c\nindex 4857a4395ba..8d13df9b991 100644\n--- a/builtin/diagnose.c\n+++ b/builtin/diagnose.c\n@@ -11,7 +11,7 @@ static const char * const diagnose_usage[] = {\n \tNULL\n };\n \n-int cmd_diagnose(int argc, const char **argv, const char *prefix)\n+int cmd_diagnose(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct strbuf zip_path = STRBUF_INIT;\n \ttime_t now = time(NULL);\ndiff --git a/builtin/diff-files.c b/builtin/diff-files.c\nindex 018011f29ea..93a3df766ad 100644\n--- a/builtin/diff-files.c\n+++ b/builtin/diff-files.c\n@@ -17,7 +17,7 @@ static const char diff_files_usage[] =\n \"\\n\"\n COMMON_DIFF_OPTIONS_HELP;\n \n-int cmd_diff_files(int argc, const char **argv, const char *prefix)\n+int cmd_diff_files(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct rev_info rev;\n \tint result;\ndiff --git a/builtin/diff-index.c b/builtin/diff-index.c\nindex 685b60284fd..645d2fba359 100644\n--- a/builtin/diff-index.c\n+++ b/builtin/diff-index.c\n@@ -14,7 +14,7 @@ static const char diff_cache_usage[] =\n \"\\n\"\n COMMON_DIFF_OPTIONS_HELP;\n \n-int cmd_diff_index(int argc, const char **argv, const char *prefix)\n+int cmd_diff_index(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct rev_info rev;\n \tunsigned int option = 0;\ndiff --git a/builtin/diff-tree.c b/builtin/diff-tree.c\nindex b8df1d4b79b..0d17708d2a3 100644\n--- a/builtin/diff-tree.c\n+++ b/builtin/diff-tree.c\n@@ -108,7 +108,7 @@ static void diff_tree_tweak_rev(struct rev_info *rev)\n \t}\n }\n \n-int cmd_diff_tree(int argc, const char **argv, const char *prefix)\n+int cmd_diff_tree(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tchar line[1000];\n \tstruct object *tree1, *tree2;\ndiff --git a/builtin/diff.c b/builtin/diff.c\nindex 6eac445579b..ebf71aa5592 100644\n--- a/builtin/diff.c\n+++ b/builtin/diff.c\n@@ -393,7 +393,7 @@ static void symdiff_release(struct symdiff *sdiff)\n \tbitmap_free(sdiff->skip);\n }\n \n-int cmd_diff(int argc, const char **argv, const char *prefix)\n+int cmd_diff(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint i;\n \tstruct rev_info rev;\ndiff --git a/builtin/difftool.c b/builtin/difftool.c\nindex dcc68e190c2..94f3bf72a7c 100644\n--- a/builtin/difftool.c\n+++ b/builtin/difftool.c\n@@ -690,7 +690,7 @@ static int run_file_diff(int prompt, const char *prefix,\n \treturn run_command(child);\n }\n \n-int cmd_difftool(int argc, const char **argv, const char *prefix)\n+int cmd_difftool(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint use_gui_tool = -1, dir_diff = 0, prompt = -1, symlinks = 0,\n \t    tool_help = 0, no_index = 0;\ndiff --git a/builtin/fast-export.c b/builtin/fast-export.c\nindex f253b79322a..37482785b81 100644\n--- a/builtin/fast-export.c\n+++ b/builtin/fast-export.c\n@@ -1180,7 +1180,7 @@ static int parse_opt_anonymize_map(const struct option *opt,\n \treturn 0;\n }\n \n-int cmd_fast_export(int argc, const char **argv, const char *prefix)\n+int cmd_fast_export(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct rev_info revs;\n \tstruct commit *commit;\ndiff --git a/builtin/fast-import.c b/builtin/fast-import.c\nindex 2214c105f17..36b76490e1e 100644\n--- a/builtin/fast-import.c\n+++ b/builtin/fast-import.c\n@@ -3537,7 +3537,7 @@ static void parse_argv(void)\n \tbuild_mark_map(&sub_marks_from, &sub_marks_to);\n }\n \n-int cmd_fast_import(int argc, const char **argv, const char *prefix)\n+int cmd_fast_import(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tunsigned int i;\n \ndiff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c\nindex af329e8d5cf..fcabd1906d4 100644\n--- a/builtin/fetch-pack.c\n+++ b/builtin/fetch-pack.c\n@@ -43,7 +43,7 @@ static void add_sought_entry(struct ref ***sought, int *nr, int *alloc,\n \t(*sought)[*nr - 1] = ref;\n }\n \n-int cmd_fetch_pack(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_fetch_pack(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)\n {\n \tint i, ret;\n \tstruct ref *ref = NULL;\ndiff --git a/builtin/fetch.c b/builtin/fetch.c\nindex c297569a473..ccdb409da43 100644\n--- a/builtin/fetch.c\n+++ b/builtin/fetch.c\n@@ -2138,7 +2138,7 @@ static int fetch_one(struct remote *remote, int argc, const char **argv,\n \treturn exit_code;\n }\n \n-int cmd_fetch(int argc, const char **argv, const char *prefix)\n+int cmd_fetch(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct fetch_config config = {\n \t\t.display_format = DISPLAY_FORMAT_FULL,\ndiff --git a/builtin/fmt-merge-msg.c b/builtin/fmt-merge-msg.c\nindex 957786d1b3a..0a9c2008429 100644\n--- a/builtin/fmt-merge-msg.c\n+++ b/builtin/fmt-merge-msg.c\n@@ -9,7 +9,7 @@ static const char * const fmt_merge_msg_usage[] = {\n \tNULL\n };\n \n-int cmd_fmt_merge_msg(int argc, const char **argv, const char *prefix)\n+int cmd_fmt_merge_msg(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tchar *inpath = NULL;\n \tconst char *message = NULL;\ndiff --git a/builtin/for-each-ref.c b/builtin/for-each-ref.c\nindex 5517a4a1c08..70391638a3d 100644\n--- a/builtin/for-each-ref.c\n+++ b/builtin/for-each-ref.c\n@@ -16,7 +16,7 @@ static char const * const for_each_ref_usage[] = {\n \tNULL\n };\n \n-int cmd_for_each_ref(int argc, const char **argv, const char *prefix)\n+int cmd_for_each_ref(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct ref_sorting *sorting;\n \tstruct string_list sorting_options = STRING_LIST_INIT_DUP;\ndiff --git a/builtin/for-each-repo.c b/builtin/for-each-repo.c\nindex c4fa41fda9f..6b2935ae140 100644\n--- a/builtin/for-each-repo.c\n+++ b/builtin/for-each-repo.c\n@@ -29,7 +29,7 @@ static int run_command_on_repo(const char *path, int argc, const char ** argv)\n \treturn run_command(&child);\n }\n \n-int cmd_for_each_repo(int argc, const char **argv, const char *prefix)\n+int cmd_for_each_repo(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstatic const char *config_key = NULL;\n \tint keep_going = 0;\ndiff --git a/builtin/fsck.c b/builtin/fsck.c\nindex 60f4e6fad97..2b69c963b2e 100644\n--- a/builtin/fsck.c\n+++ b/builtin/fsck.c\n@@ -925,7 +925,7 @@ static struct option fsck_opts[] = {\n \tOPT_END(),\n };\n \n-int cmd_fsck(int argc, const char **argv, const char *prefix)\n+int cmd_fsck(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint i;\n \tstruct object_directory *odb;\ndiff --git a/builtin/fsmonitor--daemon.c b/builtin/fsmonitor--daemon.c\nindex 1593713f4cb..93f4a60ca22 100644\n--- a/builtin/fsmonitor--daemon.c\n+++ b/builtin/fsmonitor--daemon.c\n@@ -1521,7 +1521,7 @@ static int try_to_start_background_daemon(void)\n \t}\n }\n \n-int cmd_fsmonitor__daemon(int argc, const char **argv, const char *prefix)\n+int cmd_fsmonitor__daemon(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tconst char *subcmd;\n \tenum fsmonitor_reason reason;\n@@ -1584,7 +1584,7 @@ int cmd_fsmonitor__daemon(int argc, const char **argv, const char *prefix)\n }\n \n #else\n-int cmd_fsmonitor__daemon(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_fsmonitor__daemon(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)\n {\n \tstruct option options[] = {\n \t\tOPT_END()\ndiff --git a/builtin/gc.c b/builtin/gc.c\nindex 427faf1cfe1..462dacb0bdb 100644\n--- a/builtin/gc.c\n+++ b/builtin/gc.c\n@@ -657,7 +657,7 @@ static void gc_before_repack(struct maintenance_run_opts *opts,\n \t}\n }\n \n-int cmd_gc(int argc, const char **argv, const char *prefix)\n+int cmd_gc(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint aggressive = 0;\n \tint quiet = 0;\n@@ -2890,7 +2890,7 @@ static const char * const builtin_maintenance_usage[] = {\n \tNULL,\n };\n \n-int cmd_maintenance(int argc, const char **argv, const char *prefix)\n+int cmd_maintenance(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tstruct option builtin_maintenance_options[] = {\ndiff --git a/builtin/get-tar-commit-id.c b/builtin/get-tar-commit-id.c\nindex 7195a072edc..627133807b7 100644\n--- a/builtin/get-tar-commit-id.c\n+++ b/builtin/get-tar-commit-id.c\n@@ -12,7 +12,7 @@ static const char builtin_get_tar_commit_id_usage[] =\n #define RECORDSIZE\t(512)\n #define HEADERSIZE (2 * RECORDSIZE)\n \n-int cmd_get_tar_commit_id(int argc, const char **argv UNUSED, const char *prefix)\n+int cmd_get_tar_commit_id(int argc, const char **argv UNUSED, const char *prefix, struct repository *repo UNUSED)\n {\n \tchar buffer[HEADERSIZE];\n \tstruct ustar_header *header = (struct ustar_header *)buffer;\ndiff --git a/builtin/grep.c b/builtin/grep.c\nindex dfc3c3e8bd2..98eea1f4dc5 100644\n--- a/builtin/grep.c\n+++ b/builtin/grep.c\n@@ -888,7 +888,7 @@ static int pattern_callback(const struct option *opt, const char *arg,\n \treturn 0;\n }\n \n-int cmd_grep(int argc, const char **argv, const char *prefix)\n+int cmd_grep(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint hit = 0;\n \tint cached = 0, untracked = 0, opt_exclude = -1;\ndiff --git a/builtin/hash-object.c b/builtin/hash-object.c\nindex c767414a0cc..59a48345394 100644\n--- a/builtin/hash-object.c\n+++ b/builtin/hash-object.c\n@@ -84,7 +84,7 @@ static void hash_stdin_paths(const char *type, int no_filters, unsigned flags,\n \tstrbuf_release(&unquoted);\n }\n \n-int cmd_hash_object(int argc, const char **argv, const char *prefix)\n+int cmd_hash_object(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstatic const char * const hash_object_usage[] = {\n \t\tN_(\"git hash-object [-t <type>] [-w] [--path=<file> | --no-filters]\\n\"\ndiff --git a/builtin/help.c b/builtin/help.c\nindex dc1fbe2b986..4efdccfb7fb 100644\n--- a/builtin/help.c\n+++ b/builtin/help.c\n@@ -631,7 +631,7 @@ static void opt_mode_usage(int argc, const char *opt_mode,\n \tno_help_format(opt_mode, fmt);\n }\n \n-int cmd_help(int argc, const char **argv, const char *prefix)\n+int cmd_help(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint nongit;\n \tenum help_format parsed_help_format;\ndiff --git a/builtin/hook.c b/builtin/hook.c\nindex cc37438fdee..2aa6476f8fc 100644\n--- a/builtin/hook.c\n+++ b/builtin/hook.c\n@@ -66,7 +66,7 @@ usage:\n \tusage_with_options(builtin_hook_run_usage, run_options);\n }\n \n-int cmd_hook(int argc, const char **argv, const char *prefix)\n+int cmd_hook(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tstruct option builtin_hook_options[] = {\ndiff --git a/builtin/index-pack.c b/builtin/index-pack.c\nindex fd968d673d2..64754da036d 100644\n--- a/builtin/index-pack.c\n+++ b/builtin/index-pack.c\n@@ -1718,7 +1718,7 @@ static void show_pack_info(int stat_only)\n \tfree(chain_histogram);\n }\n \n-int cmd_index_pack(int argc, const char **argv, const char *prefix)\n+int cmd_index_pack(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint i, fix_thin_pack = 0, verify = 0, stat_only = 0, rev_index;\n \tconst char *curr_index;\ndiff --git a/builtin/init-db.c b/builtin/init-db.c\nindex 582dcf20f86..fe16d91aaba 100644\n--- a/builtin/init-db.c\n+++ b/builtin/init-db.c\n@@ -70,7 +70,7 @@ static const char *const init_db_usage[] = {\n  * On the other hand, it might just make lookup slower and messier. You\n  * be the judge.  The default case is to have one DB per managed directory.\n  */\n-int cmd_init_db(int argc, const char **argv, const char *prefix)\n+int cmd_init_db(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tconst char *git_dir;\n \tconst char *real_git_dir = NULL;\ndiff --git a/builtin/interpret-trailers.c b/builtin/interpret-trailers.c\nindex 1d969494cf5..79da472e8eb 100644\n--- a/builtin/interpret-trailers.c\n+++ b/builtin/interpret-trailers.c\n@@ -188,7 +188,7 @@ static void interpret_trailers(const struct process_trailer_options *opts,\n \tstrbuf_release(&sb);\n }\n \n-int cmd_interpret_trailers(int argc, const char **argv, const char *prefix)\n+int cmd_interpret_trailers(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct process_trailer_options opts = PROCESS_TRAILER_OPTIONS_INIT;\n \tLIST_HEAD(trailers);\ndiff --git a/builtin/log.c b/builtin/log.c\nindex 36769bab3b6..c9018e89e55 100644\n--- a/builtin/log.c\n+++ b/builtin/log.c\n@@ -637,7 +637,7 @@ static int git_log_config(const char *var, const char *value,\n \treturn git_diff_ui_config(var, value, ctx, cb);\n }\n \n-int cmd_whatchanged(int argc, const char **argv, const char *prefix)\n+int cmd_whatchanged(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct log_config cfg;\n \tstruct rev_info rev;\n@@ -758,7 +758,7 @@ static void show_setup_revisions_tweak(struct rev_info *rev)\n \t\trev->diffopt.output_format = DIFF_FORMAT_PATCH;\n }\n \n-int cmd_show(int argc, const char **argv, const char *prefix)\n+int cmd_show(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct log_config cfg;\n \tstruct rev_info rev;\n@@ -874,7 +874,7 @@ int cmd_show(int argc, const char **argv, const char *prefix)\n /*\n  * This is equivalent to \"git log -g --abbrev-commit --pretty=oneline\"\n  */\n-int cmd_log_reflog(int argc, const char **argv, const char *prefix)\n+int cmd_log_reflog(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct log_config cfg;\n \tstruct rev_info rev;\n@@ -916,7 +916,7 @@ static void log_setup_revisions_tweak(struct rev_info *rev)\n \t\tdiff_merges_default_to_first_parent(rev);\n }\n \n-int cmd_log(int argc, const char **argv, const char *prefix)\n+int cmd_log(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct log_config cfg;\n \tstruct rev_info rev;\n@@ -1986,7 +1986,7 @@ static void infer_range_diff_ranges(struct strbuf *r1,\n \t}\n }\n \n-int cmd_format_patch(int argc, const char **argv, const char *prefix)\n+int cmd_format_patch(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct format_config cfg;\n \tstruct commit *commit;\n@@ -2619,7 +2619,7 @@ static void print_commit(char sign, struct commit *commit, int verbose,\n \t}\n }\n \n-int cmd_cherry(int argc, const char **argv, const char *prefix)\n+int cmd_cherry(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct rev_info revs;\n \tstruct patch_ids ids;\ndiff --git a/builtin/ls-files.c b/builtin/ls-files.c\nindex 6eeb5cba783..5185f264e8d 100644\n--- a/builtin/ls-files.c\n+++ b/builtin/ls-files.c\n@@ -561,7 +561,7 @@ static int option_parse_exclude_standard(const struct option *opt,\n \treturn 0;\n }\n \n-int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix)\n+int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix, struct repository *repo UNUSED)\n {\n \tint require_work_tree = 0, show_tag = 0, i;\n \tchar *max_prefix;\ndiff --git a/builtin/ls-remote.c b/builtin/ls-remote.c\nindex 0a491595ca8..ce826d32686 100644\n--- a/builtin/ls-remote.c\n+++ b/builtin/ls-remote.c\n@@ -37,7 +37,7 @@ static int tail_match(const struct strvec *pattern, const char *path)\n \treturn 0;\n }\n \n-int cmd_ls_remote(int argc, const char **argv, const char *prefix)\n+int cmd_ls_remote(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tconst char *dest = NULL;\n \tunsigned flags = 0;\ndiff --git a/builtin/ls-tree.c b/builtin/ls-tree.c\nindex bf372c67d77..f91361ca788 100644\n--- a/builtin/ls-tree.c\n+++ b/builtin/ls-tree.c\n@@ -329,7 +329,7 @@ static struct ls_tree_cmdmode_to_fmt ls_tree_cmdmode_format[] = {\n \t},\n };\n \n-int cmd_ls_tree(int argc, const char **argv, const char *prefix)\n+int cmd_ls_tree(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct object_id oid;\n \tstruct tree *tree;\ndiff --git a/builtin/mailinfo.c b/builtin/mailinfo.c\nindex 53a22645da5..d883ccf4590 100644\n--- a/builtin/mailinfo.c\n+++ b/builtin/mailinfo.c\n@@ -48,7 +48,7 @@ static int parse_opt_quoted_cr(const struct option *opt, const char *arg, int un\n \treturn 0;\n }\n \n-int cmd_mailinfo(int argc, const char **argv, const char *prefix)\n+int cmd_mailinfo(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct metainfo_charset meta_charset;\n \tstruct mailinfo mi;\ndiff --git a/builtin/mailsplit.c b/builtin/mailsplit.c\nindex fe6dbc5d053..585b81834c2 100644\n--- a/builtin/mailsplit.c\n+++ b/builtin/mailsplit.c\n@@ -269,7 +269,7 @@ out:\n \treturn ret;\n }\n \n-int cmd_mailsplit(int argc, const char **argv, const char *prefix)\n+int cmd_mailsplit(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint nr = 0, nr_prec = 4, num = 0;\n \tint allow_bare = 0;\ndiff --git a/builtin/merge-base.c b/builtin/merge-base.c\nindex 5a8e7295029..d5aef8b32c0 100644\n--- a/builtin/merge-base.c\n+++ b/builtin/merge-base.c\n@@ -143,7 +143,7 @@ static int handle_fork_point(int argc, const char **argv)\n \treturn 0;\n }\n \n-int cmd_merge_base(int argc, const char **argv, const char *prefix)\n+int cmd_merge_base(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct commit **rev;\n \tint rev_nr = 0;\ndiff --git a/builtin/merge-file.c b/builtin/merge-file.c\nindex 1f987334a31..a538edf2a46 100644\n--- a/builtin/merge-file.c\n+++ b/builtin/merge-file.c\n@@ -53,7 +53,7 @@ static int diff_algorithm_cb(const struct option *opt,\n \treturn 0;\n }\n \n-int cmd_merge_file(int argc, const char **argv, const char *prefix)\n+int cmd_merge_file(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tconst char *names[3] = { 0 };\n \tmmfile_t mmfs[3] = { 0 };\ndiff --git a/builtin/merge-index.c b/builtin/merge-index.c\nindex 0fabe3f6bb2..39870e14bfa 100644\n--- a/builtin/merge-index.c\n+++ b/builtin/merge-index.c\n@@ -73,7 +73,7 @@ static void merge_all(void)\n \t}\n }\n \n-int cmd_merge_index(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_merge_index(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)\n {\n \tint i, force_file = 0;\n \ndiff --git a/builtin/merge-ours.c b/builtin/merge-ours.c\nindex 932924e5d0e..391c767e122 100644\n--- a/builtin/merge-ours.c\n+++ b/builtin/merge-ours.c\n@@ -15,7 +15,7 @@\n static const char builtin_merge_ours_usage[] =\n \t\"git merge-ours <base>... -- HEAD <remote>...\";\n \n-int cmd_merge_ours(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_merge_ours(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)\n {\n \tif (argc == 2 && !strcmp(argv[1], \"-h\"))\n \t\tusage(builtin_merge_ours_usage);\ndiff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c\nindex e951b09805d..cd2b4d9a721 100644\n--- a/builtin/merge-recursive.c\n+++ b/builtin/merge-recursive.c\n@@ -21,7 +21,7 @@ static char *better_branch_name(const char *branch)\n \treturn xstrdup(name ? name : branch);\n }\n \n-int cmd_merge_recursive(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_merge_recursive(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)\n {\n \tstruct object_id bases[21];\n \tunsigned bases_count = 0;\ndiff --git a/builtin/merge-tree.c b/builtin/merge-tree.c\nindex 9bca9b5f33c..e69ed337f46 100644\n--- a/builtin/merge-tree.c\n+++ b/builtin/merge-tree.c\n@@ -526,7 +526,7 @@ static int real_merge(struct merge_tree_options *o,\n \treturn !result.clean; /* result.clean < 0 handled above */\n }\n \n-int cmd_merge_tree(int argc, const char **argv, const char *prefix)\n+int cmd_merge_tree(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct merge_tree_options o = { .show_messages = -1 };\n \tstruct strvec xopts = STRVEC_INIT;\ndiff --git a/builtin/merge.c b/builtin/merge.c\nindex 662a49a0e8c..4e817f6e91f 100644\n--- a/builtin/merge.c\n+++ b/builtin/merge.c\n@@ -1275,7 +1275,7 @@ static int merging_a_throwaway_tag(struct commit *commit)\n \treturn is_throwaway_tag;\n }\n \n-int cmd_merge(int argc, const char **argv, const char *prefix)\n+int cmd_merge(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct object_id result_tree, stash, head_oid;\n \tstruct commit *head_commit;\n@@ -1347,7 +1347,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)\n \t\t\t\t\tREF_NO_DEREF);\n \n \t\t/* Invoke 'git reset --merge' */\n-\t\tret = cmd_reset(nargc, nargv, prefix);\n+\t\tret = cmd_reset(nargc, nargv, prefix, the_repository);\n \n \t\tif (!is_null_oid(&stash_oid)) {\n \t\t\toid_to_hex_r(stash_oid_hex, &stash_oid);\n@@ -1379,7 +1379,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)\n \t\t\tdie(_(\"There is no merge in progress (MERGE_HEAD missing).\"));\n \n \t\t/* Invoke 'git commit' */\n-\t\tret = cmd_commit(nargc, nargv, prefix);\n+\t\tret = cmd_commit(nargc, nargv, prefix, the_repository);\n \t\tgoto done;\n \t}\n \ndiff --git a/builtin/mktag.c b/builtin/mktag.c\nindex c6b644219fb..cc3f1b7c5bb 100644\n--- a/builtin/mktag.c\n+++ b/builtin/mktag.c\n@@ -71,7 +71,7 @@ static int verify_object_in_tag(struct object_id *tagged_oid, int *tagged_type)\n \treturn ret;\n }\n \n-int cmd_mktag(int argc, const char **argv, const char *prefix)\n+int cmd_mktag(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstatic struct option builtin_mktag_options[] = {\n \t\tOPT_BOOL(0, \"strict\", &option_strict,\ndiff --git a/builtin/mktree.c b/builtin/mktree.c\nindex 9a22d4e2773..1c43360b50c 100644\n--- a/builtin/mktree.c\n+++ b/builtin/mktree.c\n@@ -150,7 +150,7 @@ static void mktree_line(char *buf, int nul_term_line, int allow_missing)\n \tfree(to_free);\n }\n \n-int cmd_mktree(int ac, const char **av, const char *prefix)\n+int cmd_mktree(int ac, const char **av, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct strbuf sb = STRBUF_INIT;\n \tstruct object_id oid;\ndiff --git a/builtin/multi-pack-index.c b/builtin/multi-pack-index.c\nindex 8805cbbeb3b..91324a5581d 100644\n--- a/builtin/multi-pack-index.c\n+++ b/builtin/multi-pack-index.c\n@@ -268,7 +268,7 @@ static int cmd_multi_pack_index_repack(int argc, const char **argv,\n }\n \n int cmd_multi_pack_index(int argc, const char **argv,\n-\t\t\t const char *prefix)\n+\t\t\t const char *prefix, struct repository *repo UNUSED)\n {\n \tint res;\n \tparse_opt_subcommand_fn *fn = NULL;\ndiff --git a/builtin/mv.c b/builtin/mv.c\nindex 6c69033c5f5..3069d1d9ce8 100644\n--- a/builtin/mv.c\n+++ b/builtin/mv.c\n@@ -178,7 +178,7 @@ static void remove_empty_src_dirs(const char **src_dir, size_t src_dir_nr)\n \tstrbuf_release(&a_src_dir);\n }\n \n-int cmd_mv(int argc, const char **argv, const char *prefix)\n+int cmd_mv(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint i, flags, gitmodules_modified = 0;\n \tint verbose = 0, show_only = 0, force = 0, ignore_errors = 0, ignore_sparse = 0;\ndiff --git a/builtin/name-rev.c b/builtin/name-rev.c\nindex a468ef84c37..f46f5546629 100644\n--- a/builtin/name-rev.c\n+++ b/builtin/name-rev.c\n@@ -558,7 +558,7 @@ static void name_rev_line(char *p, struct name_ref_data *data)\n \tstrbuf_release(&buf);\n }\n \n-int cmd_name_rev(int argc, const char **argv, const char *prefix)\n+int cmd_name_rev(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct mem_pool string_pool;\n \tstruct object_array revs = OBJECT_ARRAY_INIT;\ndiff --git a/builtin/notes.c b/builtin/notes.c\nindex 04f9dfb7fbd..2f8e896283a 100644\n--- a/builtin/notes.c\n+++ b/builtin/notes.c\n@@ -1096,7 +1096,7 @@ static int get_ref(int argc, const char **argv, const char *prefix)\n \treturn 0;\n }\n \n-int cmd_notes(int argc, const char **argv, const char *prefix)\n+int cmd_notes(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tconst char *override_notes_ref = NULL;\n \tparse_opt_subcommand_fn *fn = NULL;\ndiff --git a/builtin/pack-objects.c b/builtin/pack-objects.c\nindex 778be80f564..702d10ea86b 100644\n--- a/builtin/pack-objects.c\n+++ b/builtin/pack-objects.c\n@@ -4284,7 +4284,7 @@ static int option_parse_cruft_expiration(const struct option *opt UNUSED,\n \treturn 0;\n }\n \n-int cmd_pack_objects(int argc, const char **argv, const char *prefix)\n+int cmd_pack_objects(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint use_internal_rev_list = 0;\n \tint shallow = 0;\ndiff --git a/builtin/pack-redundant.c b/builtin/pack-redundant.c\nindex dd9bf35f5b8..42d367c95d1 100644\n--- a/builtin/pack-redundant.c\n+++ b/builtin/pack-redundant.c\n@@ -561,7 +561,7 @@ static void load_all(void)\n \t}\n }\n \n-int cmd_pack_redundant(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_pack_redundant(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)\n {\n \tint i;\n \tint i_still_use_this = 0;\ndiff --git a/builtin/pack-refs.c b/builtin/pack-refs.c\nindex db408256663..c61e876216a 100644\n--- a/builtin/pack-refs.c\n+++ b/builtin/pack-refs.c\n@@ -11,7 +11,7 @@ static char const * const pack_refs_usage[] = {\n \tNULL\n };\n \n-int cmd_pack_refs(int argc, const char **argv, const char *prefix)\n+int cmd_pack_refs(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct ref_exclusions excludes = REF_EXCLUSIONS_INIT;\n \tstruct string_list included_refs = STRING_LIST_INIT_NODUP;\ndiff --git a/builtin/patch-id.c b/builtin/patch-id.c\nindex 35c1179f7e9..4449c44580a 100644\n--- a/builtin/patch-id.c\n+++ b/builtin/patch-id.c\n@@ -260,7 +260,7 @@ static int git_patch_id_config(const char *var, const char *value,\n \treturn git_default_config(var, value, ctx, cb);\n }\n \n-int cmd_patch_id(int argc, const char **argv, const char *prefix)\n+int cmd_patch_id(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \t/* if nothing is set, default to unstable */\n \tstruct patch_id_opts config = {0, 0};\ndiff --git a/builtin/prune-packed.c b/builtin/prune-packed.c\nindex ca3578e1588..d22cd632340 100644\n--- a/builtin/prune-packed.c\n+++ b/builtin/prune-packed.c\n@@ -8,7 +8,7 @@ static const char * const prune_packed_usage[] = {\n \tNULL\n };\n \n-int cmd_prune_packed(int argc, const char **argv, const char *prefix)\n+int cmd_prune_packed(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint opts = isatty(2) ? PRUNE_PACKED_VERBOSE : 0;\n \tconst struct option prune_packed_options[] = {\ndiff --git a/builtin/prune.c b/builtin/prune.c\nindex 57fe31467fe..ed532fab0a5 100644\n--- a/builtin/prune.c\n+++ b/builtin/prune.c\n@@ -147,7 +147,7 @@ static void remove_temporary_files(const char *path)\n \tclosedir(dir);\n }\n \n-int cmd_prune(int argc, const char **argv, const char *prefix)\n+int cmd_prune(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct rev_info revs;\n \tint exclude_promisor_objects = 0;\ndiff --git a/builtin/pull.c b/builtin/pull.c\nindex 4c54d8196fa..906c02e5a97 100644\n--- a/builtin/pull.c\n+++ b/builtin/pull.c\n@@ -977,7 +977,7 @@ static void show_advice_pull_non_ff(void)\n \t\t \"invocation.\\n\"));\n }\n \n-int cmd_pull(int argc, const char **argv, const char *prefix)\n+int cmd_pull(int argc, const char **argv, const char *prefix, struct repository *repository UNUSED)\n {\n \tconst char *repo, **refspecs;\n \tstruct oid_array merge_heads = OID_ARRAY_INIT;\ndiff --git a/builtin/push.c b/builtin/push.c\nindex 7a67398124f..a6b7fcd9538 100644\n--- a/builtin/push.c\n+++ b/builtin/push.c\n@@ -546,7 +546,7 @@ static int git_push_config(const char *k, const char *v,\n \treturn git_default_config(k, v, ctx, NULL);\n }\n \n-int cmd_push(int argc, const char **argv, const char *prefix)\n+int cmd_push(int argc, const char **argv, const char *prefix, struct repository *repository UNUSED)\n {\n \tint flags = 0;\n \tint tags = 0;\ndiff --git a/builtin/range-diff.c b/builtin/range-diff.c\nindex f02cbac087d..30a5b003bab 100644\n--- a/builtin/range-diff.c\n+++ b/builtin/range-diff.c\n@@ -13,7 +13,7 @@ N_(\"git range-diff [<options>] <base> <old-tip> <new-tip>\"),\n NULL\n };\n \n-int cmd_range_diff(int argc, const char **argv, const char *prefix)\n+int cmd_range_diff(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct diff_options diffopt = { NULL };\n \tstruct strvec other_arg = STRVEC_INIT;\ndiff --git a/builtin/read-tree.c b/builtin/read-tree.c\nindex a8cf8504b8a..89fa0b728d7 100644\n--- a/builtin/read-tree.c\n+++ b/builtin/read-tree.c\n@@ -108,7 +108,7 @@ static int git_read_tree_config(const char *var, const char *value,\n \treturn git_default_config(var, value, ctx, cb);\n }\n \n-int cmd_read_tree(int argc, const char **argv, const char *cmd_prefix)\n+int cmd_read_tree(int argc, const char **argv, const char *cmd_prefix, struct repository *repo UNUSED)\n {\n \tint i, stage = 0;\n \tstruct object_id oid;\ndiff --git a/builtin/rebase.c b/builtin/rebase.c\nindex a2c96c080e1..20a0a324aff 100644\n--- a/builtin/rebase.c\n+++ b/builtin/rebase.c\n@@ -1063,7 +1063,7 @@ static int check_exec_cmd(const char *cmd)\n \treturn 0;\n }\n \n-int cmd_rebase(int argc, const char **argv, const char *prefix)\n+int cmd_rebase(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct rebase_options options = REBASE_OPTIONS_INIT;\n \tconst char *branch_name;\ndiff --git a/builtin/receive-pack.c b/builtin/receive-pack.c\nindex 3f35140e489..74677ff1a24 100644\n--- a/builtin/receive-pack.c\n+++ b/builtin/receive-pack.c\n@@ -2480,7 +2480,7 @@ static int delete_only(struct command *commands)\n \treturn 1;\n }\n \n-int cmd_receive_pack(int argc, const char **argv, const char *prefix)\n+int cmd_receive_pack(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint advertise_refs = 0;\n \tstruct command *commands;\ndiff --git a/builtin/reflog.c b/builtin/reflog.c\nindex 0d2ff95c6e7..1eab96aca98 100644\n--- a/builtin/reflog.c\n+++ b/builtin/reflog.c\n@@ -244,7 +244,7 @@ static int cmd_reflog_show(int argc, const char **argv, const char *prefix)\n \t\t      PARSE_OPT_KEEP_DASHDASH | PARSE_OPT_KEEP_ARGV0 |\n \t\t      PARSE_OPT_KEEP_UNKNOWN_OPT);\n \n-\treturn cmd_log_reflog(argc, argv, prefix);\n+\treturn cmd_log_reflog(argc, argv, prefix, the_repository);\n }\n \n static int show_reflog(const char *refname, void *cb_data UNUSED)\n@@ -447,7 +447,7 @@ static int cmd_reflog_exists(int argc, const char **argv, const char *prefix)\n  * main \"reflog\"\n  */\n \n-int cmd_reflog(int argc, const char **argv, const char *prefix)\n+int cmd_reflog(int argc, const char **argv, const char *prefix, struct repository *repository)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tstruct option options[] = {\n@@ -466,5 +466,5 @@ int cmd_reflog(int argc, const char **argv, const char *prefix)\n \tif (fn)\n \t\treturn fn(argc - 1, argv + 1, prefix);\n \telse\n-\t\treturn cmd_log_reflog(argc, argv, prefix);\n+\t\treturn cmd_log_reflog(argc, argv, prefix, repository);\n }\ndiff --git a/builtin/refs.c b/builtin/refs.c\nindex 131f98be986..355e0abce76 100644\n--- a/builtin/refs.c\n+++ b/builtin/refs.c\n@@ -90,7 +90,7 @@ static int cmd_refs_verify(int argc, const char **argv, const char *prefix)\n \treturn ret;\n }\n \n-int cmd_refs(int argc, const char **argv, const char *prefix)\n+int cmd_refs(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tconst char * const refs_usage[] = {\n \t\tREFS_MIGRATE_USAGE,\ndiff --git a/builtin/remote-ext.c b/builtin/remote-ext.c\nindex 282782eccdd..b325dff729d 100644\n--- a/builtin/remote-ext.c\n+++ b/builtin/remote-ext.c\n@@ -195,7 +195,7 @@ static int command_loop(const char *child)\n \t}\n }\n \n-int cmd_remote_ext(int argc, const char **argv, const char *prefix)\n+int cmd_remote_ext(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tBUG_ON_NON_EMPTY_PREFIX(prefix);\n \ndiff --git a/builtin/remote-fd.c b/builtin/remote-fd.c\nindex 9020fab9c58..6ec2b45c97d 100644\n--- a/builtin/remote-fd.c\n+++ b/builtin/remote-fd.c\n@@ -53,7 +53,7 @@ static void command_loop(int input_fd, int output_fd)\n \t}\n }\n \n-int cmd_remote_fd(int argc, const char **argv, const char *prefix)\n+int cmd_remote_fd(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint input_fd = -1;\n \tint output_fd = -1;\ndiff --git a/builtin/remote.c b/builtin/remote.c\nindex d1f9292ed2b..d24d4966ccb 100644\n--- a/builtin/remote.c\n+++ b/builtin/remote.c\n@@ -1754,7 +1754,7 @@ out:\n \treturn 0;\n }\n \n-int cmd_remote(int argc, const char **argv, const char *prefix)\n+int cmd_remote(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tstruct option options[] = {\ndiff --git a/builtin/repack.c b/builtin/repack.c\nindex 62cfa50c50f..ea06f0b4a0f 100644\n--- a/builtin/repack.c\n+++ b/builtin/repack.c\n@@ -1116,7 +1116,7 @@ static const char *find_pack_prefix(const char *packdir, const char *packtmp)\n \treturn pack_prefix;\n }\n \n-int cmd_repack(int argc, const char **argv, const char *prefix)\n+int cmd_repack(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct child_process cmd = CHILD_PROCESS_INIT;\n \tstruct string_list_item *item;\ndiff --git a/builtin/replace.c b/builtin/replace.c\nindex 34cc4672bc1..9c6d846c497 100644\n--- a/builtin/replace.c\n+++ b/builtin/replace.c\n@@ -545,7 +545,7 @@ static int convert_graft_file(int force)\n \treturn -1;\n }\n \n-int cmd_replace(int argc, const char **argv, const char *prefix)\n+int cmd_replace(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint force = 0;\n \tint raw = 0;\ndiff --git a/builtin/replay.c b/builtin/replay.c\nindex 138198ce9ca..66f417aab78 100644\n--- a/builtin/replay.c\n+++ b/builtin/replay.c\n@@ -274,7 +274,7 @@ static struct commit *pick_regular_commit(struct commit *pickme,\n \treturn create_commit(result->tree, pickme, replayed_base);\n }\n \n-int cmd_replay(int argc, const char **argv, const char *prefix)\n+int cmd_replay(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tconst char *advance_name_opt = NULL;\n \tchar *advance_name = NULL;\ndiff --git a/builtin/rerere.c b/builtin/rerere.c\nindex 81b65ffa39c..7bccf393c8d 100644\n--- a/builtin/rerere.c\n+++ b/builtin/rerere.c\n@@ -48,7 +48,7 @@ static int diff_two(const char *file1, const char *label1,\n \treturn ret;\n }\n \n-int cmd_rerere(int argc, const char **argv, const char *prefix)\n+int cmd_rerere(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct string_list merge_rr = STRING_LIST_INIT_DUP;\n \tint i, autoupdate = -1, flags = 0;\ndiff --git a/builtin/reset.c b/builtin/reset.c\nindex 5f941fb3a29..a8e293b0c57 100644\n--- a/builtin/reset.c\n+++ b/builtin/reset.c\n@@ -330,7 +330,7 @@ static int git_reset_config(const char *var, const char *value,\n \treturn git_default_config(var, value, ctx, cb);\n }\n \n-int cmd_reset(int argc, const char **argv, const char *prefix)\n+int cmd_reset(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint reset_type = NONE, update_ref_status = 0, quiet = 0;\n \tint no_refresh = 0;\ndiff --git a/builtin/rev-list.c b/builtin/rev-list.c\nindex 97d077a9943..71bc12ee6b2 100644\n--- a/builtin/rev-list.c\n+++ b/builtin/rev-list.c\n@@ -513,7 +513,7 @@ static int try_bitmap_disk_usage(struct rev_info *revs,\n \treturn 0;\n }\n \n-int cmd_rev_list(int argc, const char **argv, const char *prefix)\n+int cmd_rev_list(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct rev_info revs;\n \tstruct rev_list_info info;\ndiff --git a/builtin/rev-parse.c b/builtin/rev-parse.c\nindex 4285dc34a7b..ba5bc0facd7 100644\n--- a/builtin/rev-parse.c\n+++ b/builtin/rev-parse.c\n@@ -688,7 +688,7 @@ static void print_path(const char *path, const char *prefix, enum format_type fo\n \tfree(cwd);\n }\n \n-int cmd_rev_parse(int argc, const char **argv, const char *prefix)\n+int cmd_rev_parse(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint i, as_is = 0, verify = 0, quiet = 0, revs_count = 0, type = 0;\n \tconst struct git_hash_algo *output_algo = NULL;\ndiff --git a/builtin/revert.c b/builtin/revert.c\nindex 7bf2b4e11d6..e6be55a2bd9 100644\n--- a/builtin/revert.c\n+++ b/builtin/revert.c\n@@ -261,7 +261,7 @@ static int run_sequencer(int argc, const char **argv, const char *prefix,\n \treturn sequencer_pick_revisions(the_repository, opts);\n }\n \n-int cmd_revert(int argc, const char **argv, const char *prefix)\n+int cmd_revert(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct replay_opts opts = REPLAY_OPTS_INIT;\n \tint res;\n@@ -275,7 +275,7 @@ int cmd_revert(int argc, const char **argv, const char *prefix)\n \treturn res;\n }\n \n-int cmd_cherry_pick(int argc, const char **argv, const char *prefix)\n+int cmd_cherry_pick(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct replay_opts opts = REPLAY_OPTS_INIT;\n \tint res;\ndiff --git a/builtin/rm.c b/builtin/rm.c\nindex 0e79cbab62b..4fd94f7e7e8 100644\n--- a/builtin/rm.c\n+++ b/builtin/rm.c\n@@ -261,7 +261,7 @@ static struct option builtin_rm_options[] = {\n \tOPT_END(),\n };\n \n-int cmd_rm(int argc, const char **argv, const char *prefix)\n+int cmd_rm(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct lock_file lock_file = LOCK_INIT;\n \tint i, ret = 0;\ndiff --git a/builtin/send-pack.c b/builtin/send-pack.c\nindex 17cae6bbbdf..5479cd5731c 100644\n--- a/builtin/send-pack.c\n+++ b/builtin/send-pack.c\n@@ -147,7 +147,7 @@ static int send_pack_config(const char *k, const char *v,\n \treturn git_default_config(k, v, ctx, cb);\n }\n \n-int cmd_send_pack(int argc, const char **argv, const char *prefix)\n+int cmd_send_pack(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct refspec rs = REFSPEC_INIT_PUSH;\n \tconst char *remote_name = NULL;\ndiff --git a/builtin/shortlog.c b/builtin/shortlog.c\nindex b529608c923..c911383026d 100644\n--- a/builtin/shortlog.c\n+++ b/builtin/shortlog.c\n@@ -378,7 +378,7 @@ void shortlog_finish_setup(struct shortlog *log)\n \tstring_list_sort(&log->trailers);\n }\n \n-int cmd_shortlog(int argc, const char **argv, const char *prefix)\n+int cmd_shortlog(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct shortlog log = { STRING_LIST_INIT_NODUP };\n \tstruct rev_info rev;\ndiff --git a/builtin/show-branch.c b/builtin/show-branch.c\nindex 29237f653d8..800a64fd4c7 100644\n--- a/builtin/show-branch.c\n+++ b/builtin/show-branch.c\n@@ -632,7 +632,7 @@ static int parse_reflog_param(const struct option *opt, const char *arg,\n \treturn 0;\n }\n \n-int cmd_show_branch(int ac, const char **av, const char *prefix)\n+int cmd_show_branch(int ac, const char **av, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct commit *rev[MAX_REVS], *commit;\n \tchar *reflog_msg[MAX_REVS] = {0};\ndiff --git a/builtin/show-index.c b/builtin/show-index.c\nindex 540dc3dad1c..952ea798fc1 100644\n--- a/builtin/show-index.c\n+++ b/builtin/show-index.c\n@@ -11,7 +11,7 @@ static const char *const show_index_usage[] = {\n \tNULL\n };\n \n-int cmd_show_index(int argc, const char **argv, const char *prefix)\n+int cmd_show_index(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint i;\n \tunsigned nr;\ndiff --git a/builtin/show-ref.c b/builtin/show-ref.c\nindex f5899ce9ff7..8d908a03949 100644\n--- a/builtin/show-ref.c\n+++ b/builtin/show-ref.c\n@@ -287,7 +287,7 @@ static int exclude_existing_callback(const struct option *opt, const char *arg,\n \treturn 0;\n }\n \n-int cmd_show_ref(int argc, const char **argv, const char *prefix)\n+int cmd_show_ref(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct exclude_existing_options exclude_existing_opts = {0};\n \tstruct patterns_options patterns_opts = {0};\ndiff --git a/builtin/sparse-checkout.c b/builtin/sparse-checkout.c\nindex 2604ab04df5..da9d582b12d 100644\n--- a/builtin/sparse-checkout.c\n+++ b/builtin/sparse-checkout.c\n@@ -1030,7 +1030,7 @@ static int sparse_checkout_check_rules(int argc, const char **argv, const char *\n \treturn ret;\n }\n \n-int cmd_sparse_checkout(int argc, const char **argv, const char *prefix)\n+int cmd_sparse_checkout(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tstruct option builtin_sparse_checkout_options[] = {\ndiff --git a/builtin/stash.c b/builtin/stash.c\nindex fcfd97972a4..da90d18f16d 100644\n--- a/builtin/stash.c\n+++ b/builtin/stash.c\n@@ -1871,7 +1871,7 @@ static int save_stash(int argc, const char **argv, const char *prefix)\n \treturn ret;\n }\n \n-int cmd_stash(int argc, const char **argv, const char *prefix)\n+int cmd_stash(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tpid_t pid = getpid();\n \tconst char *index_file;\ndiff --git a/builtin/stripspace.c b/builtin/stripspace.c\nindex e5626e51266..a83ad2b5f30 100644\n--- a/builtin/stripspace.c\n+++ b/builtin/stripspace.c\n@@ -29,7 +29,7 @@ enum stripspace_mode {\n \tCOMMENT_LINES\n };\n \n-int cmd_stripspace(int argc, const char **argv, const char *prefix)\n+int cmd_stripspace(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct strbuf buf = STRBUF_INIT;\n \tenum stripspace_mode mode = STRIP_DEFAULT;\ndiff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c\nindex 85fb23dee84..1a1fc40e467 100644\n--- a/builtin/submodule--helper.c\n+++ b/builtin/submodule--helper.c\n@@ -3528,7 +3528,7 @@ cleanup:\n \treturn ret;\n }\n \n-int cmd_submodule__helper(int argc, const char **argv, const char *prefix)\n+int cmd_submodule__helper(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tconst char *const usage[] = {\ndiff --git a/builtin/symbolic-ref.c b/builtin/symbolic-ref.c\nindex 81abdd170fe..682f3cf3ae4 100644\n--- a/builtin/symbolic-ref.c\n+++ b/builtin/symbolic-ref.c\n@@ -41,7 +41,7 @@ static int check_symref(const char *HEAD, int quiet, int shorten, int recurse, i\n \treturn 0;\n }\n \n-int cmd_symbolic_ref(int argc, const char **argv, const char *prefix)\n+int cmd_symbolic_ref(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint quiet = 0, delete = 0, shorten = 0, recurse = 1, ret = 0;\n \tconst char *msg = NULL;\ndiff --git a/builtin/tag.c b/builtin/tag.c\nindex a1fb218512c..925e269f0f4 100644\n--- a/builtin/tag.c\n+++ b/builtin/tag.c\n@@ -457,7 +457,7 @@ static int strbuf_check_tag_ref(struct strbuf *sb, const char *name)\n \treturn check_refname_format(sb->buf, 0);\n }\n \n-int cmd_tag(int argc, const char **argv, const char *prefix)\n+int cmd_tag(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct strbuf buf = STRBUF_INIT;\n \tstruct strbuf ref = STRBUF_INIT;\ndiff --git a/builtin/unpack-file.c b/builtin/unpack-file.c\nindex c129e2bb6cb..366d4743d4c 100644\n--- a/builtin/unpack-file.c\n+++ b/builtin/unpack-file.c\n@@ -25,7 +25,7 @@ static char *create_temp_file(struct object_id *oid)\n \treturn path;\n }\n \n-int cmd_unpack_file(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_unpack_file(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)\n {\n \tstruct object_id oid;\n \ndiff --git a/builtin/unpack-objects.c b/builtin/unpack-objects.c\nindex 08fa2a7a743..c6f9456a0ec 100644\n--- a/builtin/unpack-objects.c\n+++ b/builtin/unpack-objects.c\n@@ -601,7 +601,7 @@ static void unpack_all(void)\n \t\tdie(\"unresolved deltas left after unpacking\");\n }\n \n-int cmd_unpack_objects(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_unpack_objects(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)\n {\n \tint i;\n \tstruct object_id oid;\ndiff --git a/builtin/update-index.c b/builtin/update-index.c\nindex 35a1f957adc..c2974b57661 100644\n--- a/builtin/update-index.c\n+++ b/builtin/update-index.c\n@@ -917,7 +917,7 @@ static enum parse_opt_result reupdate_callback(\n \treturn 0;\n }\n \n-int cmd_update_index(int argc, const char **argv, const char *prefix)\n+int cmd_update_index(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint newfd, entries, has_errors = 0, nul_term_line = 0;\n \tenum uc_mode untracked_cache = UC_UNSPECIFIED;\ndiff --git a/builtin/update-ref.c b/builtin/update-ref.c\nindex 8f31da9a4b7..97f116ed391 100644\n--- a/builtin/update-ref.c\n+++ b/builtin/update-ref.c\n@@ -713,7 +713,7 @@ static void update_refs_stdin(void)\n \tstrbuf_release(&input);\n }\n \n-int cmd_update_ref(int argc, const char **argv, const char *prefix)\n+int cmd_update_ref(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tconst char *refname, *oldval;\n \tstruct object_id oid, oldoid;\ndiff --git a/builtin/update-server-info.c b/builtin/update-server-info.c\nindex 1dc3971edeb..b09527b2865 100644\n--- a/builtin/update-server-info.c\n+++ b/builtin/update-server-info.c\n@@ -9,7 +9,7 @@ static const char * const update_server_info_usage[] = {\n \tNULL\n };\n \n-int cmd_update_server_info(int argc, const char **argv, const char *prefix)\n+int cmd_update_server_info(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint force = 0;\n \tstruct option options[] = {\ndiff --git a/builtin/upload-archive.c b/builtin/upload-archive.c\nindex 1b09e5e1aa3..447fbbb90b5 100644\n--- a/builtin/upload-archive.c\n+++ b/builtin/upload-archive.c\n@@ -18,7 +18,7 @@ static const char deadchild[] =\n \n #define MAX_ARGS (64)\n \n-int cmd_upload_archive_writer(int argc, const char **argv, const char *prefix)\n+int cmd_upload_archive_writer(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct strvec sent_argv = STRVEC_INIT;\n \tconst char *arg_cmd = \"argument \";\n@@ -76,7 +76,7 @@ static ssize_t process_input(int child_fd, int band)\n \treturn sz;\n }\n \n-int cmd_upload_archive(int argc, const char **argv, const char *prefix)\n+int cmd_upload_archive(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tstruct child_process writer = CHILD_PROCESS_INIT;\n \ndiff --git a/builtin/upload-pack.c b/builtin/upload-pack.c\nindex 46d93278d9a..a6fd26d4a7c 100644\n--- a/builtin/upload-pack.c\n+++ b/builtin/upload-pack.c\n@@ -17,7 +17,7 @@ static const char * const upload_pack_usage[] = {\n \tNULL\n };\n \n-int cmd_upload_pack(int argc, const char **argv, const char *prefix)\n+int cmd_upload_pack(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tconst char *dir;\n \tint strict = 0;\ndiff --git a/builtin/var.c b/builtin/var.c\nindex e30ff45be1c..8b07a7a6a09 100644\n--- a/builtin/var.c\n+++ b/builtin/var.c\n@@ -210,7 +210,7 @@ static int show_config(const char *var, const char *value,\n \treturn git_default_config(var, value, ctx, cb);\n }\n \n-int cmd_var(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_var(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)\n {\n \tconst struct git_var *git_var;\n \tchar *val;\ndiff --git a/builtin/verify-commit.c b/builtin/verify-commit.c\nindex 0d2b9aea2ae..dbf5b315569 100644\n--- a/builtin/verify-commit.c\n+++ b/builtin/verify-commit.c\n@@ -51,7 +51,7 @@ static int verify_commit(const char *name, unsigned flags)\n \treturn run_gpg_verify((struct commit *)obj, flags);\n }\n \n-int cmd_verify_commit(int argc, const char **argv, const char *prefix)\n+int cmd_verify_commit(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint i = 1, verbose = 0, had_error = 0;\n \tunsigned flags = 0;\ndiff --git a/builtin/verify-pack.c b/builtin/verify-pack.c\nindex 011dddd2dc3..1d0a789d19a 100644\n--- a/builtin/verify-pack.c\n+++ b/builtin/verify-pack.c\n@@ -61,7 +61,7 @@ static const char * const verify_pack_usage[] = {\n \tNULL\n };\n \n-int cmd_verify_pack(int argc, const char **argv, const char *prefix)\n+int cmd_verify_pack(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint err = 0;\n \tunsigned int flags = 0;\ndiff --git a/builtin/verify-tag.c b/builtin/verify-tag.c\nindex c731e2f87b4..8e81a9a9e05 100644\n--- a/builtin/verify-tag.c\n+++ b/builtin/verify-tag.c\n@@ -19,7 +19,7 @@ static const char * const verify_tag_usage[] = {\n \t\tNULL\n };\n \n-int cmd_verify_tag(int argc, const char **argv, const char *prefix)\n+int cmd_verify_tag(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n {\n \tint i = 1, verbose = 0, had_error = 0;\n \tunsigned flags = 0;\ndiff --git a/builtin/worktree.c b/builtin/worktree.c\nindex 41e7f6a3271..4c2b9e19217 100644\n--- a/builtin/worktree.c\n+++ b/builtin/worktree.c\n@@ -1392,7 +1392,7 @@ static int repair(int ac, const char **av, const char *prefix)\n \treturn rc;\n }\n \n-int cmd_worktree(int ac, const char **av, const char *prefix)\n+int cmd_worktree(int ac, const char **av, const char *prefix, struct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tstruct option options[] = {\ndiff --git a/builtin/write-tree.c b/builtin/write-tree.c\nindex 8c75b4609b5..91b80e05d3a 100644\n--- a/builtin/write-tree.c\n+++ b/builtin/write-tree.c\n@@ -19,7 +19,7 @@ static const char * const write_tree_usage[] = {\n \tNULL\n };\n \n-int cmd_write_tree(int argc, const char **argv, const char *cmd_prefix)\n+int cmd_write_tree(int argc, const char **argv, const char *cmd_prefix, struct repository *repo UNUSED)\n {\n \tint flags = 0, ret;\n \tconst char *tree_prefix = NULL;\ndiff --git a/git.c b/git.c\nindex 9a618a2740f..0ea6e351dfd 100644\n--- a/git.c\n+++ b/git.c\n@@ -31,7 +31,7 @@\n \n struct cmd_struct {\n \tconst char *cmd;\n-\tint (*fn)(int, const char **, const char *);\n+\tint (*fn)(int, const char **, const char *, struct repository *);\n \tunsigned int option;\n };\n \n@@ -441,7 +441,7 @@ static int handle_alias(int *argcp, const char ***argv)\n \treturn ret;\n }\n \n-static int run_builtin(struct cmd_struct *p, int argc, const char **argv)\n+static int run_builtin(struct cmd_struct *p, int argc, const char **argv, struct repository *repo)\n {\n \tint status, help;\n \tstruct stat st;\n@@ -479,9 +479,11 @@ static int run_builtin(struct cmd_struct *p, int argc, const char **argv)\n \ttrace_argv_printf(argv, \"trace: built-in: git\");\n \ttrace2_cmd_name(p->cmd);\n \n-\tvalidate_cache_entries(the_repository->index);\n-\tstatus = p->fn(argc, argv, prefix);\n-\tvalidate_cache_entries(the_repository->index);\n+\tvalidate_cache_entries(repo->index);\n+\n+\tstatus = p->fn(argc, argv, prefix, startup_info->have_repository? repo: NULL) ;\n+\n+\tvalidate_cache_entries(repo->index);\n \n \tif (status)\n \t\treturn status;\n@@ -736,7 +738,7 @@ static void handle_builtin(int argc, const char **argv)\n \n \tbuiltin = get_builtin(cmd);\n \tif (builtin)\n-\t\texit(run_builtin(builtin, argc, argv));\n+\t\texit(run_builtin(builtin, argc, argv, the_repository));\n \tstrvec_clear(&args);\n }\n \ndiff --git a/help.c b/help.c\nindex c03863f2265..e7cdfab6432 100644\n--- a/help.c\n+++ b/help.c\n@@ -16,6 +16,7 @@\n #include \"parse-options.h\"\n #include \"prompt.h\"\n #include \"fsmonitor-ipc.h\"\n+#include \"repository.h\"\n \n #ifndef NO_CURL\n #include \"git-curl-compat.h\" /* For LIBCURL_VERSION only */\n@@ -775,7 +776,7 @@ void get_version_info(struct strbuf *buf, int show_build_options)\n \t}\n }\n \n-int cmd_version(int argc, const char **argv, const char *prefix)\n+int cmd_version(int argc, const char **argv, const char *prefix, struct repository *repository UNUSED)\n {\n \tstruct strbuf buf = STRBUF_INIT;\n \tint build_options = 0;\n-- \ngitgitgadget\n\n"},{"id":"502263","messageId":"bc9090469340fe2bead812918d149287dcda5609.1725555468.git.gitgitgadget@gmail.com","threadId":"62067","inReplyTo":"pull.1778.git.git.1725555467.gitgitgadget@gmail.com","subject":"[PATCH 3/3] add: pass in repo variable instead of global the_repository","fromName":"John Cai via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2024-09-05T16:57:47Z","receivedAt":"2024-09-05T16:57:55Z","isPatch":true,"sender":{"key":"johncai86@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2354211?v=4"},"body":"From: John Cai <johncai86@gmail.com>\n\nWith the repository variable available in the builtin function as an\nargument, pass this down into helper functions instead of using the\nglobal the_repository.\n\nSigned-off-by: John Cai <johncai86@gmail.com>\n---\n builtin/add.c    | 97 +++++++++++++++++++++++++-----------------------\n builtin/commit.c |  2 +-\n commit.h         |  3 +-\n 3 files changed, 53 insertions(+), 49 deletions(-)\n\ndiff --git a/builtin/add.c b/builtin/add.c\nindex dac832df3e7..a68fd7c8313 100644\n--- a/builtin/add.c\n+++ b/builtin/add.c\n@@ -36,24 +36,27 @@ static int pathspec_file_nul;\n static int include_sparse;\n static const char *pathspec_from_file;\n \n-static int chmod_pathspec(struct pathspec *pathspec, char flip, int show_only)\n+static int chmod_pathspec(struct pathspec *pathspec,\n+\t\t\t  char flip,\n+\t\t\t  int show_only,\n+\t\t\t  struct repository *repo)\n {\n \tint i, ret = 0;\n \n-\tfor (i = 0; i < the_repository->index->cache_nr; i++) {\n-\t\tstruct cache_entry *ce = the_repository->index->cache[i];\n+\tfor (i = 0; i < repo->index->cache_nr; i++) {\n+\t\tstruct cache_entry *ce = repo->index->cache[i];\n \t\tint err;\n \n \t\tif (!include_sparse &&\n \t\t    (ce_skip_worktree(ce) ||\n-\t\t     !path_in_sparse_checkout(ce->name, the_repository->index)))\n+\t\t     !path_in_sparse_checkout(ce->name, repo->index)))\n \t\t\tcontinue;\n \n-\t\tif (pathspec && !ce_path_match(the_repository->index, ce, pathspec, NULL))\n+\t\tif (pathspec && !ce_path_match(repo->index, ce, pathspec, NULL))\n \t\t\tcontinue;\n \n \t\tif (!show_only)\n-\t\t\terr = chmod_index_entry(the_repository->index, ce, flip);\n+\t\t\terr = chmod_index_entry(repo->index, ce, flip);\n \t\telse\n \t\t\terr = S_ISREG(ce->ce_mode) ? 0 : -1;\n \n@@ -64,31 +67,31 @@ static int chmod_pathspec(struct pathspec *pathspec, char flip, int show_only)\n \treturn ret;\n }\n \n-static int renormalize_tracked_files(const struct pathspec *pathspec, int flags)\n+static int renormalize_tracked_files(const struct pathspec *pathspec, int flags, struct repository *repo)\n {\n \tint i, retval = 0;\n \n-\tfor (i = 0; i < the_repository->index->cache_nr; i++) {\n-\t\tstruct cache_entry *ce = the_repository->index->cache[i];\n+\tfor (i = 0; i < repo->index->cache_nr; i++) {\n+\t\tstruct cache_entry *ce = repo->index->cache[i];\n \n \t\tif (!include_sparse &&\n \t\t    (ce_skip_worktree(ce) ||\n-\t\t     !path_in_sparse_checkout(ce->name, the_repository->index)))\n+\t\t     !path_in_sparse_checkout(ce->name, repo->index)))\n \t\t\tcontinue;\n \t\tif (ce_stage(ce))\n \t\t\tcontinue; /* do not touch unmerged paths */\n \t\tif (!S_ISREG(ce->ce_mode) && !S_ISLNK(ce->ce_mode))\n \t\t\tcontinue; /* do not touch non blobs */\n-\t\tif (pathspec && !ce_path_match(the_repository->index, ce, pathspec, NULL))\n+\t\tif (pathspec && !ce_path_match(repo->index, ce, pathspec, NULL))\n \t\t\tcontinue;\n-\t\tretval |= add_file_to_index(the_repository->index, ce->name,\n+\t\tretval |= add_file_to_index(repo->index, ce->name,\n \t\t\t\t\t    flags | ADD_CACHE_RENORMALIZE);\n \t}\n \n \treturn retval;\n }\n \n-static char *prune_directory(struct dir_struct *dir, struct pathspec *pathspec, int prefix)\n+static char *prune_directory(struct dir_struct *dir, struct pathspec *pathspec, int prefix, struct repository *repo)\n {\n \tchar *seen;\n \tint i;\n@@ -100,16 +103,16 @@ static char *prune_directory(struct dir_struct *dir, struct pathspec *pathspec,\n \ti = dir->nr;\n \twhile (--i >= 0) {\n \t\tstruct dir_entry *entry = *src++;\n-\t\tif (dir_path_match(the_repository->index, entry, pathspec, prefix, seen))\n+\t\tif (dir_path_match(repo->index, entry, pathspec, prefix, seen))\n \t\t\t*dst++ = entry;\n \t}\n \tdir->nr = dst - dir->entries;\n-\tadd_pathspec_matches_against_index(pathspec, the_repository->index, seen,\n+\tadd_pathspec_matches_against_index(pathspec, repo->index, seen,\n \t\t\t\t\t   PS_IGNORE_SKIP_WORKTREE);\n \treturn seen;\n }\n \n-static int refresh(int verbose, const struct pathspec *pathspec)\n+static int refresh(int verbose, const struct pathspec *pathspec, struct repository *repo)\n {\n \tchar *seen;\n \tint i, ret = 0;\n@@ -119,14 +122,14 @@ static int refresh(int verbose, const struct pathspec *pathspec)\n \t\t    (verbose ? REFRESH_IN_PORCELAIN : REFRESH_QUIET);\n \n \tseen = xcalloc(pathspec->nr, 1);\n-\trefresh_index(the_repository->index, flags, pathspec, seen,\n+\trefresh_index(repo->index, flags, pathspec, seen,\n \t\t      _(\"Unstaged changes after refreshing the index:\"));\n \tfor (i = 0; i < pathspec->nr; i++) {\n \t\tif (!seen[i]) {\n \t\t\tconst char *path = pathspec->items[i].original;\n \n \t\t\tif (matches_skip_worktree(pathspec, i, &skip_worktree_seen) ||\n-\t\t\t    !path_in_sparse_checkout(path, the_repository->index)) {\n+\t\t\t    !path_in_sparse_checkout(path, repo->index)) {\n \t\t\t\tstring_list_append(&only_match_skip_worktree,\n \t\t\t\t\t\t   pathspec->items[i].original);\n \t\t\t} else {\n@@ -147,7 +150,7 @@ static int refresh(int verbose, const struct pathspec *pathspec)\n \treturn ret;\n }\n \n-int interactive_add(const char **argv, const char *prefix, int patch)\n+int interactive_add(const char **argv, const char *prefix, int patch, struct repository *repo)\n {\n \tstruct pathspec pathspec;\n \tint ret;\n@@ -159,15 +162,15 @@ int interactive_add(const char **argv, const char *prefix, int patch)\n \t\t       prefix, argv);\n \n \tif (patch)\n-\t\tret = !!run_add_p(the_repository, ADD_P_ADD, NULL, &pathspec);\n+\t\tret = !!run_add_p(repo, ADD_P_ADD, NULL, &pathspec);\n \telse\n-\t\tret = !!run_add_i(the_repository, &pathspec);\n+\t\tret = !!run_add_i(repo, &pathspec);\n \n \tclear_pathspec(&pathspec);\n \treturn ret;\n }\n \n-static int edit_patch(int argc, const char **argv, const char *prefix)\n+static int edit_patch(int argc, const char **argv, const char *prefix, struct repository *repo)\n {\n \tchar *file = git_pathdup(\"ADD_EDIT.patch\");\n \tstruct child_process child = CHILD_PROCESS_INIT;\n@@ -177,10 +180,10 @@ static int edit_patch(int argc, const char **argv, const char *prefix)\n \n \tgit_config(git_diff_basic_config, NULL); /* no \"diff\" UI options */\n \n-\tif (repo_read_index(the_repository) < 0)\n+\tif (repo_read_index(repo) < 0)\n \t\tdie(_(\"could not read the index\"));\n \n-\trepo_init_revisions(the_repository, &rev, prefix);\n+\trepo_init_revisions(repo, &rev, prefix);\n \trev.diffopt.context = 7;\n \n \targc = setup_revisions(argc, argv, &rev, NULL);\n@@ -318,7 +321,7 @@ static void check_embedded_repo(const char *path)\n \tstrbuf_release(&name);\n }\n \n-static int add_files(struct dir_struct *dir, int flags)\n+static int add_files(struct dir_struct *dir, int flags, struct repository *repo)\n {\n \tint i, exit_status = 0;\n \tstruct string_list matched_sparse_paths = STRING_LIST_INIT_NODUP;\n@@ -334,12 +337,12 @@ static int add_files(struct dir_struct *dir, int flags)\n \n \tfor (i = 0; i < dir->nr; i++) {\n \t\tif (!include_sparse &&\n-\t\t    !path_in_sparse_checkout(dir->entries[i]->name, the_repository->index)) {\n+\t\t    !path_in_sparse_checkout(dir->entries[i]->name, repo->index)) {\n \t\t\tstring_list_append(&matched_sparse_paths,\n \t\t\t\t\t   dir->entries[i]->name);\n \t\t\tcontinue;\n \t\t}\n-\t\tif (add_file_to_index(the_repository->index, dir->entries[i]->name, flags)) {\n+\t\tif (add_file_to_index(repo->index, dir->entries[i]->name, flags)) {\n \t\t\tif (!ignore_add_errors)\n \t\t\t\tdie(_(\"adding files failed\"));\n \t\t\texit_status = 1;\n@@ -358,7 +361,7 @@ static int add_files(struct dir_struct *dir, int flags)\n \treturn exit_status;\n }\n \n-int cmd_add(int argc, const char **argv, const char *prefix, struct repository *repository UNUSED)\n+int cmd_add(int argc, const char **argv, const char *prefix, struct repository *repo)\n {\n \tint exit_status = 0;\n \tstruct pathspec pathspec;\n@@ -381,13 +384,13 @@ int cmd_add(int argc, const char **argv, const char *prefix, struct repository *\n \t\t\tdie(_(\"options '%s' and '%s' cannot be used together\"), \"--dry-run\", \"--interactive/--patch\");\n \t\tif (pathspec_from_file)\n \t\t\tdie(_(\"options '%s' and '%s' cannot be used together\"), \"--pathspec-from-file\", \"--interactive/--patch\");\n-\t\texit(interactive_add(argv + 1, prefix, patch_interactive));\n+\t\texit(interactive_add(argv + 1, prefix, patch_interactive, repo));\n \t}\n \n \tif (edit_interactive) {\n \t\tif (pathspec_from_file)\n \t\t\tdie(_(\"options '%s' and '%s' cannot be used together\"), \"--pathspec-from-file\", \"--edit\");\n-\t\treturn(edit_patch(argc, argv, prefix));\n+\t\treturn(edit_patch(argc, argv, prefix, repo));\n \t}\n \targc--;\n \targv++;\n@@ -410,10 +413,10 @@ int cmd_add(int argc, const char **argv, const char *prefix, struct repository *\n \tadd_new_files = !take_worktree_changes && !refresh_only && !add_renormalize;\n \trequire_pathspec = !(take_worktree_changes || (0 < addremove_explicit));\n \n-\tprepare_repo_settings(the_repository);\n-\tthe_repository->settings.command_requires_full_index = 0;\n+\tprepare_repo_settings(repo);\n+\trepo->settings.command_requires_full_index = 0;\n \n-\trepo_hold_locked_index(the_repository, &lock_file, LOCK_DIE_ON_ERROR);\n+\trepo_hold_locked_index(repo, &lock_file, LOCK_DIE_ON_ERROR);\n \n \t/*\n \t * Check the \"pathspec '%s' did not match any files\" block\n@@ -454,11 +457,11 @@ int cmd_add(int argc, const char **argv, const char *prefix, struct repository *\n \t\t (!(addremove || take_worktree_changes)\n \t\t  ? ADD_CACHE_IGNORE_REMOVAL : 0));\n \n-\tif (repo_read_index_preload(the_repository, &pathspec, 0) < 0)\n+\tif (repo_read_index_preload(repo, &pathspec, 0) < 0)\n \t\tdie(_(\"index file corrupt\"));\n \n-\tdie_in_unpopulated_submodule(the_repository->index, prefix);\n-\tdie_path_inside_submodule(the_repository->index, &pathspec);\n+\tdie_in_unpopulated_submodule(repo->index, prefix);\n+\tdie_path_inside_submodule(repo->index, &pathspec);\n \n \tif (add_new_files) {\n \t\tint baselen;\n@@ -470,13 +473,13 @@ int cmd_add(int argc, const char **argv, const char *prefix, struct repository *\n \t\t}\n \n \t\t/* This picks up the paths that are not tracked */\n-\t\tbaselen = fill_directory(&dir, the_repository->index, &pathspec);\n+\t\tbaselen = fill_directory(&dir, repo->index, &pathspec);\n \t\tif (pathspec.nr)\n-\t\t\tseen = prune_directory(&dir, &pathspec, baselen);\n+\t\t\tseen = prune_directory(&dir, &pathspec, baselen, repo);\n \t}\n \n \tif (refresh_only) {\n-\t\texit_status |= refresh(verbose, &pathspec);\n+\t\texit_status |= refresh(verbose, &pathspec, repo);\n \t\tgoto finish;\n \t}\n \n@@ -487,7 +490,7 @@ int cmd_add(int argc, const char **argv, const char *prefix, struct repository *\n \n \t\tif (!seen)\n \t\t\tseen = find_pathspecs_matching_against_index(&pathspec,\n-\t\t\t\t\tthe_repository->index, PS_IGNORE_SKIP_WORKTREE);\n+\t\t\t\t\trepo->index, PS_IGNORE_SKIP_WORKTREE);\n \n \t\t/*\n \t\t * file_exists() assumes exact match\n@@ -523,8 +526,8 @@ int cmd_add(int argc, const char **argv, const char *prefix, struct repository *\n \t\t\t    !file_exists(path)) {\n \t\t\t\tif (ignore_missing) {\n \t\t\t\t\tint dtype = DT_UNKNOWN;\n-\t\t\t\t\tif (is_excluded(&dir, the_repository->index, path, &dtype))\n-\t\t\t\t\t\tdir_add_ignored(&dir, the_repository->index,\n+\t\t\t\t\tif (is_excluded(&dir, repo->index, path, &dtype))\n+\t\t\t\t\t\tdir_add_ignored(&dir, repo->index,\n \t\t\t\t\t\t\t\tpath, pathspec.items[i].len);\n \t\t\t\t} else\n \t\t\t\t\tdie(_(\"pathspec '%s' did not match any files\"),\n@@ -547,9 +550,9 @@ int cmd_add(int argc, const char **argv, const char *prefix, struct repository *\n \n \tps_matched = xcalloc(pathspec.nr, 1);\n \tif (add_renormalize)\n-\t\texit_status |= renormalize_tracked_files(&pathspec, flags);\n+\t\texit_status |= renormalize_tracked_files(&pathspec, flags, repo);\n \telse\n-\t\texit_status |= add_files_to_cache(the_repository, prefix,\n+\t\texit_status |= add_files_to_cache(repo, prefix,\n \t\t\t\t\t\t  &pathspec, ps_matched,\n \t\t\t\t\t\t  include_sparse, flags);\n \n@@ -558,14 +561,14 @@ int cmd_add(int argc, const char **argv, const char *prefix, struct repository *\n \t\texit(128);\n \n \tif (add_new_files)\n-\t\texit_status |= add_files(&dir, flags);\n+\t\texit_status |= add_files(&dir, flags, repo);\n \n \tif (chmod_arg && pathspec.nr)\n-\t\texit_status |= chmod_pathspec(&pathspec, chmod_arg[0], show_only);\n+\t\texit_status |= chmod_pathspec(&pathspec, chmod_arg[0], show_only, repo);\n \tend_odb_transaction();\n \n finish:\n-\tif (write_locked_index(the_repository->index, &lock_file,\n+\tif (write_locked_index(repo->index, &lock_file,\n \t\t\t       COMMIT_LOCK | SKIP_IF_UNCHANGED))\n \t\tdie(_(\"unable to write new index file\"));\n \ndiff --git a/builtin/commit.c b/builtin/commit.c\nindex 141c8d85620..d9ee6502448 100644\n--- a/builtin/commit.c\n+++ b/builtin/commit.c\n@@ -396,7 +396,7 @@ static const char *prepare_index(const char **argv, const char *prefix,\n \t\told_index_env = xstrdup_or_null(getenv(INDEX_ENVIRONMENT));\n \t\tsetenv(INDEX_ENVIRONMENT, the_repository->index_file, 1);\n \n-\t\tif (interactive_add(argv, prefix, patch_interactive) != 0)\n+\t\tif (interactive_add(argv, prefix, patch_interactive, the_repository) != 0)\n \t\t\tdie(_(\"interactive add failed\"));\n \n \t\tthe_repository->index_file = old_repo_index_file;\ndiff --git a/commit.h b/commit.h\nindex 0e5fce543c2..92fef717be1 100644\n--- a/commit.h\n+++ b/commit.h\n@@ -2,6 +2,7 @@\n #define COMMIT_H\n \n #include \"object.h\"\n+#include \"repository.h\"\n \n struct signature_check;\n struct strbuf;\n@@ -253,7 +254,7 @@ struct oid_array;\n struct ref;\n int for_each_commit_graft(each_commit_graft_fn, void *);\n \n-int interactive_add(const char **argv, const char *prefix, int patch);\n+int interactive_add(const char **argv, const char *prefix, int patch, struct repository *repo);\n \n struct commit_extra_header {\n \tstruct commit_extra_header *next;\n-- \ngitgitgadget\n"},{"id":"502268","messageId":"xmqqjzfq2f0f.fsf@gitster.g","threadId":"62067","inReplyTo":"pull.1778.git.git.1725555467.gitgitgadget@gmail.com","subject":"Re: [PATCH 0/3] Add repository parameter to builtins","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2024-09-05T17:21:04Z","receivedAt":"2024-09-05T17:21:16Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"John Cai via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n\n> As part of the effort to remove global state of the_repository, add a\n> repository parameter to builtins so that a repository variable can be passed\n> down. The patches are ordered as follows:\n>\n>  1. Changes the signature of builtins and passes the_repository down in\n>     git.c to be called by all builtins.\n>  2. Remove USE_THE_REPOSITORY_VARIABLE from builtin.h, and instead add it to\n>     each individual builtin. This paves the way for a migration process\n>     whereby each builtin can be migrated away from using the_repository.\n>  3. As an example, migrate builtin/add.c to get rid of the_repository by\n>     instead passing the repository argument down into helper functions.\n\nAs most of the commands require a repository (as they should---those\nthat work without a repository ought to be outliners, things that\nare needed to bootstrap like \"git init\" and \"git clone\", or those\nthat allow us to interact with a remote repository without having\nany repository on our side to be affected, like \"git archive\" or\n\"git ls-remote\"), I think this probably makes sense as a good first\nstep.\n\nAnd there are commands that are primarily for working with Git, but\noptionally can work outside a repository.  They need to do special\nthings in any case by calling setup_git_directory_gently() with\nnongit to figure out if they are in the repository, e.g.\n\n\tprefix = setup_git_directory_gently(&nongit);\n\n\tif (!nongit) {\n\t\tprepare_repo_settings(the_repository);\n\t\tthe_repository->settings.command_requires_full_index = 0;\n\t} else {\n\t\t... do whatever it can outside a repository ...\n\t}\n\n(note: this was taken from \"git diff\" with a bit of tweak, but\nothers in the same category should look very similar), so I would\nimagine that we may want to update setup_git_directory_gently() to\nbe more like:\n\n\tconst char *setup_git_directory_gently(struct repository **repo);\n\nand the above snippet would become:\n\n\tprefix = setup_git_directory_gently(&repo);\n\n\tif (repo) {\n\t\tprepare_repo_settings(repo);\n\t\trepo->settings.command_requires_full_index = 0;\n\t} else {\n\t\t...\n\t}\n\nIOW, \"nongit\" Boolean flag we use to say \"are we working without a\nrepository?\" becomes \"the dispatcher in git.c usually gives us the\nrepository in repo, but we asked them not to do the repository setup\nand we will call setup_git_directory_gently() ourselves, allowing\nthe call to overwrite the repo parameter given.\"\n\nThanks.\n"},{"id":"502270","messageId":"xmqqcyli2dnx.fsf@gitster.g","threadId":"62067","inReplyTo":"17acc1e054c26b67659df17db828b106c005ffea.1725555468.git.gitgitgadget@gmail.com","subject":"Re: [PATCH 2/3] builtin: remove USE_THE_REPOSITORY_VARIABLE from builtin.h","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2024-09-05T17:50:10Z","receivedAt":"2024-09-05T17:50:13Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"John Cai via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n\n> From: John Cai <johncai86@gmail.com>\n>\n> Instead of including USE_THE_REPOSITORY_VARIABLE by default on every\n> builtin, remove it from builtin.h and add it where necessary to\n> individual builtins/*. The next step will be to migrate each builtin\n> from having to use the_repository.\n>\n> Signed-off-by: John Cai <johncai86@gmail.com>\n> ---\n\nWe at least need the following fix-up in order to play nice with\nothers, specifically Patrick's ps/environ-wo-the-repository, when\nthe topic is merged to 'seen'.\n\nThanks.\n\ndiff --git i/builtin/init-db.c w/builtin/init-db.c\nindex b0ac318cc6..cb5fc340a2 100644\n--- i/builtin/init-db.c\n+++ w/builtin/init-db.c\n@@ -3,6 +3,8 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n+\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"environment.h\"\ndiff --git i/builtin/mailinfo.c w/builtin/mailinfo.c\nindex d883ccf459..aed1199710 100644\n--- i/builtin/mailinfo.c\n+++ w/builtin/mailinfo.c\n@@ -2,6 +2,8 @@\n  * Another stupid program, this one parsing the headers of an\n  * email to figure out authorship and subject\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n+\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"environment.h\"\n"},{"id":"502318","messageId":"ZtrdljxBJtnaUEla@pks.im","threadId":"62067","inReplyTo":"3301a34f76303c43feaf4eb9d6913fbeec439e97.1725555468.git.gitgitgadget@gmail.com","subject":"Re: [PATCH 1/3] builtin: add a repository parameter for builtin functions","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2024-09-06T10:46:46Z","receivedAt":"2024-09-06T10:46:51Z","isPatch":true,"sender":{"key":"ps@pks.im","avatar":"https://avatars.githubusercontent.com/u/4056630?v=4"},"body":"On Thu, Sep 05, 2024 at 04:57:45PM +0000, John Cai via GitGitGadget wrote:\n> From: John Cai <johncai86@gmail.com>\n> diff --git a/builtin/add.c b/builtin/add.c\n> index 40b61ef90d9..3b9bc93ed9a 100644\n> --- a/builtin/add.c\n> +++ b/builtin/add.c\n> @@ -358,7 +358,7 @@ static int add_files(struct dir_struct *dir, int flags)\n>  \treturn exit_status;\n>  }\n>  \n> -int cmd_add(int argc, const char **argv, const char *prefix)\n> +int cmd_add(int argc, const char **argv, const char *prefix, struct repository *repository UNUSED)\n>  {\n>  \tint exit_status = 0;\n>  \tstruct pathspec pathspec;\n\nNit: all of these are now overly long as we typically wrap at 80\ncharacters.\n\n> diff --git a/git.c b/git.c\n> index 9a618a2740f..0ea6e351dfd 100644\n> --- a/git.c\n> +++ b/git.c\n> @@ -31,7 +31,7 @@\n>  \n>  struct cmd_struct {\n>  \tconst char *cmd;\n> -\tint (*fn)(int, const char **, const char *);\n> +\tint (*fn)(int, const char **, const char *, struct repository *);\n>  \tunsigned int option;\n>  };\n>  \n> @@ -441,7 +441,7 @@ static int handle_alias(int *argcp, const char ***argv)\n>  \treturn ret;\n>  }\n>  \n> -static int run_builtin(struct cmd_struct *p, int argc, const char **argv)\n> +static int run_builtin(struct cmd_struct *p, int argc, const char **argv, struct repository *repo)\n>  {\n>  \tint status, help;\n>  \tstruct stat st;\n> @@ -479,9 +479,11 @@ static int run_builtin(struct cmd_struct *p, int argc, const char **argv)\n>  \ttrace_argv_printf(argv, \"trace: built-in: git\");\n>  \ttrace2_cmd_name(p->cmd);\n>  \n> -\tvalidate_cache_entries(the_repository->index);\n> -\tstatus = p->fn(argc, argv, prefix);\n> -\tvalidate_cache_entries(the_repository->index);\n> +\tvalidate_cache_entries(repo->index);\n> +\n> +\tstatus = p->fn(argc, argv, prefix, startup_info->have_repository? repo: NULL) ;\n> +\n> +\tvalidate_cache_entries(repo->index);\n>  \n>  \tif (status)\n>  \t\treturn status;\n\nLooks sensible.\n\n> @@ -736,7 +738,7 @@ static void handle_builtin(int argc, const char **argv)\n>  \n>  \tbuiltin = get_builtin(cmd);\n>  \tif (builtin)\n> -\t\texit(run_builtin(builtin, argc, argv));\n> +\t\texit(run_builtin(builtin, argc, argv, the_repository));\n>  \tstrvec_clear(&args);\n>  }\n>  \n\nWhy don't we need a check for `startup_info->have_repository` here?\n\n> diff --git a/help.c b/help.c\n> index c03863f2265..e7cdfab6432 100644\n> --- a/help.c\n> +++ b/help.c\n> @@ -16,6 +16,7 @@\n>  #include \"parse-options.h\"\n>  #include \"prompt.h\"\n>  #include \"fsmonitor-ipc.h\"\n> +#include \"repository.h\"\n>  \n>  #ifndef NO_CURL\n>  #include \"git-curl-compat.h\" /* For LIBCURL_VERSION only */\n\nThe include shouldn't be necessary. You can instead add a forward declaration.\n\n> @@ -775,7 +776,7 @@ void get_version_info(struct strbuf *buf, int show_build_options)\n>  \t}\n>  }\n>  \n> -int cmd_version(int argc, const char **argv, const char *prefix)\n> +int cmd_version(int argc, const char **argv, const char *prefix, struct repository *repository UNUSED)\n>  {\n>  \tstruct strbuf buf = STRBUF_INIT;\n>  \tint build_options = 0;\n\nPatrick\n"},{"id":"502319","messageId":"ZtrdmW3R2GvUbOkN@pks.im","threadId":"62067","inReplyTo":"xmqqcyli2dnx.fsf@gitster.g","subject":"Re: [PATCH 2/3] builtin: remove USE_THE_REPOSITORY_VARIABLE from builtin.h","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2024-09-06T10:46:49Z","receivedAt":"2024-09-06T10:46:52Z","isPatch":true,"sender":{"key":"ps@pks.im","avatar":"https://avatars.githubusercontent.com/u/4056630?v=4"},"body":"On Thu, Sep 05, 2024 at 10:50:10AM -0700, Junio C Hamano wrote:\n> \"John Cai via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n> \n> > From: John Cai <johncai86@gmail.com>\n> >\n> > Instead of including USE_THE_REPOSITORY_VARIABLE by default on every\n> > builtin, remove it from builtin.h and add it where necessary to\n> > individual builtins/*. The next step will be to migrate each builtin\n> > from having to use the_repository.\n> >\n> > Signed-off-by: John Cai <johncai86@gmail.com>\n> > ---\n> \n> We at least need the following fix-up in order to play nice with\n> others, specifically Patrick's ps/environ-wo-the-repository, when\n> the topic is merged to 'seen'.\n\nI was wondering whether there were interactions with this topic. Thanks\nfor checking.\n\nPatrick\n"},{"id":"502320","messageId":"ZtrdnFjFeWG7asio@pks.im","threadId":"62067","inReplyTo":"bc9090469340fe2bead812918d149287dcda5609.1725555468.git.gitgitgadget@gmail.com","subject":"Re: [PATCH 3/3] add: pass in repo variable instead of global the_repository","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2024-09-06T10:46:52Z","receivedAt":"2024-09-06T10:46:55Z","isPatch":true,"sender":{"key":"ps@pks.im","avatar":"https://avatars.githubusercontent.com/u/4056630?v=4"},"body":"On Thu, Sep 05, 2024 at 04:57:47PM +0000, John Cai via GitGitGadget wrote:\n> Fr> diff --git a/builtin/add.c b/builtin/add.c\n> index dac832df3e7..a68fd7c8313 100644\n> --- a/builtin/add.c\n> +++ b/builtin/add.c\n\nOne thing I'm missing in this patch is it getting rid of\n`USE_THE_REPOSITORY_VARIABLE`. Without that change it is impossible to\nsee whether we are now free of `the_repository` in this file.\n\n> @@ -36,24 +36,27 @@ static int pathspec_file_nul;\n>  static int include_sparse;\n>  static const char *pathspec_from_file;\n>  \n> -static int chmod_pathspec(struct pathspec *pathspec, char flip, int show_only)\n> +static int chmod_pathspec(struct pathspec *pathspec,\n> +\t\t\t  char flip,\n> +\t\t\t  int show_only,\n> +\t\t\t  struct repository *repo)\n>  {\n\nNit: We typically tend to pass the repository as first argument. Also\napplies to all the other functions.\n\n> diff --git a/commit.h b/commit.h\n> index 0e5fce543c2..92fef717be1 100644\n> --- a/commit.h\n> +++ b/commit.h\n> @@ -2,6 +2,7 @@\n>  #define COMMIT_H\n>  \n>  #include \"object.h\"\n> +#include \"repository.h\"\n>  \n>  struct signature_check;\n>  struct strbuf;\n\nThere is no need for the include here, let's instead add a forward\ndeclaration.\n\nPatrick\n"},{"id":"502336","messageId":"xmqqbk10yegz.fsf@gitster.g","threadId":"62067","inReplyTo":"17acc1e054c26b67659df17db828b106c005ffea.1725555468.git.gitgitgadget@gmail.com","subject":"Re: [PATCH 2/3] builtin: remove USE_THE_REPOSITORY_VARIABLE from builtin.h","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2024-09-06T15:43:56Z","receivedAt":"2024-09-06T15:43:58Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"John Cai via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n\n> From: John Cai <johncai86@gmail.com>\n>\n> Instead of including USE_THE_REPOSITORY_VARIABLE by default on every\n> builtin, remove it from builtin.h and add it where necessary to\n> individual builtins/*. The next step will be to migrate each builtin\n> from having to use the_repository.\n\nI didn't notice this until I compile-tested the merge result to\n'seen', but this omits some files in builtin/*.c hierarchy and add\nthe USE_* variable to the rest.\n\nThat makes the step impossible to review this step.\n\nCan we make this step to mechanically (1) remove definition of the\nUSE_* variable from builtin.h and (2) add it to everything that\nincludes builtin.h and (3) do nothing else?\n\nThen each of the files in builtin/*.c that this iteration omitted\ncan explicitly lose the USE_* variable in its own separate follow-up\npatch (e.g. \"this file did not need to access the_repository either\ndirectly or indirectly\", or \"with these changes, this file now does\nnot depend implicitly on the_repository, so lose USE_* definition at\nthe same time\").\n\nThanks.\n"},{"id":"502476","messageId":"CAOCgCUJWrOeYK1ugVVe3wdj23+KgBWtMD0XH0EZHc2rZgRGVtg@mail.gmail.com","threadId":"62067","inReplyTo":"ZtrdljxBJtnaUEla@pks.im","subject":"Re: [PATCH 1/3] builtin: add a repository parameter for builtin functions","fromName":"John Cai","fromEmail":"johncai86@gmail.com","sentAt":"2024-09-09T21:08:25Z","receivedAt":"2024-09-09T21:08:35Z","isPatch":true,"sender":{"key":"johncai86@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2354211?v=4"},"body":"Hi Patrick,\n\nOn Fri, Sep 6, 2024 at 6:46 AM Patrick Steinhardt <ps@pks.im> wrote:\n>\n> On Thu, Sep 05, 2024 at 04:57:45PM +0000, John Cai via GitGitGadget wrote:\n> > From: John Cai <johncai86@gmail.com>\n> > diff --git a/builtin/add.c b/builtin/add.c\n> > index 40b61ef90d9..3b9bc93ed9a 100644\n> > --- a/builtin/add.c\n> > +++ b/builtin/add.c\n> > @@ -358,7 +358,7 @@ static int add_files(struct dir_struct *dir, int flags)\n> >       return exit_status;\n> >  }\n> >\n> > -int cmd_add(int argc, const char **argv, const char *prefix)\n> > +int cmd_add(int argc, const char **argv, const char *prefix, struct repository *repository UNUSED)\n> >  {\n> >       int exit_status = 0;\n> >       struct pathspec pathspec;\n>\n> Nit: all of these are now overly long as we typically wrap at 80\n> characters.\n>\n> > diff --git a/git.c b/git.c\n> > index 9a618a2740f..0ea6e351dfd 100644\n> > --- a/git.c\n> > +++ b/git.c\n> > @@ -31,7 +31,7 @@\n> >\n> >  struct cmd_struct {\n> >       const char *cmd;\n> > -     int (*fn)(int, const char **, const char *);\n> > +     int (*fn)(int, const char **, const char *, struct repository *);\n> >       unsigned int option;\n> >  };\n> >\n> > @@ -441,7 +441,7 @@ static int handle_alias(int *argcp, const char ***argv)\n> >       return ret;\n> >  }\n> >\n> > -static int run_builtin(struct cmd_struct *p, int argc, const char **argv)\n> > +static int run_builtin(struct cmd_struct *p, int argc, const char **argv, struct repository *repo)\n> >  {\n> >       int status, help;\n> >       struct stat st;\n> > @@ -479,9 +479,11 @@ static int run_builtin(struct cmd_struct *p, int argc, const char **argv)\n> >       trace_argv_printf(argv, \"trace: built-in: git\");\n> >       trace2_cmd_name(p->cmd);\n> >\n> > -     validate_cache_entries(the_repository->index);\n> > -     status = p->fn(argc, argv, prefix);\n> > -     validate_cache_entries(the_repository->index);\n> > +     validate_cache_entries(repo->index);\n> > +\n> > +     status = p->fn(argc, argv, prefix, startup_info->have_repository? repo: NULL) ;\n> > +\n> > +     validate_cache_entries(repo->index);\n> >\n> >       if (status)\n> >               return status;\n>\n> Looks sensible.\n>\n> > @@ -736,7 +738,7 @@ static void handle_builtin(int argc, const char **argv)\n> >\n> >       builtin = get_builtin(cmd);\n> >       if (builtin)\n> > -             exit(run_builtin(builtin, argc, argv));\n> > +             exit(run_builtin(builtin, argc, argv, the_repository));\n> >       strvec_clear(&args);\n> >  }\n> >\n>\n> Why don't we need a check for `startup_info->have_repository` here?\n\nWe do the check inside of run_builtin(), which calls the fn() directly.\nThere's a call to validate_cache_entries(repo->index) in run_builtin(), so\nif we passed in NULL then we would need another guard to prevent a segfault\nin run_builtin().\n\n>\n> > diff --git a/help.c b/help.c\n> > index c03863f2265..e7cdfab6432 100644\n> > --- a/help.c\n> > +++ b/help.c\n> > @@ -16,6 +16,7 @@\n> >  #include \"parse-options.h\"\n> >  #include \"prompt.h\"\n> >  #include \"fsmonitor-ipc.h\"\n> > +#include \"repository.h\"\n> >\n> >  #ifndef NO_CURL\n> >  #include \"git-curl-compat.h\" /* For LIBCURL_VERSION only */\n>\n> The include shouldn't be necessary. You can instead add a forward declaration.\n\nindeed, I'll remove this in the next version.\n\n>\n> > @@ -775,7 +776,7 @@ void get_version_info(struct strbuf *buf, int show_build_options)\n> >       }\n> >  }\n> >\n> > -int cmd_version(int argc, const char **argv, const char *prefix)\n> > +int cmd_version(int argc, const char **argv, const char *prefix, struct repository *repository UNUSED)\n> >  {\n> >       struct strbuf buf = STRBUF_INIT;\n> >       int build_options = 0;\n>\n> Patrick\n"},{"id":"502594","messageId":"pull.1778.v2.git.git.1726001960.gitgitgadget@gmail.com","threadId":"62067","inReplyTo":"pull.1778.git.git.1725555467.gitgitgadget@gmail.com","subject":"[PATCH v2 0/3] Add repository parameter to builtins","fromName":"John Cai via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2024-09-10T20:59:17Z","receivedAt":"2024-09-10T20:59:29Z","isPatch":true,"sender":{"key":"johncai86@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2354211?v=4"},"body":"As part of the effort to remove global state of the_repository, add a\nrepository parameter to builtins so that a repository variable can be passed\ndown. The patches are ordered as follows:\n\n 1. Changes the signature of builtins and passes the_repository down in\n    git.c to be called by all builtins.\n 2. Remove USE_THE_REPOSITORY_VARIABLE from builtin.h, and instead add it to\n    each individual builtin. This paves the way for a migration process\n    whereby each builtin can be migrated away from using the_repository.\n 3. As an example, migrate builtin/add.c to get rid of the_repository by\n    instead passing the repository argument down into helper functions.\n\nChanges since V1:\n\n * Removed USE_THE_REPOSITORY_VARIABLE from add.c\n * removed changes that conflict with existing topics in seen\n * Fixed overly long lines formatting issues\n\nJohn Cai (3):\n  builtin: add a repository parameter for builtin functions\n  builtin: remove USE_THE_REPOSITORY_VARIABLE from builtin.h\n  add: pass in repo variable instead of global the_repository\n\n builtin.h                          | 285 ++++++++++++++---------------\n builtin/add.c                      | 119 ++++++------\n builtin/am.c                       |   7 +-\n builtin/annotate.c                 |   9 +-\n builtin/apply.c                    |   7 +-\n builtin/archive.c                  |   7 +-\n builtin/bisect.c                   |   6 +-\n builtin/blame.c                    |   8 +-\n builtin/branch.c                   |   7 +-\n builtin/bugreport.c                |   6 +-\n builtin/bundle.c                   |   7 +-\n builtin/cat-file.c                 |   9 +-\n builtin/check-attr.c               |   7 +-\n builtin/check-ignore.c             |   7 +-\n builtin/check-mailmap.c            |   6 +-\n builtin/check-ref-format.c         |   5 +-\n builtin/checkout--worker.c         |   6 +-\n builtin/checkout-index.c           |   8 +-\n builtin/checkout.c                 |  16 +-\n builtin/clean.c                    |   8 +-\n builtin/clone.c                    |   8 +-\n builtin/column.c                   |   6 +-\n builtin/commit-graph.c             |   7 +-\n builtin/commit-tree.c              |   8 +-\n builtin/commit.c                   |  14 +-\n builtin/config.c                   |   7 +-\n builtin/count-objects.c            |   8 +-\n builtin/credential-cache--daemon.c |  11 +-\n builtin/credential-cache.c         |   5 +-\n builtin/credential-store.c         |   6 +-\n builtin/credential.c               |   7 +-\n builtin/describe.c                 |   8 +-\n builtin/diagnose.c                 |   5 +-\n builtin/diff-files.c               |   7 +-\n builtin/diff-index.c               |   7 +-\n builtin/diff-tree.c                |   7 +-\n builtin/diff.c                     |   7 +-\n builtin/difftool.c                 |   8 +-\n builtin/fast-export.c              |   6 +-\n builtin/fast-import.c              |   7 +-\n builtin/fetch-pack.c               |   6 +-\n builtin/fetch.c                    |   7 +-\n builtin/fmt-merge-msg.c            |   6 +-\n builtin/for-each-ref.c             |   6 +-\n builtin/for-each-repo.c            |   7 +-\n builtin/fsck.c                     |   7 +-\n builtin/fsmonitor--daemon.c        |  10 +-\n builtin/gc.c                       |  13 +-\n builtin/get-tar-commit-id.c        |   5 +-\n builtin/grep.c                     |   7 +-\n builtin/hash-object.c              |   6 +-\n builtin/help.c                     |   7 +-\n builtin/hook.c                     |   6 +-\n builtin/index-pack.c               |   6 +-\n builtin/init-db.c                  |   7 +-\n builtin/interpret-trailers.c       |   7 +-\n builtin/log.c                      |  33 +++-\n builtin/ls-files.c                 |   7 +-\n builtin/ls-remote.c                |   6 +-\n builtin/ls-tree.c                  |   7 +-\n builtin/mailinfo.c                 |   6 +-\n builtin/mailsplit.c                |   5 +-\n builtin/merge-base.c               |   7 +-\n builtin/merge-file.c               |   6 +-\n builtin/merge-index.c              |   7 +-\n builtin/merge-ours.c               |   8 +-\n builtin/merge-recursive.c          |   7 +-\n builtin/merge-tree.c               |   7 +-\n builtin/merge.c                    |  12 +-\n builtin/mktag.c                    |   6 +-\n builtin/mktree.c                   |   7 +-\n builtin/multi-pack-index.c         |   7 +-\n builtin/mv.c                       |   8 +-\n builtin/name-rev.c                 |   7 +-\n builtin/notes.c                    |   9 +-\n builtin/pack-objects.c             |   7 +-\n builtin/pack-redundant.c           |  10 +-\n builtin/pack-refs.c                |   7 +-\n builtin/patch-id.c                 |   6 +-\n builtin/prune-packed.c             |   5 +-\n builtin/prune.c                    |   6 +-\n builtin/pull.c                     |   6 +-\n builtin/push.c                     |   7 +-\n builtin/range-diff.c               |   8 +-\n builtin/read-tree.c                |   8 +-\n builtin/rebase.c                   |   8 +-\n builtin/receive-pack.c             |   8 +-\n builtin/reflog.c                   |  11 +-\n builtin/refs.c                     |   7 +-\n builtin/remote-ext.c               |   5 +-\n builtin/remote-fd.c                |   5 +-\n builtin/remote.c                   |   6 +-\n builtin/repack.c                   |   6 +-\n builtin/replace.c                  |   8 +-\n builtin/replay.c                   |   6 +-\n builtin/rerere.c                   |   8 +-\n builtin/reset.c                    |   7 +-\n builtin/rev-list.c                 |   6 +-\n builtin/rev-parse.c                |   8 +-\n builtin/revert.c                   |  12 +-\n builtin/rm.c                       |   9 +-\n builtin/send-pack.c                |   6 +-\n builtin/shortlog.c                 |   7 +-\n builtin/show-branch.c              |   8 +-\n builtin/show-index.c               |   7 +-\n builtin/show-ref.c                 |   6 +-\n builtin/sparse-checkout.c          |   7 +-\n builtin/stash.c                    |   6 +-\n builtin/stripspace.c               |   6 +-\n builtin/submodule--helper.c        |   8 +-\n builtin/symbolic-ref.c             |   6 +-\n builtin/tag.c                      |   7 +-\n builtin/unpack-file.c              |   6 +-\n builtin/unpack-objects.c           |   6 +-\n builtin/update-index.c             |   8 +-\n builtin/update-ref.c               |   7 +-\n builtin/update-server-info.c       |   6 +-\n builtin/upload-archive.c           |  12 +-\n builtin/upload-pack.c              |   5 +-\n builtin/var.c                      |   7 +-\n builtin/verify-commit.c            |   7 +-\n builtin/verify-pack.c              |   6 +-\n builtin/verify-tag.c               |   6 +-\n builtin/worktree.c                 |   7 +-\n builtin/write-tree.c               |   8 +-\n commit.h                           |   5 +-\n git.c                              |  12 +-\n help.c                             |   3 +-\n stkOs5Qh                           | Bin 0 -> 10485768 bytes\n 129 files changed, 903 insertions(+), 436 deletions(-)\n create mode 100644 stkOs5Qh\n\n\nbase-commit: 4590f2e9412378c61eac95966709c78766d326ba\nPublished-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1778%2Fjohn-cai%2Fjc%2Fadd-the-repository-to-builtin-signature-v2\nFetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1778/john-cai/jc/add-the-repository-to-builtin-signature-v2\nPull-Request: https://github.com/git/git/pull/1778\n\nRange-diff vs v1:\n\n 1:  3301a34f763 ! 1:  9aaf9662544 builtin: add a repository parameter for builtin functions\n     @@ builtin.h: int is_builtin(const char *s);\n       #endif\n      \n       ## builtin/add.c ##\n     +@@ builtin/add.c: int interactive_add(const char **argv, const char *prefix, int patch)\n     + \treturn ret;\n     + }\n     + \n     +-static int edit_patch(int argc, const char **argv, const char *prefix)\n     ++static int edit_patch(int argc,\n     ++\t\t      const char **argv,\n     ++\t\t      const char *prefix,\n     ++\t\t      struct repository *repo UNUSED)\n     + {\n     + \tchar *file = git_pathdup(\"ADD_EDIT.patch\");\n     + \tstruct child_process child = CHILD_PROCESS_INIT;\n      @@ builtin/add.c: static int add_files(struct dir_struct *dir, int flags)\n       \treturn exit_status;\n       }\n       \n      -int cmd_add(int argc, const char **argv, const char *prefix)\n     -+int cmd_add(int argc, const char **argv, const char *prefix, struct repository *repository UNUSED)\n     ++int cmd_add(int argc,\n     ++\t    const char **argv,\n     ++\t    const char *prefix,\n     ++\t    struct repository *repo UNUSED)\n       {\n       \tint exit_status = 0;\n       \tstruct pathspec pathspec;\n     +@@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix)\n     + \tif (edit_interactive) {\n     + \t\tif (pathspec_from_file)\n     + \t\t\tdie(_(\"options '%s' and '%s' cannot be used together\"), \"--pathspec-from-file\", \"--edit\");\n     +-\t\treturn(edit_patch(argc, argv, prefix));\n     ++\t\treturn(edit_patch(argc, argv, prefix, the_repository));\n     + \t}\n     + \targc--;\n     + \targv++;\n      \n       ## builtin/am.c ##\n      @@ builtin/am.c: static int parse_opt_show_current_patch(const struct option *opt, const char *ar\n     @@ builtin/am.c: static int parse_opt_show_current_patch(const struct option *opt,\n       }\n       \n      -int cmd_am(int argc, const char **argv, const char *prefix)\n     -+int cmd_am(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_am(int argc,\n     ++\t   const char **argv,\n     ++\t   const char *prefix,\n     ++\t   struct repository *repo UNUSED)\n       {\n       \tstruct am_state state;\n       \tint binary = -1;\n     @@ builtin/annotate.c\n       #include \"strvec.h\"\n       \n      -int cmd_annotate(int argc, const char **argv, const char *prefix)\n     -+int cmd_annotate(int argc, const char **argv, const char *prefix, struct repository *repo)\n     ++int cmd_annotate(int argc,\n     ++\t\t const char **argv,\n     ++\t\t const char *prefix,\n     ++\t\t struct repository *repo UNUSED)\n       {\n       \tstruct strvec args = STRVEC_INIT;\n       \tint i;\n     @@ builtin/annotate.c: int cmd_annotate(int argc, const char **argv, const char *pr\n       \t}\n       \n      -\treturn cmd_blame(args.nr, args.v, prefix);\n     -+\treturn cmd_blame(args.nr, args.v, prefix, repo);\n     ++\treturn cmd_blame(args.nr, args.v, prefix, the_repository);\n       }\n      \n       ## builtin/apply.c ##\n     @@ builtin/apply.c: static const char * const apply_usage[] = {\n       };\n       \n      -int cmd_apply(int argc, const char **argv, const char *prefix)\n     -+int cmd_apply(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_apply(int argc,\n     ++\t      const char **argv,\n     ++\t      const char *prefix,\n     ++\t      struct repository *repo UNUSED)\n       {\n       \tint force_apply = 0;\n       \tint options = 0;\n     @@ builtin/archive.c: static int run_remote_archiver(int argc, const char **argv,\n       \t\t\t     PARSE_OPT_NO_INTERNAL_HELP\t)\n       \n      -int cmd_archive(int argc, const char **argv, const char *prefix)\n     -+int cmd_archive(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_archive(int argc,\n     ++\t\tconst char **argv,\n     ++\t\tconst char *prefix,\n     ++\t\tstruct repository *repo UNUSED)\n       {\n       \tconst char *exec = \"git-upload-archive\";\n       \tchar *output = NULL;\n     @@ builtin/bisect.c: static int cmd_bisect__run(int argc, const char **argv, const\n       }\n       \n      -int cmd_bisect(int argc, const char **argv, const char *prefix)\n     -+int cmd_bisect(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_bisect(int argc,\n     ++\t       const char **argv,\n     ++\t       const char *prefix,\n     ++\t       struct repository *repo UNUSED)\n       {\n       \tint res = 0;\n       \tparse_opt_subcommand_fn *fn = NULL;\n     @@ builtin/blame.c: static void build_ignorelist(struct blame_scoreboard *sb,\n       }\n       \n      -int cmd_blame(int argc, const char **argv, const char *prefix)\n     -+int cmd_blame(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_blame(int argc,\n     ++\t      const char **argv,\n     ++\t      const char *prefix,\n     ++\t      struct repository *repo UNUSED)\n       {\n       \tstruct rev_info revs;\n       \tchar *path = NULL;\n     @@ builtin/branch.c: static int edit_branch_description(const char *branch_name)\n       }\n       \n      -int cmd_branch(int argc, const char **argv, const char *prefix)\n     -+int cmd_branch(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_branch(int argc,\n     ++\t       const char **argv,\n     ++\t       const char *prefix,\n     ++\t       struct repository *repo UNUSED)\n       {\n       \t/* possible actions */\n       \tint delete = 0, rename = 0, copy = 0, list = 0,\n     @@ builtin/bugreport.c: static void get_header(struct strbuf *buf, const char *titl\n       }\n       \n      -int cmd_bugreport(int argc, const char **argv, const char *prefix)\n     -+int cmd_bugreport(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_bugreport(int argc,\n     ++\t\t  const char **argv,\n     ++\t\t  const char *prefix,\n     ++\t\t  struct repository *repo UNUSED)\n       {\n       \tstruct strbuf buffer = STRBUF_INIT;\n       \tstruct strbuf report_path = STRBUF_INIT;\n     @@ builtin/bundle.c: cleanup:\n       }\n       \n      -int cmd_bundle(int argc, const char **argv, const char *prefix)\n     -+int cmd_bundle(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_bundle(int argc,\n     ++\t       const char **argv,\n     ++\t       const char *prefix,\n     ++\t       struct repository *repo UNUSED)\n       {\n       \tparse_opt_subcommand_fn *fn = NULL;\n       \tstruct option options[] = {\n     @@ builtin/cat-file.c: static int batch_option_callback(const struct option *opt,\n       }\n       \n      -int cmd_cat_file(int argc, const char **argv, const char *prefix)\n     -+int cmd_cat_file(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_cat_file(int argc,\n     ++\t\t const char **argv,\n     ++\t\t const char *prefix,\n     ++\t\t struct repository *repo UNUSED)\n       {\n       \tint opt = 0;\n       \tint opt_cw = 0;\n     @@ builtin/check-attr.c: static NORETURN void error_with_usage(const char *msg)\n       }\n       \n      -int cmd_check_attr(int argc, const char **argv, const char *prefix)\n     -+int cmd_check_attr(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_check_attr(int argc,\n     ++\t\t   const char **argv,\n     ++\t\t   const char *prefix,\n     ++\t\t   struct repository *repo UNUSED)\n       {\n       \tstruct attr_check *check;\n       \tstruct object_id initialized_oid;\n     @@ builtin/check-ignore.c: static int check_ignore_stdin_paths(struct dir_struct *d\n       }\n       \n      -int cmd_check_ignore(int argc, const char **argv, const char *prefix)\n     -+int cmd_check_ignore(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_check_ignore(int argc,\n     ++\t\t     const char **argv,\n     ++\t\t     const char *prefix,\n     ++\t\t     struct repository *repo UNUSED)\n       {\n       \tint num_ignored;\n       \tstruct dir_struct dir = DIR_INIT;\n     @@ builtin/check-mailmap.c: static void check_mailmap(struct string_list *mailmap,\n       }\n       \n      -int cmd_check_mailmap(int argc, const char **argv, const char *prefix)\n     -+int cmd_check_mailmap(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_check_mailmap(int argc,\n     ++\t\t      const char **argv,\n     ++\t\t      const char *prefix,\n     ++\t\t      struct repository *repo UNUSED)\n       {\n       \tint i;\n       \tstruct string_list mailmap = STRING_LIST_INIT_NODUP;\n     @@ builtin/check-ref-format.c: static int check_ref_format_branch(const char *arg)\n       }\n       \n      -int cmd_check_ref_format(int argc, const char **argv, const char *prefix)\n     -+int cmd_check_ref_format(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_check_ref_format(int argc,\n     ++\t\t\t const char **argv,\n     ++\t\t\t const char *prefix,\n     ++\t\t\t struct repository *repo UNUSED)\n       {\n       \tint i;\n       \tint normalize = 0;\n     @@ builtin/checkout--worker.c: static const char * const checkout_worker_usage[] =\n       };\n       \n      -int cmd_checkout__worker(int argc, const char **argv, const char *prefix)\n     -+int cmd_checkout__worker(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_checkout__worker(int argc,\n     ++\t\t\t const char **argv,\n     ++\t\t\t const char *prefix,\n     ++\t\t\t struct repository *repo UNUSED)\n       {\n       \tstruct checkout state = CHECKOUT_INIT;\n       \tstruct option checkout_worker_options[] = {\n     @@ builtin/checkout-index.c: static int option_parse_stage(const struct option *opt\n       }\n       \n      -int cmd_checkout_index(int argc, const char **argv, const char *prefix)\n     -+int cmd_checkout_index(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_checkout_index(int argc,\n     ++\t\t       const char **argv,\n     ++\t\t       const char *prefix,\n     ++\t\t       struct repository *repo UNUSED)\n       {\n       \tint i;\n       \tstruct lock_file lock_file = LOCK_INIT;\n     @@ builtin/checkout.c: static int checkout_main(int argc, const char **argv, const\n       }\n       \n      -int cmd_checkout(int argc, const char **argv, const char *prefix)\n     -+int cmd_checkout(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_checkout(int argc,\n     ++\t\t const char **argv,\n     ++\t\t const char *prefix,\n     ++\t\t struct repository *repo UNUSED)\n       {\n       \tstruct checkout_opts opts = CHECKOUT_OPTS_INIT;\n       \tstruct option *options;\n     @@ builtin/checkout.c: int cmd_checkout(int argc, const char **argv, const char *pr\n       }\n       \n      -int cmd_switch(int argc, const char **argv, const char *prefix)\n     -+int cmd_switch(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_switch(int argc,\n     ++\t       const char **argv,\n     ++\t       const char *prefix,\n     ++\t       struct repository *repo UNUSED)\n       {\n       \tstruct checkout_opts opts = CHECKOUT_OPTS_INIT;\n       \tstruct option *options = NULL;\n     @@ builtin/checkout.c: int cmd_switch(int argc, const char **argv, const char *pref\n       }\n       \n      -int cmd_restore(int argc, const char **argv, const char *prefix)\n     -+int cmd_restore(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_restore(int argc,\n     ++\t\tconst char **argv,\n     ++\t\tconst char *prefix,\n     ++\t\tstruct repository *repo UNUSED)\n       {\n       \tstruct checkout_opts opts = CHECKOUT_OPTS_INIT;\n       \tstruct option *options;\n     @@ builtin/clean.c: static void correct_untracked_entries(struct dir_struct *dir)\n       }\n       \n      -int cmd_clean(int argc, const char **argv, const char *prefix)\n     -+int cmd_clean(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_clean(int argc,\n     ++\t      const char **argv,\n     ++\t      const char *prefix,\n     ++\t      struct repository *repo UNUSED)\n       {\n       \tint i, res;\n       \tint dry_run = 0, remove_directories = 0, quiet = 0, ignored = 0;\n     @@ builtin/clone.c: static int path_exists(const char *path)\n       }\n       \n      -int cmd_clone(int argc, const char **argv, const char *prefix)\n     -+int cmd_clone(int argc, const char **argv, const char *prefix, struct repository *repository UNUSED)\n     ++int cmd_clone(int argc,\n     ++\t      const char **argv,\n     ++\t      const char *prefix,\n     ++\t      struct repository *repository UNUSED)\n       {\n       \tint is_bundle = 0, is_local;\n       \tint reject_shallow = 0;\n     @@ builtin/column.c: static int column_config(const char *var, const char *value,\n       }\n       \n      -int cmd_column(int argc, const char **argv, const char *prefix)\n     -+int cmd_column(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_column(int argc,\n     ++\t       const char **argv,\n     ++\t       const char *prefix,\n     ++\t       struct repository *repo UNUSED)\n       {\n       \tstruct string_list list = STRING_LIST_INIT_DUP;\n       \tstruct strbuf sb = STRBUF_INIT;\n     @@ builtin/commit-graph.c: cleanup:\n       }\n       \n      -int cmd_commit_graph(int argc, const char **argv, const char *prefix)\n     -+int cmd_commit_graph(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_commit_graph(int argc,\n     ++\t\t     const char **argv,\n     ++\t\t     const char *prefix,\n     ++\t\t     struct repository *repo UNUSED)\n       {\n       \tparse_opt_subcommand_fn *fn = NULL;\n       \tstruct option builtin_commit_graph_options[] = {\n     @@ builtin/commit-tree.c: static int parse_file_arg_callback(const struct option *o\n       }\n       \n      -int cmd_commit_tree(int argc, const char **argv, const char *prefix)\n     -+int cmd_commit_tree(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_commit_tree(int argc,\n     ++\t\t    const char **argv,\n     ++\t\t    const char *prefix,\n     ++\t\t    struct repository *repo UNUSED)\n       {\n       \tstatic struct strbuf buffer = STRBUF_INIT;\n       \tstruct commit_list *parents = NULL;\n     @@ builtin/commit.c: static int git_status_config(const char *k, const char *v,\n       }\n       \n      -int cmd_status(int argc, const char **argv, const char *prefix)\n     -+int cmd_status(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_status(int argc,\n     ++const char **argv,\n     ++const char *prefix,\n     ++struct repository *repo UNUSED)\n       {\n       \tstatic int no_renames = -1;\n       \tstatic const char *rename_score_arg = (const char *)-1;\n     @@ builtin/commit.c: static int git_commit_config(const char *k, const char *v,\n       }\n       \n      -int cmd_commit(int argc, const char **argv, const char *prefix)\n     -+int cmd_commit(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_commit(int argc,\n     ++\t       const char **argv,\n     ++\t       const char *prefix,\n     ++\t       struct repository *repo UNUSED)\n       {\n       \tstatic struct wt_status s;\n       \tstatic struct option builtin_commit_options[] = {\n     @@ builtin/config.c: out:\n       }\n       \n      -int cmd_config(int argc, const char **argv, const char *prefix)\n     -+int cmd_config(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_config(int argc,\n     ++\t       const char **argv,\n     ++\t       const char *prefix,\n     ++\t       struct repository *repo UNUSED)\n       {\n       \tparse_opt_subcommand_fn *subcommand = NULL;\n       \tstruct option subcommand_opts[] = {\n     @@ builtin/count-objects.c: static char const * const count_objects_usage[] = {\n       };\n       \n      -int cmd_count_objects(int argc, const char **argv, const char *prefix)\n     -+int cmd_count_objects(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_count_objects(int argc,\n     ++\t\t      const char **argv,\n     ++\t\t      const char *prefix,\n     ++\t\t      struct repository *repo UNUSED)\n       {\n       \tint human_readable = 0;\n       \tstruct option opts[] = {\n     @@ builtin/credential-cache--daemon.c: static void init_socket_directory(const char\n       }\n       \n      -int cmd_credential_cache_daemon(int argc, const char **argv, const char *prefix)\n     -+int cmd_credential_cache_daemon(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_credential_cache_daemon(int argc,\n     ++\t\t\t\tconst char **argv,\n     ++\t\t\t\tconst char *prefix,\n     ++\t\t\t\tstruct repository *repo UNUSED)\n       {\n       \tstruct tempfile *socket_file;\n       \tconst char *socket_path;\n     @@ builtin/credential-cache--daemon.c: int cmd_credential_cache_daemon(int argc, co\n       #else\n       \n      -int cmd_credential_cache_daemon(int argc, const char **argv, const char *prefix)\n     -+int cmd_credential_cache_daemon(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_credential_cache_daemon(int argc,\n     ++const char **argv,\n     ++const char *prefix,\n     ++struct repository *repo UNUSED)\n       {\n       \tconst char * const usage[] = {\n       \t\t\"git credential-cache--daemon [--debug] <socket-path>\",\n     @@ builtin/credential-cache.c: static void announce_capabilities(void)\n       }\n       \n      -int cmd_credential_cache(int argc, const char **argv, const char *prefix)\n     -+int cmd_credential_cache(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_credential_cache(int argc,\n     ++\t\t\t const char **argv,\n     ++\t\t\t const char *prefix,\n     ++\t\t\t struct repository *repo UNUSED)\n       {\n       \tconst char *socket_path_arg = NULL;\n       \tchar *socket_path;\n     @@ builtin/credential-store.c: static void lookup_credential(const struct string_li\n       }\n       \n      -int cmd_credential_store(int argc, const char **argv, const char *prefix)\n     -+int cmd_credential_store(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_credential_store(int argc,\n     ++\t\t\t const char **argv,\n     ++\t\t\t const char *prefix,\n     ++\t\t\t struct repository *repo UNUSED)\n       {\n       \tconst char * const usage[] = {\n       \t\t\"git credential-store [<options>] <action>\",\n     @@ builtin/credential.c\n       \t\"git credential (fill|approve|reject)\";\n       \n      -int cmd_credential(int argc, const char **argv, const char *prefix UNUSED)\n     -+int cmd_credential(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)\n     ++int cmd_credential(int argc,\n     ++\t\t   const char **argv,\n     ++\t\t   const char *prefix UNUSED,\n     ++\t\t   struct repository *repo UNUSED)\n       {\n       \tconst char *op;\n       \tstruct credential c = CREDENTIAL_INIT;\n     @@ builtin/describe.c: static int option_parse_exact_match(const struct option *opt\n       }\n       \n      -int cmd_describe(int argc, const char **argv, const char *prefix)\n     -+int cmd_describe(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED )\n     ++int cmd_describe(int argc,\n     ++\t\t const char **argv,\n     ++\t\t const char *prefix,\n     ++\t\t struct repository *repo UNUSED )\n       {\n       \tint contains = 0;\n       \tstruct option options[] = {\n     @@ builtin/diagnose.c: static const char * const diagnose_usage[] = {\n       };\n       \n      -int cmd_diagnose(int argc, const char **argv, const char *prefix)\n     -+int cmd_diagnose(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_diagnose(int argc,\n     ++\t\t const char **argv,\n     ++\t\t const char *prefix,\n     ++\t\t struct repository *repo UNUSED)\n       {\n       \tstruct strbuf zip_path = STRBUF_INIT;\n       \ttime_t now = time(NULL);\n     @@ builtin/diff-files.c: static const char diff_files_usage[] =\n       COMMON_DIFF_OPTIONS_HELP;\n       \n      -int cmd_diff_files(int argc, const char **argv, const char *prefix)\n     -+int cmd_diff_files(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_diff_files(int argc,\n     ++\t\t   const char **argv,\n     ++\t\t   const char *prefix,\n     ++\t\t   struct repository *repo UNUSED)\n       {\n       \tstruct rev_info rev;\n       \tint result;\n     @@ builtin/diff-index.c: static const char diff_cache_usage[] =\n       COMMON_DIFF_OPTIONS_HELP;\n       \n      -int cmd_diff_index(int argc, const char **argv, const char *prefix)\n     -+int cmd_diff_index(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_diff_index(int argc,\n     ++\t\t   const char **argv,\n     ++\t\t   const char *prefix,\n     ++\t\t   struct repository *repo UNUSED)\n       {\n       \tstruct rev_info rev;\n       \tunsigned int option = 0;\n     @@ builtin/diff-tree.c: static void diff_tree_tweak_rev(struct rev_info *rev)\n       }\n       \n      -int cmd_diff_tree(int argc, const char **argv, const char *prefix)\n     -+int cmd_diff_tree(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_diff_tree(int argc,\n     ++\t\t  const char **argv,\n     ++\t\t  const char *prefix,\n     ++\t\t  struct repository *repo UNUSED)\n       {\n       \tchar line[1000];\n       \tstruct object *tree1, *tree2;\n     @@ builtin/diff.c: static void symdiff_release(struct symdiff *sdiff)\n       }\n       \n      -int cmd_diff(int argc, const char **argv, const char *prefix)\n     -+int cmd_diff(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_diff(int argc,\n     ++\t     const char **argv,\n     ++\t     const char *prefix,\n     ++\t     struct repository *repo UNUSED)\n       {\n       \tint i;\n       \tstruct rev_info rev;\n     @@ builtin/difftool.c: static int run_file_diff(int prompt, const char *prefix,\n       }\n       \n      -int cmd_difftool(int argc, const char **argv, const char *prefix)\n     -+int cmd_difftool(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_difftool(int argc,\n     ++\t\t const char **argv,\n     ++\t\t const char *prefix,\n     ++\t\t struct repository *repo UNUSED)\n       {\n       \tint use_gui_tool = -1, dir_diff = 0, prompt = -1, symlinks = 0,\n       \t    tool_help = 0, no_index = 0;\n     @@ builtin/fast-export.c: static int parse_opt_anonymize_map(const struct option *o\n       }\n       \n      -int cmd_fast_export(int argc, const char **argv, const char *prefix)\n     -+int cmd_fast_export(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_fast_export(int argc,\n     ++\t\t    const char **argv,\n     ++\t\t    const char *prefix,\n     ++\t\t    struct repository *repo UNUSED)\n       {\n       \tstruct rev_info revs;\n       \tstruct commit *commit;\n     @@ builtin/fast-import.c: static void parse_argv(void)\n       }\n       \n      -int cmd_fast_import(int argc, const char **argv, const char *prefix)\n     -+int cmd_fast_import(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_fast_import(int argc,\n     ++\t\t    const char **argv,\n     ++\t\t    const char *prefix,\n     ++\t\t    struct repository *repo UNUSED)\n       {\n       \tunsigned int i;\n       \n     @@ builtin/fetch-pack.c: static void add_sought_entry(struct ref ***sought, int *nr\n       }\n       \n      -int cmd_fetch_pack(int argc, const char **argv, const char *prefix UNUSED)\n     -+int cmd_fetch_pack(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)\n     ++int cmd_fetch_pack(int argc,\n     ++\t\t   const char **argv,\n     ++\t\t   const char *prefix UNUSED,\n     ++\t\t   struct repository *repo UNUSED)\n       {\n       \tint i, ret;\n       \tstruct ref *ref = NULL;\n     @@ builtin/fetch.c: static int fetch_one(struct remote *remote, int argc, const cha\n       }\n       \n      -int cmd_fetch(int argc, const char **argv, const char *prefix)\n     -+int cmd_fetch(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_fetch(int argc,\n     ++\t      const char **argv,\n     ++\t      const char *prefix,\n     ++\t      struct repository *repo UNUSED)\n       {\n       \tstruct fetch_config config = {\n       \t\t.display_format = DISPLAY_FORMAT_FULL,\n     @@ builtin/fmt-merge-msg.c: static const char * const fmt_merge_msg_usage[] = {\n       };\n       \n      -int cmd_fmt_merge_msg(int argc, const char **argv, const char *prefix)\n     -+int cmd_fmt_merge_msg(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_fmt_merge_msg(int argc,\n     ++\t\t      const char **argv,\n     ++\t\t      const char *prefix,\n     ++\t\t      struct repository *repo UNUSED)\n       {\n       \tchar *inpath = NULL;\n       \tconst char *message = NULL;\n     @@ builtin/for-each-ref.c: static char const * const for_each_ref_usage[] = {\n       };\n       \n      -int cmd_for_each_ref(int argc, const char **argv, const char *prefix)\n     -+int cmd_for_each_ref(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_for_each_ref(int argc,\n     ++\t\t     const char **argv,\n     ++\t\t     const char *prefix,\n     ++\t\t     struct repository *repo UNUSED)\n       {\n       \tstruct ref_sorting *sorting;\n       \tstruct string_list sorting_options = STRING_LIST_INIT_DUP;\n     @@ builtin/for-each-repo.c: static int run_command_on_repo(const char *path, int ar\n       }\n       \n      -int cmd_for_each_repo(int argc, const char **argv, const char *prefix)\n     -+int cmd_for_each_repo(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_for_each_repo(int argc,\n     ++\t\t      const char **argv,\n     ++\t\t      const char *prefix,\n     ++\t\t      struct repository *repo UNUSED)\n       {\n       \tstatic const char *config_key = NULL;\n       \tint keep_going = 0;\n     @@ builtin/fsck.c: static struct option fsck_opts[] = {\n       };\n       \n      -int cmd_fsck(int argc, const char **argv, const char *prefix)\n     -+int cmd_fsck(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_fsck(int argc,\n     ++\t     const char **argv,\n     ++\t     const char *prefix,\n     ++\t     struct repository *repo UNUSED)\n       {\n       \tint i;\n       \tstruct object_directory *odb;\n     @@ builtin/fsmonitor--daemon.c: static int try_to_start_background_daemon(void)\n       }\n       \n      -int cmd_fsmonitor__daemon(int argc, const char **argv, const char *prefix)\n     -+int cmd_fsmonitor__daemon(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_fsmonitor__daemon(int argc,\n     ++\t\t\t  const char **argv,\n     ++\t\t\t  const char *prefix,\n     ++\t\t\t  struct repository *repo UNUSED)\n       {\n       \tconst char *subcmd;\n       \tenum fsmonitor_reason reason;\n     @@ builtin/gc.c: static void gc_before_repack(struct maintenance_run_opts *opts,\n       }\n       \n      -int cmd_gc(int argc, const char **argv, const char *prefix)\n     -+int cmd_gc(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_gc(int argc,\n     ++const char **argv,\n     ++const char *prefix,\n     ++struct repository *repo UNUSED)\n       {\n       \tint aggressive = 0;\n       \tint quiet = 0;\n     @@ builtin/gc.c: static const char * const builtin_maintenance_usage[] = {\n       };\n       \n      -int cmd_maintenance(int argc, const char **argv, const char *prefix)\n     -+int cmd_maintenance(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_maintenance(int argc,\n     ++\t\t    const char **argv,\n     ++\t\t    const char *prefix,\n     ++\t\t    struct repository *repo UNUSED)\n       {\n       \tparse_opt_subcommand_fn *fn = NULL;\n       \tstruct option builtin_maintenance_options[] = {\n     @@ builtin/get-tar-commit-id.c: static const char builtin_get_tar_commit_id_usage[]\n       #define HEADERSIZE (2 * RECORDSIZE)\n       \n      -int cmd_get_tar_commit_id(int argc, const char **argv UNUSED, const char *prefix)\n     -+int cmd_get_tar_commit_id(int argc, const char **argv UNUSED, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_get_tar_commit_id(int argc,\n     ++\t\t\t  const char **argv UNUSED,\n     ++\t\t\t  const char *prefix,\n     ++\t\t\t  struct repository *repo UNUSED)\n       {\n       \tchar buffer[HEADERSIZE];\n       \tstruct ustar_header *header = (struct ustar_header *)buffer;\n     @@ builtin/grep.c: static int pattern_callback(const struct option *opt, const char\n       }\n       \n      -int cmd_grep(int argc, const char **argv, const char *prefix)\n     -+int cmd_grep(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_grep(int argc,\n     ++\t     const char **argv,\n     ++\t     const char *prefix,\n     ++\t     struct repository *repo UNUSED)\n       {\n       \tint hit = 0;\n       \tint cached = 0, untracked = 0, opt_exclude = -1;\n     @@ builtin/hash-object.c: static void hash_stdin_paths(const char *type, int no_fil\n       }\n       \n      -int cmd_hash_object(int argc, const char **argv, const char *prefix)\n     -+int cmd_hash_object(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_hash_object(int argc,\n     ++\t\t    const char **argv,\n     ++\t\t    const char *prefix,\n     ++\t\t    struct repository *repo UNUSED)\n       {\n       \tstatic const char * const hash_object_usage[] = {\n       \t\tN_(\"git hash-object [-t <type>] [-w] [--path=<file> | --no-filters]\\n\"\n     @@ builtin/help.c: static void opt_mode_usage(int argc, const char *opt_mode,\n       }\n       \n      -int cmd_help(int argc, const char **argv, const char *prefix)\n     -+int cmd_help(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_help(int argc,\n     ++\t     const char **argv,\n     ++\t     const char *prefix,\n     ++\t     struct repository *repo UNUSED)\n       {\n       \tint nongit;\n       \tenum help_format parsed_help_format;\n     @@ builtin/hook.c: usage:\n       }\n       \n      -int cmd_hook(int argc, const char **argv, const char *prefix)\n     -+int cmd_hook(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_hook(int argc,\n     ++\t     const char **argv,\n     ++\t     const char *prefix,\n     ++\t     struct repository *repo UNUSED)\n       {\n       \tparse_opt_subcommand_fn *fn = NULL;\n       \tstruct option builtin_hook_options[] = {\n     @@ builtin/index-pack.c: static void show_pack_info(int stat_only)\n       }\n       \n      -int cmd_index_pack(int argc, const char **argv, const char *prefix)\n     -+int cmd_index_pack(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_index_pack(int argc,\n     ++\t\t   const char **argv,\n     ++\t\t   const char *prefix,\n     ++\t\t   struct repository *repo UNUSED)\n       {\n       \tint i, fix_thin_pack = 0, verify = 0, stat_only = 0, rev_index;\n       \tconst char *curr_index;\n     @@ builtin/init-db.c: static const char *const init_db_usage[] = {\n        * be the judge.  The default case is to have one DB per managed directory.\n        */\n      -int cmd_init_db(int argc, const char **argv, const char *prefix)\n     -+int cmd_init_db(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_init_db(int argc,\n     ++\t\tconst char **argv,\n     ++\t\tconst char *prefix,\n     ++\t\tstruct repository *repo UNUSED)\n       {\n       \tconst char *git_dir;\n       \tconst char *real_git_dir = NULL;\n     @@ builtin/interpret-trailers.c: static void interpret_trailers(const struct proces\n       }\n       \n      -int cmd_interpret_trailers(int argc, const char **argv, const char *prefix)\n     -+int cmd_interpret_trailers(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_interpret_trailers(int argc,\n     ++\t\t\t   const char **argv,\n     ++\t\t\t   const char *prefix,\n     ++\t\t\t   struct repository *repo UNUSED)\n       {\n       \tstruct process_trailer_options opts = PROCESS_TRAILER_OPTIONS_INIT;\n       \tLIST_HEAD(trailers);\n     @@ builtin/log.c: static int git_log_config(const char *var, const char *value,\n       }\n       \n      -int cmd_whatchanged(int argc, const char **argv, const char *prefix)\n     -+int cmd_whatchanged(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_whatchanged(int argc,\n     ++\t\t    const char **argv,\n     ++\t\t    const char *prefix,\n     ++\t\t    struct repository *repo UNUSED)\n       {\n       \tstruct log_config cfg;\n       \tstruct rev_info rev;\n     @@ builtin/log.c: static void show_setup_revisions_tweak(struct rev_info *rev)\n       }\n       \n      -int cmd_show(int argc, const char **argv, const char *prefix)\n     -+int cmd_show(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_show(int argc,\n     ++\t     const char **argv,\n     ++\t     const char *prefix,\n     ++\t     struct repository *repo UNUSED)\n       {\n       \tstruct log_config cfg;\n       \tstruct rev_info rev;\n     @@ builtin/log.c: int cmd_show(int argc, const char **argv, const char *prefix)\n        * This is equivalent to \"git log -g --abbrev-commit --pretty=oneline\"\n        */\n      -int cmd_log_reflog(int argc, const char **argv, const char *prefix)\n     -+int cmd_log_reflog(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_log_reflog(int argc,\n     ++\t\t   const char **argv,\n     ++\t\t   const char *prefix,\n     ++\t\t   struct repository *repo UNUSED)\n       {\n       \tstruct log_config cfg;\n       \tstruct rev_info rev;\n     @@ builtin/log.c: static void log_setup_revisions_tweak(struct rev_info *rev)\n       }\n       \n      -int cmd_log(int argc, const char **argv, const char *prefix)\n     -+int cmd_log(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_log(int argc,\n     ++\t    const char **argv,\n     ++\t    const char *prefix,\n     ++\t    struct repository *repo UNUSED)\n       {\n       \tstruct log_config cfg;\n       \tstruct rev_info rev;\n     @@ builtin/log.c: static void infer_range_diff_ranges(struct strbuf *r1,\n       }\n       \n      -int cmd_format_patch(int argc, const char **argv, const char *prefix)\n     -+int cmd_format_patch(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_format_patch(int argc,\n     ++\t\t     const char **argv,\n     ++\t\t     const char *prefix,\n     ++\t\t     struct repository *repo UNUSED)\n       {\n       \tstruct format_config cfg;\n       \tstruct commit *commit;\n     @@ builtin/log.c: static void print_commit(char sign, struct commit *commit, int ve\n       }\n       \n      -int cmd_cherry(int argc, const char **argv, const char *prefix)\n     -+int cmd_cherry(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_cherry(int argc,\n     ++\t       const char **argv,\n     ++\t       const char *prefix,\n     ++\t       struct repository *repo UNUSED)\n       {\n       \tstruct rev_info revs;\n       \tstruct patch_ids ids;\n     @@ builtin/ls-files.c: static int option_parse_exclude_standard(const struct option\n       }\n       \n      -int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix)\n     -+int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix, struct repository *repo UNUSED)\n     ++int cmd_ls_files(int argc,\n     ++\t\t const char **argv,\n     ++\t\t const char *cmd_prefix,\n     ++\t\t struct repository *repo UNUSED)\n       {\n       \tint require_work_tree = 0, show_tag = 0, i;\n       \tchar *max_prefix;\n     @@ builtin/ls-remote.c: static int tail_match(const struct strvec *pattern, const c\n       }\n       \n      -int cmd_ls_remote(int argc, const char **argv, const char *prefix)\n     -+int cmd_ls_remote(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_ls_remote(int argc,\n     ++\t\t  const char **argv,\n     ++\t\t  const char *prefix,\n     ++\t\t  struct repository *repo UNUSED)\n       {\n       \tconst char *dest = NULL;\n       \tunsigned flags = 0;\n     @@ builtin/ls-tree.c: static struct ls_tree_cmdmode_to_fmt ls_tree_cmdmode_format[]\n       };\n       \n      -int cmd_ls_tree(int argc, const char **argv, const char *prefix)\n     -+int cmd_ls_tree(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_ls_tree(int argc,\n     ++\t\tconst char **argv,\n     ++\t\tconst char *prefix,\n     ++\t\tstruct repository *repo UNUSED)\n       {\n       \tstruct object_id oid;\n       \tstruct tree *tree;\n     @@ builtin/mailinfo.c: static int parse_opt_quoted_cr(const struct option *opt, con\n       }\n       \n      -int cmd_mailinfo(int argc, const char **argv, const char *prefix)\n     -+int cmd_mailinfo(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_mailinfo(int argc,\n     ++\t\t const char **argv,\n     ++\t\t const char *prefix,\n     ++\t\t struct repository *repo UNUSED)\n       {\n       \tstruct metainfo_charset meta_charset;\n       \tstruct mailinfo mi;\n     @@ builtin/mailsplit.c: out:\n       }\n       \n      -int cmd_mailsplit(int argc, const char **argv, const char *prefix)\n     -+int cmd_mailsplit(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_mailsplit(int argc,\n     ++\t\t  const char **argv,\n     ++\t\t  const char *prefix,\n     ++\t\t  struct repository *repo UNUSED)\n       {\n       \tint nr = 0, nr_prec = 4, num = 0;\n       \tint allow_bare = 0;\n     @@ builtin/merge-base.c: static int handle_fork_point(int argc, const char **argv)\n       }\n       \n      -int cmd_merge_base(int argc, const char **argv, const char *prefix)\n     -+int cmd_merge_base(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_merge_base(int argc,\n     ++\t\t   const char **argv,\n     ++\t\t   const char *prefix,\n     ++\t\t   struct repository *repo UNUSED)\n       {\n       \tstruct commit **rev;\n       \tint rev_nr = 0;\n     @@ builtin/merge-file.c: static int diff_algorithm_cb(const struct option *opt,\n       }\n       \n      -int cmd_merge_file(int argc, const char **argv, const char *prefix)\n     -+int cmd_merge_file(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_merge_file(int argc,\n     ++\t\t   const char **argv,\n     ++\t\t   const char *prefix,\n     ++\t\t   struct repository *repo UNUSED)\n       {\n       \tconst char *names[3] = { 0 };\n       \tmmfile_t mmfs[3] = { 0 };\n     @@ builtin/merge-index.c: static void merge_all(void)\n       }\n       \n      -int cmd_merge_index(int argc, const char **argv, const char *prefix UNUSED)\n     -+int cmd_merge_index(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)\n     ++int cmd_merge_index(int argc,\n     ++\t\t    const char **argv,\n     ++\t\t    const char *prefix UNUSED,\n     ++\t\t    struct repository *repo UNUSED)\n       {\n       \tint i, force_file = 0;\n       \n     @@ builtin/merge-ours.c\n       \t\"git merge-ours <base>... -- HEAD <remote>...\";\n       \n      -int cmd_merge_ours(int argc, const char **argv, const char *prefix UNUSED)\n     -+int cmd_merge_ours(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)\n     ++int cmd_merge_ours(int argc,\n     ++\t\t   const char **argv,\n     ++\t\t   const char *prefix UNUSED,\n     ++\t\t   struct repository *repo UNUSED)\n       {\n       \tif (argc == 2 && !strcmp(argv[1], \"-h\"))\n       \t\tusage(builtin_merge_ours_usage);\n     @@ builtin/merge-recursive.c: static char *better_branch_name(const char *branch)\n       }\n       \n      -int cmd_merge_recursive(int argc, const char **argv, const char *prefix UNUSED)\n     -+int cmd_merge_recursive(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)\n     ++int cmd_merge_recursive(int argc,\n     ++\t\t\tconst char **argv,\n     ++\t\t\tconst char *prefix UNUSED,\n     ++\t\t\tstruct repository *repo UNUSED)\n       {\n       \tstruct object_id bases[21];\n       \tunsigned bases_count = 0;\n     @@ builtin/merge-tree.c: static int real_merge(struct merge_tree_options *o,\n       }\n       \n      -int cmd_merge_tree(int argc, const char **argv, const char *prefix)\n     -+int cmd_merge_tree(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_merge_tree(int argc,\n     ++\t\t   const char **argv,\n     ++\t\t   const char *prefix,\n     ++\t\t   struct repository *repo UNUSED)\n       {\n       \tstruct merge_tree_options o = { .show_messages = -1 };\n       \tstruct strvec xopts = STRVEC_INIT;\n     @@ builtin/merge.c: static int merging_a_throwaway_tag(struct commit *commit)\n       }\n       \n      -int cmd_merge(int argc, const char **argv, const char *prefix)\n     -+int cmd_merge(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_merge(int argc,\n     ++\t      const char **argv,\n     ++\t      const char *prefix,\n     ++\t      struct repository *repo UNUSED)\n       {\n       \tstruct object_id result_tree, stash, head_oid;\n       \tstruct commit *head_commit;\n     @@ builtin/mktag.c: static int verify_object_in_tag(struct object_id *tagged_oid, i\n       }\n       \n      -int cmd_mktag(int argc, const char **argv, const char *prefix)\n     -+int cmd_mktag(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_mktag(int argc,\n     ++\t      const char **argv,\n     ++\t      const char *prefix,\n     ++\t      struct repository *repo UNUSED)\n       {\n       \tstatic struct option builtin_mktag_options[] = {\n       \t\tOPT_BOOL(0, \"strict\", &option_strict,\n     @@ builtin/mktree.c: static void mktree_line(char *buf, int nul_term_line, int allo\n       }\n       \n      -int cmd_mktree(int ac, const char **av, const char *prefix)\n     -+int cmd_mktree(int ac, const char **av, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_mktree(int ac,\n     ++\t       const char **av,\n     ++\t       const char *prefix,\n     ++\t       struct repository *repo UNUSED)\n       {\n       \tstruct strbuf sb = STRBUF_INIT;\n       \tstruct object_id oid;\n     +@@ builtin/mktree.c: int cmd_mktree(int ac, const char **av, const char *prefix)\n     + \t\tused=0; /* reset tree entry buffer for re-use in batch mode */\n     + \t}\n     + \tstrbuf_release(&sb);\n     ++\n     + \treturn 0;\n     + }\n      \n       ## builtin/multi-pack-index.c ##\n      @@ builtin/multi-pack-index.c: static int cmd_multi_pack_index_repack(int argc, const char **argv,\n     + \t\t\t   (size_t)opts.batch_size, opts.flags);\n       }\n       \n     - int cmd_multi_pack_index(int argc, const char **argv,\n     +-int cmd_multi_pack_index(int argc, const char **argv,\n      -\t\t\t const char *prefix)\n     -+\t\t\t const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_multi_pack_index(int argc,\n     ++\t\t\t const char **argv,\n     ++\t\t\t const char *prefix,\n     ++\t\t\t struct repository *repo UNUSED)\n       {\n       \tint res;\n       \tparse_opt_subcommand_fn *fn = NULL;\n     @@ builtin/mv.c: static void remove_empty_src_dirs(const char **src_dir, size_t src\n       }\n       \n      -int cmd_mv(int argc, const char **argv, const char *prefix)\n     -+int cmd_mv(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_mv(int argc,\n     ++\t   const char **argv,\n     ++\t   const char *prefix,\n     ++\t   struct repository *repo UNUSED)\n       {\n       \tint i, flags, gitmodules_modified = 0;\n       \tint verbose = 0, show_only = 0, force = 0, ignore_errors = 0, ignore_sparse = 0;\n     @@ builtin/name-rev.c: static void name_rev_line(char *p, struct name_ref_data *dat\n       }\n       \n      -int cmd_name_rev(int argc, const char **argv, const char *prefix)\n     -+int cmd_name_rev(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_name_rev(int argc,\n     ++\t\t const char **argv,\n     ++\t\t const char *prefix,\n     ++\t\t struct repository *repo UNUSED)\n       {\n       \tstruct mem_pool string_pool;\n       \tstruct object_array revs = OBJECT_ARRAY_INIT;\n     @@ builtin/notes.c: static int get_ref(int argc, const char **argv, const char *pre\n       }\n       \n      -int cmd_notes(int argc, const char **argv, const char *prefix)\n     -+int cmd_notes(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_notes(int argc,\n     ++\t      const char **argv,\n     ++\t      const char *prefix,\n     ++\t      struct repository *repo UNUSED)\n       {\n       \tconst char *override_notes_ref = NULL;\n       \tparse_opt_subcommand_fn *fn = NULL;\n     @@ builtin/pack-objects.c: static int option_parse_cruft_expiration(const struct op\n       }\n       \n      -int cmd_pack_objects(int argc, const char **argv, const char *prefix)\n     -+int cmd_pack_objects(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_pack_objects(int argc,\n     ++\t\t     const char **argv,\n     ++\t\t     const char *prefix,\n     ++\t\t     struct repository *repo UNUSED)\n       {\n       \tint use_internal_rev_list = 0;\n       \tint shallow = 0;\n     @@ builtin/pack-redundant.c: static void load_all(void)\n       }\n       \n      -int cmd_pack_redundant(int argc, const char **argv, const char *prefix UNUSED)\n     -+int cmd_pack_redundant(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)\n     - {\n     - \tint i;\n     - \tint i_still_use_this = 0;\n     +-{\n     +-\tint i;\n     +-\tint i_still_use_this = 0;\n     +-\tstruct pack_list *min = NULL, *red, *pl;\n     ++int cmd_pack_redundant(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED) {\n     ++\tint i; int i_still_use_this = 0; struct pack_list *min = NULL, *red, *pl;\n     + \tstruct llist *ignore;\n     + \tstruct object_id *oid;\n     + \tchar buf[GIT_MAX_HEXSZ + 2]; /* hex hash + \\n + \\0 */\n      \n       ## builtin/pack-refs.c ##\n      @@ builtin/pack-refs.c: static char const * const pack_refs_usage[] = {\n     @@ builtin/pack-refs.c: static char const * const pack_refs_usage[] = {\n       };\n       \n      -int cmd_pack_refs(int argc, const char **argv, const char *prefix)\n     -+int cmd_pack_refs(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_pack_refs(int argc,\n     ++\t\t  const char **argv,\n     ++\t\t  const char *prefix,\n     ++\t\t  struct repository *repo UNUSED)\n       {\n       \tstruct ref_exclusions excludes = REF_EXCLUSIONS_INIT;\n       \tstruct string_list included_refs = STRING_LIST_INIT_NODUP;\n     @@ builtin/patch-id.c: static int git_patch_id_config(const char *var, const char *\n       }\n       \n      -int cmd_patch_id(int argc, const char **argv, const char *prefix)\n     -+int cmd_patch_id(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_patch_id(int argc,\n     ++\t\t const char **argv,\n     ++\t\t const char *prefix,\n     ++\t\t struct repository *repo UNUSED)\n       {\n       \t/* if nothing is set, default to unstable */\n       \tstruct patch_id_opts config = {0, 0};\n     @@ builtin/prune-packed.c: static const char * const prune_packed_usage[] = {\n       };\n       \n      -int cmd_prune_packed(int argc, const char **argv, const char *prefix)\n     -+int cmd_prune_packed(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_prune_packed(int argc,\n     ++\t\t     const char **argv,\n     ++\t\t     const char *prefix,\n     ++\t\t     struct repository *repo UNUSED)\n       {\n       \tint opts = isatty(2) ? PRUNE_PACKED_VERBOSE : 0;\n       \tconst struct option prune_packed_options[] = {\n     @@ builtin/prune.c: static void remove_temporary_files(const char *path)\n       }\n       \n      -int cmd_prune(int argc, const char **argv, const char *prefix)\n     -+int cmd_prune(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_prune(int argc,\n     ++\t      const char **argv,\n     ++\t      const char *prefix,\n     ++\t      struct repository *repo UNUSED)\n       {\n       \tstruct rev_info revs;\n       \tint exclude_promisor_objects = 0;\n     @@ builtin/pull.c: static void show_advice_pull_non_ff(void)\n       }\n       \n      -int cmd_pull(int argc, const char **argv, const char *prefix)\n     -+int cmd_pull(int argc, const char **argv, const char *prefix, struct repository *repository UNUSED)\n     ++int cmd_pull(int argc,\n     ++\t     const char **argv,\n     ++\t     const char *prefix,\n     ++\t     struct repository *repository UNUSED)\n       {\n       \tconst char *repo, **refspecs;\n       \tstruct oid_array merge_heads = OID_ARRAY_INIT;\n     @@ builtin/push.c: static int git_push_config(const char *k, const char *v,\n       }\n       \n      -int cmd_push(int argc, const char **argv, const char *prefix)\n     -+int cmd_push(int argc, const char **argv, const char *prefix, struct repository *repository UNUSED)\n     ++int cmd_push(int argc,\n     ++\t     const char **argv,\n     ++\t     const char *prefix,\n     ++\t     struct repository *repository UNUSED)\n       {\n       \tint flags = 0;\n       \tint tags = 0;\n     @@ builtin/range-diff.c: N_(\"git range-diff [<options>] <base> <old-tip> <new-tip>\"\n       };\n       \n      -int cmd_range_diff(int argc, const char **argv, const char *prefix)\n     -+int cmd_range_diff(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_range_diff(int argc,\n     ++\t\t   const char **argv,\n     ++\t\t   const char *prefix,\n     ++\t\t   struct repository *repo UNUSED)\n       {\n       \tstruct diff_options diffopt = { NULL };\n       \tstruct strvec other_arg = STRVEC_INIT;\n     @@ builtin/read-tree.c: static int git_read_tree_config(const char *var, const char\n       }\n       \n      -int cmd_read_tree(int argc, const char **argv, const char *cmd_prefix)\n     -+int cmd_read_tree(int argc, const char **argv, const char *cmd_prefix, struct repository *repo UNUSED)\n     ++int cmd_read_tree(int argc,\n     ++\t\t  const char **argv,\n     ++\t\t  const char *cmd_prefix,\n     ++\t\t  struct repository *repo UNUSED)\n       {\n       \tint i, stage = 0;\n       \tstruct object_id oid;\n     @@ builtin/rebase.c: static int check_exec_cmd(const char *cmd)\n       }\n       \n      -int cmd_rebase(int argc, const char **argv, const char *prefix)\n     -+int cmd_rebase(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_rebase(int argc,\n     ++\t       const char **argv,\n     ++\t       const char *prefix,\n     ++\t       struct repository *repo UNUSED)\n       {\n       \tstruct rebase_options options = REBASE_OPTIONS_INIT;\n       \tconst char *branch_name;\n     @@ builtin/receive-pack.c: static int delete_only(struct command *commands)\n       }\n       \n      -int cmd_receive_pack(int argc, const char **argv, const char *prefix)\n     -+int cmd_receive_pack(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_receive_pack(int argc,\n     ++\t\t     const char **argv,\n     ++\t\t     const char *prefix,\n     ++\t\t     struct repository *repo UNUSED)\n       {\n       \tint advertise_refs = 0;\n       \tstruct command *commands;\n     @@ builtin/reflog.c: static int cmd_reflog_exists(int argc, const char **argv, cons\n        */\n       \n      -int cmd_reflog(int argc, const char **argv, const char *prefix)\n     -+int cmd_reflog(int argc, const char **argv, const char *prefix, struct repository *repository)\n     ++int cmd_reflog(int argc,\n     ++\t       const char **argv,\n     ++\t       const char *prefix,\n     ++\t       struct repository *repository)\n       {\n       \tparse_opt_subcommand_fn *fn = NULL;\n       \tstruct option options[] = {\n     @@ builtin/refs.c: static int cmd_refs_verify(int argc, const char **argv, const ch\n       }\n       \n      -int cmd_refs(int argc, const char **argv, const char *prefix)\n     -+int cmd_refs(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_refs(int argc,\n     ++\t     const char **argv,\n     ++\t     const char *prefix,\n     ++\t     struct repository *repo UNUSED)\n       {\n       \tconst char * const refs_usage[] = {\n       \t\tREFS_MIGRATE_USAGE,\n     @@ builtin/remote-ext.c: static int command_loop(const char *child)\n       }\n       \n      -int cmd_remote_ext(int argc, const char **argv, const char *prefix)\n     -+int cmd_remote_ext(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_remote_ext(int argc,\n     ++\t\t   const char **argv,\n     ++\t\t   const char *prefix,\n     ++\t\t   struct repository *repo UNUSED)\n       {\n       \tBUG_ON_NON_EMPTY_PREFIX(prefix);\n       \n     @@ builtin/remote-fd.c: static void command_loop(int input_fd, int output_fd)\n       }\n       \n      -int cmd_remote_fd(int argc, const char **argv, const char *prefix)\n     -+int cmd_remote_fd(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_remote_fd(int argc,\n     ++\t\t  const char **argv,\n     ++\t\t  const char *prefix,\n     ++\t\t  struct repository *repo UNUSED)\n       {\n       \tint input_fd = -1;\n       \tint output_fd = -1;\n     @@ builtin/remote.c: out:\n       }\n       \n      -int cmd_remote(int argc, const char **argv, const char *prefix)\n     -+int cmd_remote(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_remote(int argc,\n     ++\t       const char **argv,\n     ++\t       const char *prefix,\n     ++\t       struct repository *repo UNUSED)\n       {\n       \tparse_opt_subcommand_fn *fn = NULL;\n       \tstruct option options[] = {\n     @@ builtin/repack.c: static const char *find_pack_prefix(const char *packdir, const\n       }\n       \n      -int cmd_repack(int argc, const char **argv, const char *prefix)\n     -+int cmd_repack(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_repack(int argc,\n     ++\t       const char **argv,\n     ++\t       const char *prefix,\n     ++\t       struct repository *repo UNUSED)\n       {\n       \tstruct child_process cmd = CHILD_PROCESS_INIT;\n       \tstruct string_list_item *item;\n     @@ builtin/replace.c: static int convert_graft_file(int force)\n       }\n       \n      -int cmd_replace(int argc, const char **argv, const char *prefix)\n     -+int cmd_replace(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_replace(int argc,\n     ++\t\tconst char **argv,\n     ++\t\tconst char *prefix,\n     ++\t\tstruct repository *repo UNUSED)\n       {\n       \tint force = 0;\n       \tint raw = 0;\n     @@ builtin/replay.c: static struct commit *pick_regular_commit(struct commit *pickm\n       }\n       \n      -int cmd_replay(int argc, const char **argv, const char *prefix)\n     -+int cmd_replay(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_replay(int argc,\n     ++\t       const char **argv,\n     ++\t       const char *prefix,\n     ++\t       struct repository *repo UNUSED)\n       {\n       \tconst char *advance_name_opt = NULL;\n       \tchar *advance_name = NULL;\n     @@ builtin/rerere.c: static int diff_two(const char *file1, const char *label1,\n       }\n       \n      -int cmd_rerere(int argc, const char **argv, const char *prefix)\n     -+int cmd_rerere(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_rerere(int argc,\n     ++\t       const char **argv,\n     ++\t       const char *prefix,\n     ++\t       struct repository *repo UNUSED)\n       {\n       \tstruct string_list merge_rr = STRING_LIST_INIT_DUP;\n       \tint i, autoupdate = -1, flags = 0;\n     @@ builtin/reset.c: static int git_reset_config(const char *var, const char *value,\n       }\n       \n      -int cmd_reset(int argc, const char **argv, const char *prefix)\n     -+int cmd_reset(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_reset(int argc,\n     ++\t      const char **argv,\n     ++\t      const char *prefix,\n     ++\t      struct repository *repo UNUSED)\n       {\n       \tint reset_type = NONE, update_ref_status = 0, quiet = 0;\n       \tint no_refresh = 0;\n     @@ builtin/rev-list.c: static int try_bitmap_disk_usage(struct rev_info *revs,\n       }\n       \n      -int cmd_rev_list(int argc, const char **argv, const char *prefix)\n     -+int cmd_rev_list(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_rev_list(int argc,\n     ++\t\t const char **argv,\n     ++\t\t const char *prefix,\n     ++\t\t struct repository *repo UNUSED)\n       {\n       \tstruct rev_info revs;\n       \tstruct rev_list_info info;\n     @@ builtin/rev-parse.c: static void print_path(const char *path, const char *prefix\n       }\n       \n      -int cmd_rev_parse(int argc, const char **argv, const char *prefix)\n     -+int cmd_rev_parse(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_rev_parse(int argc,\n     ++\t\t  const char **argv,\n     ++\t\t  const char *prefix,\n     ++\t\t  struct repository *repo UNUSED)\n       {\n       \tint i, as_is = 0, verify = 0, quiet = 0, revs_count = 0, type = 0;\n       \tconst struct git_hash_algo *output_algo = NULL;\n     @@ builtin/revert.c: static int run_sequencer(int argc, const char **argv, const ch\n       }\n       \n      -int cmd_revert(int argc, const char **argv, const char *prefix)\n     -+int cmd_revert(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_revert(int argc,\n     ++\t       const char **argv,\n     ++\t       const char *prefix,\n     ++\t       struct repository *repo UNUSED)\n       {\n       \tstruct replay_opts opts = REPLAY_OPTS_INIT;\n       \tint res;\n     @@ builtin/revert.c: int cmd_revert(int argc, const char **argv, const char *prefix\n       }\n       \n      -int cmd_cherry_pick(int argc, const char **argv, const char *prefix)\n     -+int cmd_cherry_pick(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_cherry_pick(int argc,\n     ++const char **argv,\n     ++const char *prefix,\n     ++struct repository *repo UNUSED)\n       {\n       \tstruct replay_opts opts = REPLAY_OPTS_INIT;\n       \tint res;\n     @@ builtin/rm.c: static struct option builtin_rm_options[] = {\n       };\n       \n      -int cmd_rm(int argc, const char **argv, const char *prefix)\n     -+int cmd_rm(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_rm(int argc,\n     ++\t   const char **argv,\n     ++\t   const char *prefix,\n     ++\t   struct repository *repo UNUSED)\n       {\n       \tstruct lock_file lock_file = LOCK_INIT;\n       \tint i, ret = 0;\n     @@ builtin/send-pack.c: static int send_pack_config(const char *k, const char *v,\n       }\n       \n      -int cmd_send_pack(int argc, const char **argv, const char *prefix)\n     -+int cmd_send_pack(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_send_pack(int argc,\n     ++\t\t  const char **argv,\n     ++\t\t  const char *prefix,\n     ++\t\t  struct repository *repo UNUSED)\n       {\n       \tstruct refspec rs = REFSPEC_INIT_PUSH;\n       \tconst char *remote_name = NULL;\n     @@ builtin/shortlog.c: void shortlog_finish_setup(struct shortlog *log)\n       }\n       \n      -int cmd_shortlog(int argc, const char **argv, const char *prefix)\n     -+int cmd_shortlog(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_shortlog(int argc,\n     ++\t\t const char **argv,\n     ++\t\t const char *prefix,\n     ++\t\t struct repository *repo UNUSED)\n       {\n       \tstruct shortlog log = { STRING_LIST_INIT_NODUP };\n       \tstruct rev_info rev;\n     @@ builtin/show-branch.c: static int parse_reflog_param(const struct option *opt, c\n       }\n       \n      -int cmd_show_branch(int ac, const char **av, const char *prefix)\n     -+int cmd_show_branch(int ac, const char **av, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_show_branch(int ac,\n     ++\t\tconst char **av,\n     ++\t\tconst char *prefix,\n     ++\t\tstruct repository *repo UNUSED)\n       {\n       \tstruct commit *rev[MAX_REVS], *commit;\n       \tchar *reflog_msg[MAX_REVS] = {0};\n     @@ builtin/show-index.c: static const char *const show_index_usage[] = {\n       };\n       \n      -int cmd_show_index(int argc, const char **argv, const char *prefix)\n     -+int cmd_show_index(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_show_index(int argc,\n     ++\t\t   const char **argv,\n     ++\t\t   const char *prefix,\n     ++\t\t   struct repository *repo UNUSED)\n       {\n       \tint i;\n       \tunsigned nr;\n     @@ builtin/show-ref.c: static int exclude_existing_callback(const struct option *op\n       }\n       \n      -int cmd_show_ref(int argc, const char **argv, const char *prefix)\n     -+int cmd_show_ref(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_show_ref(int argc,\n     ++const char **argv,\n     ++const char *prefix,\n     ++struct repository *repo UNUSED)\n       {\n       \tstruct exclude_existing_options exclude_existing_opts = {0};\n       \tstruct patterns_options patterns_opts = {0};\n     @@ builtin/sparse-checkout.c: static int sparse_checkout_check_rules(int argc, cons\n       }\n       \n      -int cmd_sparse_checkout(int argc, const char **argv, const char *prefix)\n     -+int cmd_sparse_checkout(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_sparse_checkout(int argc,\n     ++\t\t\tconst char **argv,\n     ++\t\t\tconst char *prefix,\n     ++\t\t\tstruct repository *repo UNUSED)\n       {\n       \tparse_opt_subcommand_fn *fn = NULL;\n       \tstruct option builtin_sparse_checkout_options[] = {\n     @@ builtin/stash.c: static int save_stash(int argc, const char **argv, const char *\n       }\n       \n      -int cmd_stash(int argc, const char **argv, const char *prefix)\n     -+int cmd_stash(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_stash(int argc,\n     ++\t      const char **argv,\n     ++\t      const char *prefix,\n     ++\t      struct repository *repo UNUSED)\n       {\n       \tpid_t pid = getpid();\n       \tconst char *index_file;\n     @@ builtin/stripspace.c: enum stripspace_mode {\n       };\n       \n      -int cmd_stripspace(int argc, const char **argv, const char *prefix)\n     -+int cmd_stripspace(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_stripspace(int argc,\n     ++\t\t   const char **argv,\n     ++\t\t   const char *prefix,\n     ++\t\t   struct repository *repo UNUSED)\n       {\n       \tstruct strbuf buf = STRBUF_INIT;\n       \tenum stripspace_mode mode = STRIP_DEFAULT;\n     @@ builtin/submodule--helper.c: cleanup:\n       }\n       \n      -int cmd_submodule__helper(int argc, const char **argv, const char *prefix)\n     -+int cmd_submodule__helper(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_submodule__helper(int argc,\n     ++\t\t\t  const char **argv,\n     ++\t\t\t  const char *prefix,\n     ++\t\t\t  struct repository *repo UNUSED)\n       {\n       \tparse_opt_subcommand_fn *fn = NULL;\n       \tconst char *const usage[] = {\n     @@ builtin/symbolic-ref.c: static int check_symref(const char *HEAD, int quiet, int\n       }\n       \n      -int cmd_symbolic_ref(int argc, const char **argv, const char *prefix)\n     -+int cmd_symbolic_ref(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_symbolic_ref(int argc,\n     ++\t\t     const char **argv,\n     ++\t\t     const char *prefix,\n     ++\t\t     struct repository *repo UNUSED)\n       {\n       \tint quiet = 0, delete = 0, shorten = 0, recurse = 1, ret = 0;\n       \tconst char *msg = NULL;\n     @@ builtin/tag.c: static int strbuf_check_tag_ref(struct strbuf *sb, const char *na\n       }\n       \n      -int cmd_tag(int argc, const char **argv, const char *prefix)\n     -+int cmd_tag(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_tag(int argc,\n     ++\t    const char **argv,\n     ++\t    const char *prefix,\n     ++\t    struct repository *repo UNUSED)\n       {\n       \tstruct strbuf buf = STRBUF_INIT;\n       \tstruct strbuf ref = STRBUF_INIT;\n     @@ builtin/unpack-file.c: static char *create_temp_file(struct object_id *oid)\n       }\n       \n      -int cmd_unpack_file(int argc, const char **argv, const char *prefix UNUSED)\n     -+int cmd_unpack_file(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)\n     ++int cmd_unpack_file(int argc,\n     ++\t\t    const char **argv,\n     ++\t\t    const char *prefix UNUSED,\n     ++\t\t    struct repository *repo UNUSED)\n       {\n       \tstruct object_id oid;\n       \n     @@ builtin/unpack-objects.c: static void unpack_all(void)\n       }\n       \n      -int cmd_unpack_objects(int argc, const char **argv, const char *prefix UNUSED)\n     -+int cmd_unpack_objects(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)\n     ++int cmd_unpack_objects(int argc,\n     ++\t\t       const char **argv,\n     ++\t\t       const char *prefix UNUSED,\n     ++\t\t       struct repository *repo UNUSED)\n       {\n       \tint i;\n       \tstruct object_id oid;\n     @@ builtin/update-index.c: static enum parse_opt_result reupdate_callback(\n       }\n       \n      -int cmd_update_index(int argc, const char **argv, const char *prefix)\n     -+int cmd_update_index(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_update_index(int argc,\n     ++\t\t     const char **argv,\n     ++\t\t     const char *prefix,\n     ++\t\t     struct repository *repo UNUSED)\n       {\n       \tint newfd, entries, has_errors = 0, nul_term_line = 0;\n       \tenum uc_mode untracked_cache = UC_UNSPECIFIED;\n     @@ builtin/update-ref.c: static void update_refs_stdin(void)\n       }\n       \n      -int cmd_update_ref(int argc, const char **argv, const char *prefix)\n     -+int cmd_update_ref(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_update_ref(int argc,\n     ++\t\t   const char **argv,\n     ++\t\t   const char *prefix,\n     ++\t\t   struct repository *repo UNUSED)\n       {\n       \tconst char *refname, *oldval;\n       \tstruct object_id oid, oldoid;\n     @@ builtin/update-server-info.c: static const char * const update_server_info_usage\n       };\n       \n      -int cmd_update_server_info(int argc, const char **argv, const char *prefix)\n     -+int cmd_update_server_info(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_update_server_info(int argc,\n     ++\t\t\t   const char **argv,\n     ++\t\t\t   const char *prefix,\n     ++\t\t\t   struct repository *repo UNUSED)\n       {\n       \tint force = 0;\n       \tstruct option options[] = {\n     @@ builtin/upload-archive.c: static const char deadchild[] =\n       #define MAX_ARGS (64)\n       \n      -int cmd_upload_archive_writer(int argc, const char **argv, const char *prefix)\n     -+int cmd_upload_archive_writer(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_upload_archive_writer(int argc,\n     ++\t\t\t      const char **argv,\n     ++\t\t\t      const char *prefix,\n     ++\t\t\t      struct repository *repo UNUSED)\n       {\n       \tstruct strvec sent_argv = STRVEC_INIT;\n       \tconst char *arg_cmd = \"argument \";\n     @@ builtin/upload-archive.c: static ssize_t process_input(int child_fd, int band)\n       }\n       \n      -int cmd_upload_archive(int argc, const char **argv, const char *prefix)\n     -+int cmd_upload_archive(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_upload_archive(int argc,\n     ++const char **argv,\n     ++const char *prefix,\n     ++struct repository *repo UNUSED)\n       {\n       \tstruct child_process writer = CHILD_PROCESS_INIT;\n       \n     @@ builtin/upload-pack.c: static const char * const upload_pack_usage[] = {\n       };\n       \n      -int cmd_upload_pack(int argc, const char **argv, const char *prefix)\n     -+int cmd_upload_pack(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_upload_pack(int argc,\n     ++\t\t    const char **argv,\n     ++\t\t    const char *prefix,\n     ++\t\t    struct repository *repo UNUSED)\n       {\n       \tconst char *dir;\n       \tint strict = 0;\n     @@ builtin/var.c: static int show_config(const char *var, const char *value,\n       }\n       \n      -int cmd_var(int argc, const char **argv, const char *prefix UNUSED)\n     -+int cmd_var(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)\n     ++int cmd_var(int argc,\n     ++\t    const char **argv,\n     ++\t    const char *prefix UNUSED,\n     ++\t    struct repository *repo UNUSED)\n       {\n       \tconst struct git_var *git_var;\n       \tchar *val;\n     @@ builtin/verify-commit.c: static int verify_commit(const char *name, unsigned fla\n       }\n       \n      -int cmd_verify_commit(int argc, const char **argv, const char *prefix)\n     -+int cmd_verify_commit(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_verify_commit(int argc,\n     ++\t\t      const char **argv,\n     ++\t\t      const char *prefix,\n     ++\t\t      struct repository *repo UNUSED)\n       {\n       \tint i = 1, verbose = 0, had_error = 0;\n       \tunsigned flags = 0;\n     @@ builtin/verify-pack.c: static const char * const verify_pack_usage[] = {\n       };\n       \n      -int cmd_verify_pack(int argc, const char **argv, const char *prefix)\n     -+int cmd_verify_pack(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_verify_pack(int argc,\n     ++\t\t    const char **argv,\n     ++\t\t    const char *prefix,\n     ++\t\t    struct repository *repo UNUSED)\n       {\n       \tint err = 0;\n       \tunsigned int flags = 0;\n     @@ builtin/verify-tag.c: static const char * const verify_tag_usage[] = {\n       };\n       \n      -int cmd_verify_tag(int argc, const char **argv, const char *prefix)\n     -+int cmd_verify_tag(int argc, const char **argv, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_verify_tag(int argc,\n     ++\t\t   const char **argv,\n     ++\t\t   const char *prefix,\n     ++\t\t   struct repository *repo UNUSED)\n       {\n       \tint i = 1, verbose = 0, had_error = 0;\n       \tunsigned flags = 0;\n     @@ builtin/worktree.c: static int repair(int ac, const char **av, const char *prefi\n       }\n       \n      -int cmd_worktree(int ac, const char **av, const char *prefix)\n     -+int cmd_worktree(int ac, const char **av, const char *prefix, struct repository *repo UNUSED)\n     ++int cmd_worktree(int ac,\n     ++\t\t const char **av,\n     ++\t\t const char *prefix,\n     ++\t\t struct repository *repo UNUSED)\n       {\n       \tparse_opt_subcommand_fn *fn = NULL;\n       \tstruct option options[] = {\n     @@ builtin/write-tree.c: static const char * const write_tree_usage[] = {\n       };\n       \n      -int cmd_write_tree(int argc, const char **argv, const char *cmd_prefix)\n     -+int cmd_write_tree(int argc, const char **argv, const char *cmd_prefix, struct repository *repo UNUSED)\n     ++int cmd_write_tree(int argc,\n     ++\t\t   const char **argv,\n     ++\t\t   const char *cmd_prefix,\n     ++\t\t   struct repository *repo UNUSED)\n       {\n       \tint flags = 0, ret;\n       \tconst char *tree_prefix = NULL;\n     @@ git.c: static int run_builtin(struct cmd_struct *p, int argc, const char **argv)\n      -\tstatus = p->fn(argc, argv, prefix);\n      -\tvalidate_cache_entries(the_repository->index);\n      +\tvalidate_cache_entries(repo->index);\n     -+\n     -+\tstatus = p->fn(argc, argv, prefix, startup_info->have_repository? repo: NULL) ;\n     -+\n     ++\tstatus = p->fn(argc, argv, prefix, (p->option & RUN_SETUP)? repo : NULL);\n      +\tvalidate_cache_entries(repo->index);\n       \n       \tif (status)\n     @@ help.c: void get_version_info(struct strbuf *buf, int show_build_options)\n       {\n       \tstruct strbuf buf = STRBUF_INIT;\n       \tint build_options = 0;\n     +\n     + ## stkOs5Qh (new) ##\n     + Binary files /dev/null and stkOs5Qh differ\n 2:  17acc1e054c ! 2:  434c8babbb1 builtin: remove USE_THE_REPOSITORY_VARIABLE from builtin.h\n     @@ Commit message\n          builtin: remove USE_THE_REPOSITORY_VARIABLE from builtin.h\n      \n          Instead of including USE_THE_REPOSITORY_VARIABLE by default on every\n     -    builtin, remove it from builtin.h and add it where necessary to\n     -    individual builtins/*. The next step will be to migrate each builtin\n     +    builtin, remove it from builtin.h and add it to all the builtins that\n     +    reference the_repository.\n     +\n     +    Also, remove the include statement for repository.h since it gets\n     +    brought in through builtin.h.\n     +\n     +    The next step will be to migrate each builtin\n          from having to use the_repository.\n      \n          Signed-off-by: John Cai <johncai86@gmail.com>\n     @@ builtin/add.c\n       #include \"builtin.h\"\n       #include \"advice.h\"\n       #include \"config.h\"\n     +@@\n     + #include \"preload-index.h\"\n     + #include \"diff.h\"\n     + #include \"read-cache.h\"\n     +-#include \"repository.h\"\n     + #include \"revision.h\"\n     + #include \"bulk-checkin.h\"\n     + #include \"strvec.h\"\n      \n       ## builtin/am.c ##\n      @@\n     @@ builtin/am.c\n       #include \"builtin.h\"\n       #include \"abspath.h\"\n       #include \"advice.h\"\n     +@@\n     + #include \"string-list.h\"\n     + #include \"pager.h\"\n     + #include \"path.h\"\n     +-#include \"repository.h\"\n     + #include \"pretty.h\"\n     + \n     + /**\n     +\n     + ## builtin/annotate.c ##\n     +@@\n     +  *\n     +  * Copyright (C) 2006 Ryan Anderson\n     +  */\n     ++\n     ++#define USE_THE_REPOSITORY_VARIABLE\n     + #include \"git-compat-util.h\"\n     + #include \"builtin.h\"\n     + #include \"strvec.h\"\n      \n       ## builtin/apply.c ##\n      @@\n      +#define USE_THE_REPOSITORY_VARIABLE\n       #include \"builtin.h\"\n       #include \"gettext.h\"\n     - #include \"repository.h\"\n     +-#include \"repository.h\"\n     + #include \"hash.h\"\n     + #include \"apply.h\"\n     + \n      \n       ## builtin/archive.c ##\n      @@\n     @@ builtin/archive.c\n       #include \"builtin.h\"\n       #include \"archive.h\"\n       #include \"gettext.h\"\n     + #include \"transport.h\"\n     + #include \"parse-options.h\"\n     + #include \"pkt-line.h\"\n     +-#include \"repository.h\"\n     + \n     + static void create_output_file(const char *output_file)\n     + {\n      \n       ## builtin/bisect.c ##\n      @@\n     @@ builtin/blame.c\n       #include \"builtin.h\"\n       #include \"config.h\"\n       #include \"color.h\"\n     +@@\n     + #include \"environment.h\"\n     + #include \"gettext.h\"\n     + #include \"hex.h\"\n     +-#include \"repository.h\"\n     + #include \"commit.h\"\n     + #include \"diff.h\"\n     + #include \"revision.h\"\n      \n       ## builtin/branch.c ##\n      @@\n     @@ builtin/branch.c\n      -\n      +#define USE_THE_REPOSITORY_VARIABLE\n       #include \"builtin.h\"\n     -+#include \"repository.h\"\n       #include \"config.h\"\n       #include \"color.h\"\n     - #include \"editor.h\"\n      \n       ## builtin/bugreport.c ##\n      @@\n     @@ builtin/bundle.c\n       #include \"builtin.h\"\n       #include \"abspath.h\"\n       #include \"gettext.h\"\n     +@@\n     + #include \"strvec.h\"\n     + #include \"parse-options.h\"\n     + #include \"pkt-line.h\"\n     +-#include \"repository.h\"\n     + #include \"bundle.h\"\n     + \n     + /*\n      \n       ## builtin/cat-file.c ##\n      @@\n     @@ builtin/cat-file.c\n      -\n      +#define USE_THE_REPOSITORY_VARIABLE\n       #include \"builtin.h\"\n     -+#include \"repository.h\"\n       #include \"config.h\"\n       #include \"convert.h\"\n     - #include \"diff.h\"\n      \n       ## builtin/check-attr.c ##\n      @@\n     @@ builtin/check-attr.c\n       #include \"builtin.h\"\n       #include \"config.h\"\n       #include \"attr.h\"\n     +@@\n     + #include \"gettext.h\"\n     + #include \"object-name.h\"\n     + #include \"quote.h\"\n     +-#include \"repository.h\"\n     + #include \"setup.h\"\n     + #include \"parse-options.h\"\n     + #include \"write-or-die.h\"\n      \n       ## builtin/check-ignore.c ##\n      @@\n     @@ builtin/check-ignore.c\n       #include \"builtin.h\"\n       #include \"config.h\"\n       #include \"dir.h\"\n     +@@\n     + #include \"quote.h\"\n     + #include \"pathspec.h\"\n     + #include \"parse-options.h\"\n     +-#include \"repository.h\"\n     + #include \"submodule.h\"\n     + #include \"write-or-die.h\"\n     + \n      \n       ## builtin/check-mailmap.c ##\n      @@\n     @@ builtin/checkout-index.c\n        * Copyright (C) 2005 Linus Torvalds\n        *\n        */\n     +-\n      +#define USE_THE_REPOSITORY_VARIABLE\n     - \n       #include \"builtin.h\"\n       #include \"config.h\"\n     + #include \"gettext.h\"\n     + #include \"lockfile.h\"\n     + #include \"quote.h\"\n     +-#include \"repository.h\"\n     + #include \"cache-tree.h\"\n     + #include \"parse-options.h\"\n     + #include \"entry.h\"\n      \n       ## builtin/checkout.c ##\n      @@\n     @@ builtin/clean.c\n       #include \"builtin.h\"\n       #include \"abspath.h\"\n       #include \"config.h\"\n     +@@\n     + #include \"parse-options.h\"\n     + #include \"path.h\"\n     + #include \"read-cache-ll.h\"\n     +-#include \"repository.h\"\n     + #include \"setup.h\"\n     + #include \"string-list.h\"\n     + #include \"quote.h\"\n      \n       ## builtin/clone.c ##\n      @@\n     @@ builtin/clone.c\n      -\n      +#define USE_THE_REPOSITORY_VARIABLE\n       #include \"builtin.h\"\n     -+#include \"repository.h\"\n     ++\n       #include \"abspath.h\"\n       #include \"advice.h\"\n       #include \"config.h\"\n     @@ builtin/clone.c\n       ## builtin/column.c ##\n      @@\n      +#define USE_THE_REPOSITORY_VARIABLE\n     -+\n       #include \"builtin.h\"\n       #include \"config.h\"\n       #include \"gettext.h\"\n     @@ builtin/commit-graph.c\n       #include \"builtin.h\"\n       #include \"commit.h\"\n       #include \"config.h\"\n     +@@\n     + #include \"gettext.h\"\n     + #include \"hex.h\"\n     + #include \"parse-options.h\"\n     +-#include \"repository.h\"\n     + #include \"commit-graph.h\"\n     + #include \"object-store-ll.h\"\n     + #include \"progress.h\"\n      \n       ## builtin/commit-tree.c ##\n      @@\n     @@ builtin/commit-tree.c\n       #include \"builtin.h\"\n       #include \"config.h\"\n       #include \"gettext.h\"\n     + #include \"hex.h\"\n     + #include \"object-name.h\"\n     + #include \"object-store-ll.h\"\n     +-#include \"repository.h\"\n     ++\n     + #include \"commit.h\"\n     + #include \"parse-options.h\"\n     + \n      \n       ## builtin/commit.c ##\n      @@\n     @@ builtin/commit.c\n      -\n      +#define USE_THE_REPOSITORY_VARIABLE\n       #include \"builtin.h\"\n     -+#include \"repository.h\"\n       #include \"advice.h\"\n       #include \"config.h\"\n     - #include \"lockfile.h\"\n      \n       ## builtin/config.c ##\n      @@\n     @@ builtin/config.c\n       #include \"builtin.h\"\n       #include \"abspath.h\"\n       #include \"config.h\"\n     + #include \"color.h\"\n     + #include \"editor.h\"\n     + #include \"environment.h\"\n     +-#include \"repository.h\"\n     + #include \"gettext.h\"\n     + #include \"ident.h\"\n     + #include \"parse-options.h\"\n      \n       ## builtin/count-objects.c ##\n      @@\n     @@ builtin/count-objects.c\n       #include \"builtin.h\"\n       #include \"config.h\"\n       #include \"dir.h\"\n     + #include \"environment.h\"\n     + #include \"gettext.h\"\n     + #include \"path.h\"\n     +-#include \"repository.h\"\n     + #include \"parse-options.h\"\n     + #include \"quote.h\"\n     + #include \"packfile.h\"\n      \n       ## builtin/credential-cache--daemon.c ##\n      @@\n     @@ builtin/diff-files.c\n       #include \"builtin.h\"\n       #include \"config.h\"\n       #include \"diff.h\"\n     + #include \"diff-merges.h\"\n     + #include \"commit.h\"\n     + #include \"preload-index.h\"\n     +-#include \"repository.h\"\n     + #include \"revision.h\"\n     + \n     + static const char diff_files_usage[] =\n      \n       ## builtin/diff-index.c ##\n      @@\n     @@ builtin/diff-index.c\n       #include \"builtin.h\"\n       #include \"config.h\"\n       #include \"diff.h\"\n     + #include \"diff-merges.h\"\n     + #include \"commit.h\"\n     + #include \"preload-index.h\"\n     +-#include \"repository.h\"\n     + #include \"revision.h\"\n     + #include \"setup.h\"\n     + \n      \n       ## builtin/diff-tree.c ##\n      @@\n     @@ builtin/diff-tree.c\n       #include \"builtin.h\"\n       #include \"config.h\"\n       #include \"diff.h\"\n     +@@\n     + #include \"hex.h\"\n     + #include \"log-tree.h\"\n     + #include \"read-cache-ll.h\"\n     +-#include \"repository.h\"\n     + #include \"revision.h\"\n     + #include \"tmp-objdir.h\"\n     + #include \"tree.h\"\n      \n       ## builtin/diff.c ##\n      @@\n     @@ builtin/diff.c\n      -\n      +#define USE_THE_REPOSITORY_VARIABLE\n       #include \"builtin.h\"\n     -+#include \"repository.h\"\n       #include \"config.h\"\n       #include \"ewah/ewok.h\"\n     - #include \"lockfile.h\"\n      \n       ## builtin/difftool.c ##\n      @@\n     @@ builtin/difftool.c\n      -\n      +#define USE_THE_REPOSITORY_VARIABLE\n       #include \"builtin.h\"\n     -+#include \"repository.h\"\n     ++\n       #include \"abspath.h\"\n       #include \"config.h\"\n       #include \"copy.h\"\n     @@ builtin/fast-export.c\n        */\n      +#define USE_THE_REPOSITORY_VARIABLE\n       #include \"builtin.h\"\n     -+#include \"repository.h\"\n       #include \"config.h\"\n       #include \"gettext.h\"\n     - #include \"hex.h\"\n      \n       ## builtin/fast-import.c ##\n      @@\n     @@ builtin/fast-import.c\n       #include \"builtin.h\"\n       #include \"abspath.h\"\n       #include \"environment.h\"\n     + #include \"gettext.h\"\n     + #include \"hex.h\"\n     +-#include \"repository.h\"\n     + #include \"config.h\"\n     + #include \"lockfile.h\"\n     + #include \"object.h\"\n      \n       ## builtin/fetch-pack.c ##\n      @@\n     @@ builtin/fetch.c\n       #include \"builtin.h\"\n       #include \"advice.h\"\n       #include \"config.h\"\n     + #include \"gettext.h\"\n     + #include \"environment.h\"\n     + #include \"hex.h\"\n     +-#include \"repository.h\"\n     + #include \"refs.h\"\n     + #include \"refspec.h\"\n     + #include \"object-name.h\"\n      \n       ## builtin/fmt-merge-msg.c ##\n      @@\n     @@ builtin/for-each-repo.c\n       #include \"builtin.h\"\n       #include \"config.h\"\n       #include \"gettext.h\"\n     + #include \"parse-options.h\"\n     + #include \"path.h\"\n     +-#include \"repository.h\"\n     + #include \"run-command.h\"\n     + #include \"string-list.h\"\n     + \n      \n       ## builtin/fsck.c ##\n      @@\n     @@ builtin/fsck.c\n       #include \"builtin.h\"\n       #include \"gettext.h\"\n       #include \"hex.h\"\n     +-#include \"repository.h\"\n     + #include \"config.h\"\n     + #include \"commit.h\"\n     + #include \"tree.h\"\n      \n       ## builtin/fsmonitor--daemon.c ##\n      @@\n     @@ builtin/fsmonitor--daemon.c\n       #include \"builtin.h\"\n       #include \"abspath.h\"\n       #include \"config.h\"\n     +@@\n     + #include \"compat/fsmonitor/fsm-health.h\"\n     + #include \"compat/fsmonitor/fsm-listen.h\"\n     + #include \"fsmonitor--daemon.h\"\n     +-#include \"repository.h\"\n     ++\n     + #include \"simple-ipc.h\"\n     + #include \"khash.h\"\n     + #include \"run-command.h\"\n      \n       ## builtin/gc.c ##\n      @@\n     @@ builtin/gc.c\n       #include \"builtin.h\"\n       #include \"abspath.h\"\n       #include \"date.h\"\n     + #include \"environment.h\"\n     + #include \"hex.h\"\n     +-#include \"repository.h\"\n     + #include \"config.h\"\n     + #include \"tempfile.h\"\n     + #include \"lockfile.h\"\n      \n       ## builtin/grep.c ##\n      @@\n     @@ builtin/grep.c\n       #include \"builtin.h\"\n       #include \"abspath.h\"\n       #include \"gettext.h\"\n     + #include \"hex.h\"\n     +-#include \"repository.h\"\n     + #include \"config.h\"\n     + #include \"tag.h\"\n     + #include \"tree-walk.h\"\n      \n       ## builtin/hash-object.c ##\n      @@\n     @@ builtin/hash-object.c\n        */\n      +#define USE_THE_REPOSITORY_VARIABLE\n       #include \"builtin.h\"\n     -+#include \"repository.h\"\n       #include \"abspath.h\"\n       #include \"config.h\"\n     - #include \"gettext.h\"\n      \n       ## builtin/help.c ##\n      @@\n     @@ builtin/index-pack.c\n       #include \"config.h\"\n       #include \"delta.h\"\n      \n     + ## builtin/init-db.c ##\n     +@@\n     +  *\n     +  * Copyright (C) Linus Torvalds, 2005\n     +  */\n     ++#define USE_THE_REPOSITORY_VARIABLE\n     + #include \"builtin.h\"\n     + #include \"abspath.h\"\n     + #include \"environment.h\"\n     +@@\n     + #include \"parse-options.h\"\n     + #include \"path.h\"\n     + #include \"refs.h\"\n     +-#include \"repository.h\"\n     + #include \"setup.h\"\n     + #include \"strbuf.h\"\n     + \n     +\n       ## builtin/interpret-trailers.c ##\n      @@\n        * Copyright (c) 2013, 2014 Christian Couder <chriscool@tuxfamily.org>\n     @@ builtin/log.c\n       #include \"builtin.h\"\n       #include \"abspath.h\"\n       #include \"config.h\"\n     +@@\n     + #include \"mailmap.h\"\n     + #include \"progress.h\"\n     + #include \"commit-slab.h\"\n     +-#include \"repository.h\"\n     ++\n     + #include \"commit-reach.h\"\n     + #include \"range-diff.h\"\n     + #include \"tmp-objdir.h\"\n      \n       ## builtin/ls-files.c ##\n      @@\n     @@ builtin/ls-files.c\n        */\n      +#define USE_THE_REPOSITORY_VARIABLE\n       #include \"builtin.h\"\n     - #include \"repository.h\"\n     +-#include \"repository.h\"\n       #include \"config.h\"\n     + #include \"convert.h\"\n     + #include \"quote.h\"\n      \n       ## builtin/ls-remote.c ##\n      @@\n     @@ builtin/ls-tree.c\n        */\n      +#define USE_THE_REPOSITORY_VARIABLE\n       #include \"builtin.h\"\n     -+#include \"repository.h\"\n     ++\n       #include \"config.h\"\n       #include \"gettext.h\"\n       #include \"hex.h\"\n      \n     + ## builtin/mailinfo.c ##\n     +@@\n     +  * Another stupid program, this one parsing the headers of an\n     +  * email to figure out authorship and subject\n     +  */\n     ++#define USE_THE_REPOSITORY_VARIABLE\n     + #include \"builtin.h\"\n     + #include \"abspath.h\"\n     + #include \"environment.h\"\n     +\n       ## builtin/merge-base.c ##\n      @@\n      +#define USE_THE_REPOSITORY_VARIABLE\n       #include \"builtin.h\"\n       #include \"config.h\"\n       #include \"commit.h\"\n     +@@\n     + #include \"hex.h\"\n     + #include \"object-name.h\"\n     + #include \"parse-options.h\"\n     +-#include \"repository.h\"\n     + #include \"commit-reach.h\"\n     + \n     + static int show_merge_base(struct commit **rev, int rev_nr, int show_all)\n      \n       ## builtin/merge-file.c ##\n      @@\n     @@ builtin/merge-index.c\n       #include \"builtin.h\"\n       #include \"hex.h\"\n       #include \"read-cache-ll.h\"\n     +-#include \"repository.h\"\n     + #include \"run-command.h\"\n     + #include \"sparse-index.h\"\n     + \n      \n       ## builtin/merge-ours.c ##\n      @@\n     @@ builtin/merge-ours.c\n       #include \"git-compat-util.h\"\n       #include \"builtin.h\"\n       #include \"diff.h\"\n     +-#include \"repository.h\"\n     ++\n     + \n     + static const char builtin_merge_ours_usage[] =\n     + \t\"git merge-ours <base>... -- HEAD <remote>...\";\n      \n       ## builtin/merge-recursive.c ##\n      @@\n     @@ builtin/merge-recursive.c\n       #include \"builtin.h\"\n       #include \"advice.h\"\n       #include \"gettext.h\"\n     + #include \"hash.h\"\n     + #include \"merge-recursive.h\"\n     + #include \"object-name.h\"\n     +-#include \"repository.h\"\n     + \n     + static const char builtin_merge_recursive_usage[] =\n     + \t\"git %s <base>... -- <head> <remote> ...\";\n      \n       ## builtin/merge-tree.c ##\n      @@\n     @@ builtin/merge-tree.c\n       #include \"builtin.h\"\n       #include \"tree-walk.h\"\n       #include \"xdiff-interface.h\"\n     +@@\n     + #include \"object-name.h\"\n     + #include \"object-store-ll.h\"\n     + #include \"parse-options.h\"\n     +-#include \"repository.h\"\n     + #include \"blob.h\"\n     + #include \"merge-blobs.h\"\n     + #include \"quote.h\"\n      \n       ## builtin/merge.c ##\n      @@\n     @@ builtin/merge.c\n      -\n      +#define USE_THE_REPOSITORY_VARIABLE\n       #include \"builtin.h\"\n     -+#include \"repository.h\"\n     ++\n       #include \"abspath.h\"\n       #include \"advice.h\"\n       #include \"config.h\"\n     @@ builtin/mktree.c\n        */\n      +#define USE_THE_REPOSITORY_VARIABLE\n       #include \"builtin.h\"\n     -+#include \"repository.h\"\n       #include \"gettext.h\"\n       #include \"hex.h\"\n     - #include \"quote.h\"\n      \n       ## builtin/multi-pack-index.c ##\n      @@\n     @@ builtin/mv.c\n       \n       #include \"builtin.h\"\n       #include \"abspath.h\"\n     +@@\n     + #include \"string-list.h\"\n     + #include \"parse-options.h\"\n     + #include \"read-cache-ll.h\"\n     +-#include \"repository.h\"\n     ++\n     + #include \"setup.h\"\n     + #include \"strvec.h\"\n     + #include \"submodule.h\"\n      \n       ## builtin/name-rev.c ##\n      @@\n     @@ builtin/name-rev.c\n       #include \"builtin.h\"\n       #include \"environment.h\"\n       #include \"gettext.h\"\n     + #include \"hex.h\"\n     +-#include \"repository.h\"\n     + #include \"config.h\"\n     + #include \"commit.h\"\n     + #include \"tag.h\"\n      \n       ## builtin/notes.c ##\n      @@\n     @@ builtin/notes.c\n       #include \"builtin.h\"\n       #include \"config.h\"\n       #include \"editor.h\"\n     +@@\n     + #include \"object-name.h\"\n     + #include \"object-store-ll.h\"\n     + #include \"path.h\"\n     +-#include \"repository.h\"\n     ++\n     + #include \"pretty.h\"\n     + #include \"refs.h\"\n     + #include \"exec-cmd.h\"\n      \n       ## builtin/pack-objects.c ##\n      @@\n     @@ builtin/pack-objects.c\n       #include \"builtin.h\"\n       #include \"environment.h\"\n       #include \"gettext.h\"\n     + #include \"hex.h\"\n     +-#include \"repository.h\"\n     + #include \"config.h\"\n     + #include \"attr.h\"\n     + #include \"object.h\"\n      \n       ## builtin/pack-redundant.c ##\n      @@\n     @@ builtin/pack-redundant.c\n       \n       #include \"builtin.h\"\n       #include \"gettext.h\"\n     + #include \"hex.h\"\n     +-#include \"repository.h\"\n     ++\n     + #include \"packfile.h\"\n     + #include \"object-store-ll.h\"\n     + \n      \n       ## builtin/pack-refs.c ##\n      @@\n     @@ builtin/pack-refs.c\n       #include \"builtin.h\"\n       #include \"config.h\"\n       #include \"gettext.h\"\n     + #include \"parse-options.h\"\n     + #include \"refs.h\"\n     +-#include \"repository.h\"\n     + #include \"revision.h\"\n     + \n     + static char const * const pack_refs_usage[] = {\n      \n       ## builtin/patch-id.c ##\n      @@\n     @@ builtin/push.c\n       #include \"builtin.h\"\n       #include \"advice.h\"\n       #include \"branch.h\"\n     +@@\n     + #include \"transport.h\"\n     + #include \"parse-options.h\"\n     + #include \"pkt-line.h\"\n     +-#include \"repository.h\"\n     + #include \"submodule.h\"\n     + #include \"submodule-config.h\"\n     + #include \"send-pack.h\"\n      \n       ## builtin/range-diff.c ##\n      @@\n     @@ builtin/range-diff.c\n       #include \"builtin.h\"\n       #include \"gettext.h\"\n       #include \"object-name.h\"\n     + #include \"parse-options.h\"\n     + #include \"range-diff.h\"\n     + #include \"config.h\"\n     +-#include \"repository.h\"\n     ++\n     + \n     + static const char * const builtin_range_diff_usage[] = {\n     + N_(\"git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>\"),\n      \n       ## builtin/read-tree.c ##\n      @@\n     @@ builtin/read-tree.c\n       #include \"builtin.h\"\n       #include \"config.h\"\n       #include \"gettext.h\"\n     +@@\n     + #include \"cache-tree.h\"\n     + #include \"unpack-trees.h\"\n     + #include \"parse-options.h\"\n     +-#include \"repository.h\"\n     + #include \"resolve-undo.h\"\n     + #include \"setup.h\"\n     + #include \"sparse-index.h\"\n      \n       ## builtin/rebase.c ##\n      @@\n     @@ builtin/rebase.c\n      -\n      +#define USE_THE_REPOSITORY_VARIABLE\n       #include \"builtin.h\"\n     -+#include \"repository.h\"\n     ++\n       #include \"abspath.h\"\n       #include \"environment.h\"\n       #include \"gettext.h\"\n     @@ builtin/receive-pack.c\n      +#define USE_THE_REPOSITORY_VARIABLE\n       #include \"builtin.h\"\n       #include \"abspath.h\"\n     - #include \"repository.h\"\n     +-#include \"repository.h\"\n     ++\n     + #include \"config.h\"\n     + #include \"environment.h\"\n     + #include \"gettext.h\"\n      \n       ## builtin/reflog.c ##\n      @@\n     @@ builtin/reflog.c\n       #include \"builtin.h\"\n       #include \"config.h\"\n       #include \"gettext.h\"\n     +-#include \"repository.h\"\n     + #include \"revision.h\"\n     + #include \"reachable.h\"\n     + #include \"wildmatch.h\"\n      \n       ## builtin/refs.c ##\n      @@\n     @@ builtin/refs.c\n       #include \"builtin.h\"\n       #include \"config.h\"\n       #include \"fsck.h\"\n     + #include \"parse-options.h\"\n     + #include \"refs.h\"\n     +-#include \"repository.h\"\n     + #include \"strbuf.h\"\n     + \n     + #define REFS_MIGRATE_USAGE \\\n      \n       ## builtin/remote.c ##\n      @@\n     @@ builtin/replace.c\n        * and Carlos Rica <jasampler@gmail.com> that was itself based on\n        * git-tag.sh and mktag.c by Linus Torvalds.\n        */\n     +-\n      +#define USE_THE_REPOSITORY_VARIABLE\n     - \n       #include \"builtin.h\"\n       #include \"config.h\"\n     + #include \"editor.h\"\n     +@@\n     + #include \"object-name.h\"\n     + #include \"object-store-ll.h\"\n     + #include \"replace-object.h\"\n     +-#include \"repository.h\"\n     + #include \"tag.h\"\n     + #include \"wildmatch.h\"\n     + \n      \n       ## builtin/replay.c ##\n      @@\n     @@ builtin/rerere.c\n       #include \"builtin.h\"\n       #include \"config.h\"\n       #include \"gettext.h\"\n     + #include \"parse-options.h\"\n     +-#include \"repository.h\"\n     ++\n     + #include \"string-list.h\"\n     + #include \"rerere.h\"\n     + #include \"xdiff/xdiff.h\"\n      \n       ## builtin/reset.c ##\n      @@\n     @@ builtin/reset.c\n      -\n      +#define USE_THE_REPOSITORY_VARIABLE\n       #include \"builtin.h\"\n     -+#include \"repository.h\"\n       #include \"advice.h\"\n       #include \"config.h\"\n     - #include \"environment.h\"\n      \n       ## builtin/rev-list.c ##\n      @@\n     @@ builtin/rev-parse.c\n      -\n      +#define USE_THE_REPOSITORY_VARIABLE\n       #include \"builtin.h\"\n     -+#include \"repository.h\"\n     ++\n       #include \"abspath.h\"\n       #include \"config.h\"\n       #include \"commit.h\"\n     @@ builtin/revert.c\n       #include \"git-compat-util.h\"\n       #include \"builtin.h\"\n       #include \"parse-options.h\"\n     + #include \"diff.h\"\n     + #include \"gettext.h\"\n     +-#include \"repository.h\"\n     + #include \"revision.h\"\n     + #include \"rerere.h\"\n     + #include \"sequencer.h\"\n      \n       ## builtin/rm.c ##\n      @@\n     @@ builtin/rm.c\n       #include \"builtin.h\"\n       #include \"advice.h\"\n       #include \"config.h\"\n     +@@\n     + #include \"object-name.h\"\n     + #include \"parse-options.h\"\n     + #include \"read-cache.h\"\n     +-#include \"repository.h\"\n     ++\n     + #include \"string-list.h\"\n     + #include \"setup.h\"\n     + #include \"sparse-index.h\"\n      \n       ## builtin/send-pack.c ##\n      @@\n     @@ builtin/shortlog.c\n       #include \"builtin.h\"\n       #include \"config.h\"\n       #include \"commit.h\"\n     +@@\n     + #include \"environment.h\"\n     + #include \"gettext.h\"\n     + #include \"string-list.h\"\n     +-#include \"repository.h\"\n     + #include \"revision.h\"\n     + #include \"utf8.h\"\n     + #include \"mailmap.h\"\n      \n       ## builtin/show-branch.c ##\n      @@\n     @@ builtin/show-branch.c\n       #include \"builtin.h\"\n       #include \"config.h\"\n       #include \"environment.h\"\n     +@@\n     + #include \"strvec.h\"\n     + #include \"object-name.h\"\n     + #include \"parse-options.h\"\n     +-#include \"repository.h\"\n     ++\n     + #include \"dir.h\"\n     + #include \"commit-slab.h\"\n     + #include \"date.h\"\n      \n       ## builtin/show-index.c ##\n      @@\n     @@ builtin/show-index.c\n       #include \"builtin.h\"\n       #include \"gettext.h\"\n       #include \"hash.h\"\n     + #include \"hex.h\"\n     + #include \"pack.h\"\n     + #include \"parse-options.h\"\n     +-#include \"repository.h\"\n     + \n     + static const char *const show_index_usage[] = {\n     + \t\"git show-index [--object-format=<hash-algorithm>]\",\n      \n       ## builtin/show-ref.c ##\n      @@\n     @@ builtin/sparse-checkout.c\n       #include \"builtin.h\"\n       #include \"config.h\"\n       #include \"dir.h\"\n     +@@\n     + #include \"object-name.h\"\n     + #include \"parse-options.h\"\n     + #include \"pathspec.h\"\n     +-#include \"repository.h\"\n     + #include \"strbuf.h\"\n     + #include \"string-list.h\"\n     + #include \"lockfile.h\"\n      \n       ## builtin/stash.c ##\n      @@\n     @@ builtin/submodule--helper.c\n       #include \"builtin.h\"\n       #include \"abspath.h\"\n       #include \"environment.h\"\n     + #include \"gettext.h\"\n     + #include \"hex.h\"\n     +-#include \"repository.h\"\n     ++\n     + #include \"config.h\"\n     + #include \"parse-options.h\"\n     + #include \"quote.h\"\n      \n       ## builtin/symbolic-ref.c ##\n      @@\n     @@ builtin/tag.c\n      -\n      +#define USE_THE_REPOSITORY_VARIABLE\n       #include \"builtin.h\"\n     -+#include \"repository.h\"\n       #include \"advice.h\"\n       #include \"config.h\"\n     - #include \"editor.h\"\n      \n       ## builtin/unpack-file.c ##\n      @@\n     @@ builtin/update-index.c\n        *\n        * Copyright (C) Linus Torvalds, 2005\n        */\n     +-\n      +#define USE_THE_REPOSITORY_VARIABLE\n     - \n       #include \"builtin.h\"\n       #include \"bulk-checkin.h\"\n     + #include \"config.h\"\n     +@@\n     + #include \"pathspec.h\"\n     + #include \"dir.h\"\n     + #include \"read-cache.h\"\n     +-#include \"repository.h\"\n     + #include \"setup.h\"\n     + #include \"sparse-index.h\"\n     + #include \"split-index.h\"\n      \n       ## builtin/update-ref.c ##\n      @@\n     @@ builtin/update-ref.c\n       #include \"builtin.h\"\n       #include \"config.h\"\n       #include \"gettext.h\"\n     +@@\n     + #include \"object-name.h\"\n     + #include \"parse-options.h\"\n     + #include \"quote.h\"\n     +-#include \"repository.h\"\n     + \n     + static const char * const git_update_ref_usage[] = {\n     + \tN_(\"git update-ref [<options>] -d <refname> [<old-oid>]\"),\n      \n       ## builtin/update-server-info.c ##\n      @@\n     @@ builtin/upload-archive.c\n       #include \"builtin.h\"\n       #include \"archive.h\"\n       #include \"path.h\"\n     + #include \"pkt-line.h\"\n     + #include \"sideband.h\"\n     +-#include \"repository.h\"\n     + #include \"run-command.h\"\n     + #include \"strvec.h\"\n     + \n      \n       ## builtin/var.c ##\n      @@\n     @@ builtin/var.c\n        */\n      +#define USE_THE_REPOSITORY_VARIABLE\n       #include \"builtin.h\"\n     -+#include \"repository.h\"\n     ++\n       #include \"attr.h\"\n       #include \"config.h\"\n       #include \"editor.h\"\n     @@ builtin/verify-commit.c\n       #include \"builtin.h\"\n       #include \"config.h\"\n       #include \"gettext.h\"\n     + #include \"object-name.h\"\n     +-#include \"repository.h\"\n     + #include \"commit.h\"\n     + #include \"parse-options.h\"\n     + #include \"gpg-interface.h\"\n      \n       ## builtin/verify-pack.c ##\n      @@\n     @@ builtin/verify-tag.c\n        */\n      +#define USE_THE_REPOSITORY_VARIABLE\n       #include \"builtin.h\"\n     -+#include \"repository.h\"\n       #include \"config.h\"\n       #include \"gettext.h\"\n     - #include \"tag.h\"\n      \n       ## builtin/worktree.c ##\n      @@\n     @@ builtin/worktree.c\n       #include \"builtin.h\"\n       #include \"abspath.h\"\n       #include \"advice.h\"\n     +@@\n     + #include \"read-cache-ll.h\"\n     + #include \"refs.h\"\n     + #include \"remote.h\"\n     +-#include \"repository.h\"\n     + #include \"run-command.h\"\n     + #include \"hook.h\"\n     + #include \"sigchain.h\"\n      \n       ## builtin/write-tree.c ##\n      @@\n     @@ builtin/write-tree.c\n       #include \"builtin.h\"\n       #include \"config.h\"\n       #include \"environment.h\"\n     +@@\n     + #include \"tree.h\"\n     + #include \"cache-tree.h\"\n     + #include \"parse-options.h\"\n     +-#include \"repository.h\"\n     + \n     + static const char * const write_tree_usage[] = {\n     + \tN_(\"git write-tree [--missing-ok] [--prefix=<prefix>/]\"),\n 3:  bc909046934 ! 3:  6956d3fe897 add: pass in repo variable instead of global the_repository\n     @@ Commit message\n          Signed-off-by: John Cai <johncai86@gmail.com>\n      \n       ## builtin/add.c ##\n     +@@\n     +  *\n     +  * Copyright (C) 2006 Linus Torvalds\n     +  */\n     +-#define USE_THE_REPOSITORY_VARIABLE\n     + #include \"builtin.h\"\n     + #include \"advice.h\"\n     + #include \"config.h\"\n      @@ builtin/add.c: static int pathspec_file_nul;\n       static int include_sparse;\n       static const char *pathspec_from_file;\n       \n      -static int chmod_pathspec(struct pathspec *pathspec, char flip, int show_only)\n     -+static int chmod_pathspec(struct pathspec *pathspec,\n     ++static int chmod_pathspec(struct repository *repo,\n     ++\t\t\t  struct pathspec *pathspec,\n      +\t\t\t  char flip,\n     -+\t\t\t  int show_only,\n     -+\t\t\t  struct repository *repo)\n     ++\t\t\t  int show_only)\n       {\n       \tint i, ret = 0;\n       \n     @@ builtin/add.c: static int chmod_pathspec(struct pathspec *pathspec, char flip, i\n       }\n       \n      -static int renormalize_tracked_files(const struct pathspec *pathspec, int flags)\n     -+static int renormalize_tracked_files(const struct pathspec *pathspec, int flags, struct repository *repo)\n     ++static int renormalize_tracked_files(struct repository *repo,\n     ++\t\t\t\t     const struct pathspec *pathspec,\n     ++\t\t\t\t     int flags)\n       {\n       \tint i, retval = 0;\n       \n     @@ builtin/add.c: static int chmod_pathspec(struct pathspec *pathspec, char flip, i\n       }\n       \n      -static char *prune_directory(struct dir_struct *dir, struct pathspec *pathspec, int prefix)\n     -+static char *prune_directory(struct dir_struct *dir, struct pathspec *pathspec, int prefix, struct repository *repo)\n     ++static char *prune_directory(struct repository *repo,\n     ++\t\t\t     struct dir_struct *dir,\n     ++\t\t\t     struct pathspec *pathspec,\n     ++\t\t\t     int prefix)\n       {\n       \tchar *seen;\n       \tint i;\n     @@ builtin/add.c: static char *prune_directory(struct dir_struct *dir, struct paths\n       }\n       \n      -static int refresh(int verbose, const struct pathspec *pathspec)\n     -+static int refresh(int verbose, const struct pathspec *pathspec, struct repository *repo)\n     ++static int refresh(struct repository *repo, int verbose, const struct pathspec *pathspec)\n       {\n       \tchar *seen;\n       \tint i, ret = 0;\n     @@ builtin/add.c: static int refresh(int verbose, const struct pathspec *pathspec)\n       }\n       \n      -int interactive_add(const char **argv, const char *prefix, int patch)\n     -+int interactive_add(const char **argv, const char *prefix, int patch, struct repository *repo)\n     ++int interactive_add(struct repository *repo,\n     ++\t\t    const char **argv,\n     ++\t\t    const char *prefix,\n     ++\t\t    int patch)\n       {\n       \tstruct pathspec pathspec;\n       \tint ret;\n     @@ builtin/add.c: int interactive_add(const char **argv, const char *prefix, int pa\n       \treturn ret;\n       }\n       \n     --static int edit_patch(int argc, const char **argv, const char *prefix)\n     -+static int edit_patch(int argc, const char **argv, const char *prefix, struct repository *repo)\n     +-static int edit_patch(int argc,\n     ++static int edit_patch(struct repository *repo,\n     ++\t\t      int argc,\n     + \t\t      const char **argv,\n     +-\t\t      const char *prefix,\n     +-\t\t      struct repository *repo UNUSED)\n     ++\t\t      const char *prefix)\n       {\n     - \tchar *file = git_pathdup(\"ADD_EDIT.patch\");\n     +-\tchar *file = git_pathdup(\"ADD_EDIT.patch\");\n     ++\tchar *file = repo_git_path(repo, \"ADD_EDIT.patch\");\n       \tstruct child_process child = CHILD_PROCESS_INIT;\n     -@@ builtin/add.c: static int edit_patch(int argc, const char **argv, const char *prefix)\n     + \tstruct rev_info rev;\n     + \tint out;\n     + \tstruct stat st;\n       \n     - \tgit_config(git_diff_basic_config, NULL); /* no \"diff\" UI options */\n     +-\tgit_config(git_diff_basic_config, NULL); /* no \"diff\" UI options */\n     ++\trepo_config(repo, git_diff_basic_config, NULL);\n       \n      -\tif (repo_read_index(the_repository) < 0)\n      +\tif (repo_read_index(repo) < 0)\n     @@ builtin/add.c: static void check_embedded_repo(const char *path)\n       }\n       \n      -static int add_files(struct dir_struct *dir, int flags)\n     -+static int add_files(struct dir_struct *dir, int flags, struct repository *repo)\n     ++static int add_files(struct repository *repo, struct dir_struct *dir, int flags)\n       {\n       \tint i, exit_status = 0;\n       \tstruct string_list matched_sparse_paths = STRING_LIST_INIT_NODUP;\n     @@ builtin/add.c: static int add_files(struct dir_struct *dir, int flags)\n       \t\t\t\tdie(_(\"adding files failed\"));\n       \t\t\texit_status = 1;\n      @@ builtin/add.c: static int add_files(struct dir_struct *dir, int flags)\n     - \treturn exit_status;\n     - }\n     - \n     --int cmd_add(int argc, const char **argv, const char *prefix, struct repository *repository UNUSED)\n     -+int cmd_add(int argc, const char **argv, const char *prefix, struct repository *repo)\n     + int cmd_add(int argc,\n     + \t    const char **argv,\n     + \t    const char *prefix,\n     +-\t    struct repository *repo UNUSED)\n     ++\t    struct repository *repo)\n       {\n       \tint exit_status = 0;\n       \tstruct pathspec pathspec;\n     -@@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, struct repository *\n     +@@ builtin/add.c: int cmd_add(int argc,\n     + \tchar *ps_matched = NULL;\n     + \tstruct lock_file lock_file = LOCK_INIT;\n     + \n     +-\tgit_config(add_config, NULL);\n     ++\trepo_config(repo, add_config, NULL);\n     + \n     + \targc = parse_options(argc, argv, prefix, builtin_add_options,\n     + \t\t\t  builtin_add_usage, PARSE_OPT_KEEP_ARGV0);\n     +@@ builtin/add.c: int cmd_add(int argc,\n       \t\t\tdie(_(\"options '%s' and '%s' cannot be used together\"), \"--dry-run\", \"--interactive/--patch\");\n       \t\tif (pathspec_from_file)\n       \t\t\tdie(_(\"options '%s' and '%s' cannot be used together\"), \"--pathspec-from-file\", \"--interactive/--patch\");\n      -\t\texit(interactive_add(argv + 1, prefix, patch_interactive));\n     -+\t\texit(interactive_add(argv + 1, prefix, patch_interactive, repo));\n     ++\t\texit(interactive_add(repo, argv + 1, prefix, patch_interactive));\n       \t}\n       \n       \tif (edit_interactive) {\n       \t\tif (pathspec_from_file)\n       \t\t\tdie(_(\"options '%s' and '%s' cannot be used together\"), \"--pathspec-from-file\", \"--edit\");\n     --\t\treturn(edit_patch(argc, argv, prefix));\n     -+\t\treturn(edit_patch(argc, argv, prefix, repo));\n     +-\t\treturn(edit_patch(argc, argv, prefix, the_repository));\n     ++\t\treturn(edit_patch(repo, argc, argv, prefix));\n       \t}\n       \targc--;\n       \targv++;\n     -@@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, struct repository *\n     +@@ builtin/add.c: int cmd_add(int argc,\n       \tadd_new_files = !take_worktree_changes && !refresh_only && !add_renormalize;\n       \trequire_pathspec = !(take_worktree_changes || (0 < addremove_explicit));\n       \n     @@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, stru\n       \n       \t/*\n       \t * Check the \"pathspec '%s' did not match any files\" block\n     -@@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, struct repository *\n     +@@ builtin/add.c: int cmd_add(int argc,\n       \t\t (!(addremove || take_worktree_changes)\n       \t\t  ? ADD_CACHE_IGNORE_REMOVAL : 0));\n       \n     @@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, stru\n       \n       \tif (add_new_files) {\n       \t\tint baselen;\n     -@@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, struct repository *\n     +@@ builtin/add.c: int cmd_add(int argc,\n       \t\t}\n       \n       \t\t/* This picks up the paths that are not tracked */\n     @@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, stru\n      +\t\tbaselen = fill_directory(&dir, repo->index, &pathspec);\n       \t\tif (pathspec.nr)\n      -\t\t\tseen = prune_directory(&dir, &pathspec, baselen);\n     -+\t\t\tseen = prune_directory(&dir, &pathspec, baselen, repo);\n     ++\t\t\tseen = prune_directory(repo, &dir, &pathspec, baselen);\n       \t}\n       \n       \tif (refresh_only) {\n      -\t\texit_status |= refresh(verbose, &pathspec);\n     -+\t\texit_status |= refresh(verbose, &pathspec, repo);\n     ++\t\texit_status |= refresh(repo, verbose, &pathspec);\n       \t\tgoto finish;\n       \t}\n       \n     -@@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, struct repository *\n     +@@ builtin/add.c: int cmd_add(int argc,\n       \n       \t\tif (!seen)\n       \t\t\tseen = find_pathspecs_matching_against_index(&pathspec,\n     @@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, stru\n       \n       \t\t/*\n       \t\t * file_exists() assumes exact match\n     -@@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, struct repository *\n     +@@ builtin/add.c: int cmd_add(int argc,\n       \t\t\t    !file_exists(path)) {\n       \t\t\t\tif (ignore_missing) {\n       \t\t\t\t\tint dtype = DT_UNKNOWN;\n     @@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, stru\n       \t\t\t\t\t\t\t\tpath, pathspec.items[i].len);\n       \t\t\t\t} else\n       \t\t\t\t\tdie(_(\"pathspec '%s' did not match any files\"),\n     -@@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, struct repository *\n     +@@ builtin/add.c: int cmd_add(int argc,\n       \n       \tps_matched = xcalloc(pathspec.nr, 1);\n       \tif (add_renormalize)\n      -\t\texit_status |= renormalize_tracked_files(&pathspec, flags);\n     -+\t\texit_status |= renormalize_tracked_files(&pathspec, flags, repo);\n     ++\t\texit_status |= renormalize_tracked_files(repo, &pathspec, flags);\n       \telse\n      -\t\texit_status |= add_files_to_cache(the_repository, prefix,\n      +\t\texit_status |= add_files_to_cache(repo, prefix,\n       \t\t\t\t\t\t  &pathspec, ps_matched,\n       \t\t\t\t\t\t  include_sparse, flags);\n       \n     -@@ builtin/add.c: int cmd_add(int argc, const char **argv, const char *prefix, struct repository *\n     +@@ builtin/add.c: int cmd_add(int argc,\n       \t\texit(128);\n       \n       \tif (add_new_files)\n      -\t\texit_status |= add_files(&dir, flags);\n     -+\t\texit_status |= add_files(&dir, flags, repo);\n     ++\t\texit_status |= add_files(repo, &dir, flags);\n       \n       \tif (chmod_arg && pathspec.nr)\n      -\t\texit_status |= chmod_pathspec(&pathspec, chmod_arg[0], show_only);\n     -+\t\texit_status |= chmod_pathspec(&pathspec, chmod_arg[0], show_only, repo);\n     ++\t\texit_status |= chmod_pathspec(repo, &pathspec, chmod_arg[0], show_only);\n       \tend_odb_transaction();\n       \n       finish:\n     @@ builtin/commit.c: static const char *prepare_index(const char **argv, const char\n       \t\tsetenv(INDEX_ENVIRONMENT, the_repository->index_file, 1);\n       \n      -\t\tif (interactive_add(argv, prefix, patch_interactive) != 0)\n     -+\t\tif (interactive_add(argv, prefix, patch_interactive, the_repository) != 0)\n     ++\t\tif (interactive_add(the_repository, argv, prefix, patch_interactive) != 0)\n       \t\t\tdie(_(\"interactive add failed\"));\n       \n       \t\tthe_repository->index_file = old_repo_index_file;\n      \n       ## commit.h ##\n     -@@\n     - #define COMMIT_H\n     - \n     - #include \"object.h\"\n     -+#include \"repository.h\"\n     - \n     - struct signature_check;\n     - struct strbuf;\n      @@ commit.h: struct oid_array;\n       struct ref;\n       int for_each_commit_graft(each_commit_graft_fn, void *);\n       \n      -int interactive_add(const char **argv, const char *prefix, int patch);\n     -+int interactive_add(const char **argv, const char *prefix, int patch, struct repository *repo);\n     ++int interactive_add(struct repository *repo,\n     ++\t\t    const char **argv,\n     ++\t\t    const char *prefix,\n     ++\t\t    int patch);\n       \n       struct commit_extra_header {\n       \tstruct commit_extra_header *next;\n\n-- \ngitgitgadget\n"},{"id":"502595","messageId":"6956d3fe8971475dde87909bb6b9760be6964488.1726001963.git.gitgitgadget@gmail.com","threadId":"62067","inReplyTo":"pull.1778.v2.git.git.1726001960.gitgitgadget@gmail.com","subject":"[PATCH v2 3/3] add: pass in repo variable instead of global the_repository","fromName":"John Cai via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2024-09-10T20:59:20Z","receivedAt":"2024-09-10T20:59:39Z","isPatch":true,"sender":{"key":"johncai86@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2354211?v=4"},"body":"From: John Cai <johncai86@gmail.com>\n\nWith the repository variable available in the builtin function as an\nargument, pass this down into helper functions instead of using the\nglobal the_repository.\n\nSigned-off-by: John Cai <johncai86@gmail.com>\n---\n builtin/add.c    | 116 +++++++++++++++++++++++++----------------------\n builtin/commit.c |   2 +-\n commit.h         |   5 +-\n 3 files changed, 68 insertions(+), 55 deletions(-)\n\ndiff --git a/builtin/add.c b/builtin/add.c\nindex c893ff48d26..773b7224a49 100644\n--- a/builtin/add.c\n+++ b/builtin/add.c\n@@ -3,7 +3,6 @@\n  *\n  * Copyright (C) 2006 Linus Torvalds\n  */\n-#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"config.h\"\n@@ -35,24 +34,27 @@ static int pathspec_file_nul;\n static int include_sparse;\n static const char *pathspec_from_file;\n \n-static int chmod_pathspec(struct pathspec *pathspec, char flip, int show_only)\n+static int chmod_pathspec(struct repository *repo,\n+\t\t\t  struct pathspec *pathspec,\n+\t\t\t  char flip,\n+\t\t\t  int show_only)\n {\n \tint i, ret = 0;\n \n-\tfor (i = 0; i < the_repository->index->cache_nr; i++) {\n-\t\tstruct cache_entry *ce = the_repository->index->cache[i];\n+\tfor (i = 0; i < repo->index->cache_nr; i++) {\n+\t\tstruct cache_entry *ce = repo->index->cache[i];\n \t\tint err;\n \n \t\tif (!include_sparse &&\n \t\t    (ce_skip_worktree(ce) ||\n-\t\t     !path_in_sparse_checkout(ce->name, the_repository->index)))\n+\t\t     !path_in_sparse_checkout(ce->name, repo->index)))\n \t\t\tcontinue;\n \n-\t\tif (pathspec && !ce_path_match(the_repository->index, ce, pathspec, NULL))\n+\t\tif (pathspec && !ce_path_match(repo->index, ce, pathspec, NULL))\n \t\t\tcontinue;\n \n \t\tif (!show_only)\n-\t\t\terr = chmod_index_entry(the_repository->index, ce, flip);\n+\t\t\terr = chmod_index_entry(repo->index, ce, flip);\n \t\telse\n \t\t\terr = S_ISREG(ce->ce_mode) ? 0 : -1;\n \n@@ -63,31 +65,36 @@ static int chmod_pathspec(struct pathspec *pathspec, char flip, int show_only)\n \treturn ret;\n }\n \n-static int renormalize_tracked_files(const struct pathspec *pathspec, int flags)\n+static int renormalize_tracked_files(struct repository *repo,\n+\t\t\t\t     const struct pathspec *pathspec,\n+\t\t\t\t     int flags)\n {\n \tint i, retval = 0;\n \n-\tfor (i = 0; i < the_repository->index->cache_nr; i++) {\n-\t\tstruct cache_entry *ce = the_repository->index->cache[i];\n+\tfor (i = 0; i < repo->index->cache_nr; i++) {\n+\t\tstruct cache_entry *ce = repo->index->cache[i];\n \n \t\tif (!include_sparse &&\n \t\t    (ce_skip_worktree(ce) ||\n-\t\t     !path_in_sparse_checkout(ce->name, the_repository->index)))\n+\t\t     !path_in_sparse_checkout(ce->name, repo->index)))\n \t\t\tcontinue;\n \t\tif (ce_stage(ce))\n \t\t\tcontinue; /* do not touch unmerged paths */\n \t\tif (!S_ISREG(ce->ce_mode) && !S_ISLNK(ce->ce_mode))\n \t\t\tcontinue; /* do not touch non blobs */\n-\t\tif (pathspec && !ce_path_match(the_repository->index, ce, pathspec, NULL))\n+\t\tif (pathspec && !ce_path_match(repo->index, ce, pathspec, NULL))\n \t\t\tcontinue;\n-\t\tretval |= add_file_to_index(the_repository->index, ce->name,\n+\t\tretval |= add_file_to_index(repo->index, ce->name,\n \t\t\t\t\t    flags | ADD_CACHE_RENORMALIZE);\n \t}\n \n \treturn retval;\n }\n \n-static char *prune_directory(struct dir_struct *dir, struct pathspec *pathspec, int prefix)\n+static char *prune_directory(struct repository *repo,\n+\t\t\t     struct dir_struct *dir,\n+\t\t\t     struct pathspec *pathspec,\n+\t\t\t     int prefix)\n {\n \tchar *seen;\n \tint i;\n@@ -99,16 +106,16 @@ static char *prune_directory(struct dir_struct *dir, struct pathspec *pathspec,\n \ti = dir->nr;\n \twhile (--i >= 0) {\n \t\tstruct dir_entry *entry = *src++;\n-\t\tif (dir_path_match(the_repository->index, entry, pathspec, prefix, seen))\n+\t\tif (dir_path_match(repo->index, entry, pathspec, prefix, seen))\n \t\t\t*dst++ = entry;\n \t}\n \tdir->nr = dst - dir->entries;\n-\tadd_pathspec_matches_against_index(pathspec, the_repository->index, seen,\n+\tadd_pathspec_matches_against_index(pathspec, repo->index, seen,\n \t\t\t\t\t   PS_IGNORE_SKIP_WORKTREE);\n \treturn seen;\n }\n \n-static int refresh(int verbose, const struct pathspec *pathspec)\n+static int refresh(struct repository *repo, int verbose, const struct pathspec *pathspec)\n {\n \tchar *seen;\n \tint i, ret = 0;\n@@ -118,14 +125,14 @@ static int refresh(int verbose, const struct pathspec *pathspec)\n \t\t    (verbose ? REFRESH_IN_PORCELAIN : REFRESH_QUIET);\n \n \tseen = xcalloc(pathspec->nr, 1);\n-\trefresh_index(the_repository->index, flags, pathspec, seen,\n+\trefresh_index(repo->index, flags, pathspec, seen,\n \t\t      _(\"Unstaged changes after refreshing the index:\"));\n \tfor (i = 0; i < pathspec->nr; i++) {\n \t\tif (!seen[i]) {\n \t\t\tconst char *path = pathspec->items[i].original;\n \n \t\t\tif (matches_skip_worktree(pathspec, i, &skip_worktree_seen) ||\n-\t\t\t    !path_in_sparse_checkout(path, the_repository->index)) {\n+\t\t\t    !path_in_sparse_checkout(path, repo->index)) {\n \t\t\t\tstring_list_append(&only_match_skip_worktree,\n \t\t\t\t\t\t   pathspec->items[i].original);\n \t\t\t} else {\n@@ -146,7 +153,10 @@ static int refresh(int verbose, const struct pathspec *pathspec)\n \treturn ret;\n }\n \n-int interactive_add(const char **argv, const char *prefix, int patch)\n+int interactive_add(struct repository *repo,\n+\t\t    const char **argv,\n+\t\t    const char *prefix,\n+\t\t    int patch)\n {\n \tstruct pathspec pathspec;\n \tint ret;\n@@ -158,31 +168,31 @@ int interactive_add(const char **argv, const char *prefix, int patch)\n \t\t       prefix, argv);\n \n \tif (patch)\n-\t\tret = !!run_add_p(the_repository, ADD_P_ADD, NULL, &pathspec);\n+\t\tret = !!run_add_p(repo, ADD_P_ADD, NULL, &pathspec);\n \telse\n-\t\tret = !!run_add_i(the_repository, &pathspec);\n+\t\tret = !!run_add_i(repo, &pathspec);\n \n \tclear_pathspec(&pathspec);\n \treturn ret;\n }\n \n-static int edit_patch(int argc,\n+static int edit_patch(struct repository *repo,\n+\t\t      int argc,\n \t\t      const char **argv,\n-\t\t      const char *prefix,\n-\t\t      struct repository *repo UNUSED)\n+\t\t      const char *prefix)\n {\n-\tchar *file = git_pathdup(\"ADD_EDIT.patch\");\n+\tchar *file = repo_git_path(repo, \"ADD_EDIT.patch\");\n \tstruct child_process child = CHILD_PROCESS_INIT;\n \tstruct rev_info rev;\n \tint out;\n \tstruct stat st;\n \n-\tgit_config(git_diff_basic_config, NULL); /* no \"diff\" UI options */\n+\trepo_config(repo, git_diff_basic_config, NULL);\n \n-\tif (repo_read_index(the_repository) < 0)\n+\tif (repo_read_index(repo) < 0)\n \t\tdie(_(\"could not read the index\"));\n \n-\trepo_init_revisions(the_repository, &rev, prefix);\n+\trepo_init_revisions(repo, &rev, prefix);\n \trev.diffopt.context = 7;\n \n \targc = setup_revisions(argc, argv, &rev, NULL);\n@@ -320,7 +330,7 @@ static void check_embedded_repo(const char *path)\n \tstrbuf_release(&name);\n }\n \n-static int add_files(struct dir_struct *dir, int flags)\n+static int add_files(struct repository *repo, struct dir_struct *dir, int flags)\n {\n \tint i, exit_status = 0;\n \tstruct string_list matched_sparse_paths = STRING_LIST_INIT_NODUP;\n@@ -336,12 +346,12 @@ static int add_files(struct dir_struct *dir, int flags)\n \n \tfor (i = 0; i < dir->nr; i++) {\n \t\tif (!include_sparse &&\n-\t\t    !path_in_sparse_checkout(dir->entries[i]->name, the_repository->index)) {\n+\t\t    !path_in_sparse_checkout(dir->entries[i]->name, repo->index)) {\n \t\t\tstring_list_append(&matched_sparse_paths,\n \t\t\t\t\t   dir->entries[i]->name);\n \t\t\tcontinue;\n \t\t}\n-\t\tif (add_file_to_index(the_repository->index, dir->entries[i]->name, flags)) {\n+\t\tif (add_file_to_index(repo->index, dir->entries[i]->name, flags)) {\n \t\t\tif (!ignore_add_errors)\n \t\t\t\tdie(_(\"adding files failed\"));\n \t\t\texit_status = 1;\n@@ -363,7 +373,7 @@ static int add_files(struct dir_struct *dir, int flags)\n int cmd_add(int argc,\n \t    const char **argv,\n \t    const char *prefix,\n-\t    struct repository *repo UNUSED)\n+\t    struct repository *repo)\n {\n \tint exit_status = 0;\n \tstruct pathspec pathspec;\n@@ -375,7 +385,7 @@ int cmd_add(int argc,\n \tchar *ps_matched = NULL;\n \tstruct lock_file lock_file = LOCK_INIT;\n \n-\tgit_config(add_config, NULL);\n+\trepo_config(repo, add_config, NULL);\n \n \targc = parse_options(argc, argv, prefix, builtin_add_options,\n \t\t\t  builtin_add_usage, PARSE_OPT_KEEP_ARGV0);\n@@ -386,13 +396,13 @@ int cmd_add(int argc,\n \t\t\tdie(_(\"options '%s' and '%s' cannot be used together\"), \"--dry-run\", \"--interactive/--patch\");\n \t\tif (pathspec_from_file)\n \t\t\tdie(_(\"options '%s' and '%s' cannot be used together\"), \"--pathspec-from-file\", \"--interactive/--patch\");\n-\t\texit(interactive_add(argv + 1, prefix, patch_interactive));\n+\t\texit(interactive_add(repo, argv + 1, prefix, patch_interactive));\n \t}\n \n \tif (edit_interactive) {\n \t\tif (pathspec_from_file)\n \t\t\tdie(_(\"options '%s' and '%s' cannot be used together\"), \"--pathspec-from-file\", \"--edit\");\n-\t\treturn(edit_patch(argc, argv, prefix, the_repository));\n+\t\treturn(edit_patch(repo, argc, argv, prefix));\n \t}\n \targc--;\n \targv++;\n@@ -415,10 +425,10 @@ int cmd_add(int argc,\n \tadd_new_files = !take_worktree_changes && !refresh_only && !add_renormalize;\n \trequire_pathspec = !(take_worktree_changes || (0 < addremove_explicit));\n \n-\tprepare_repo_settings(the_repository);\n-\tthe_repository->settings.command_requires_full_index = 0;\n+\tprepare_repo_settings(repo);\n+\trepo->settings.command_requires_full_index = 0;\n \n-\trepo_hold_locked_index(the_repository, &lock_file, LOCK_DIE_ON_ERROR);\n+\trepo_hold_locked_index(repo, &lock_file, LOCK_DIE_ON_ERROR);\n \n \t/*\n \t * Check the \"pathspec '%s' did not match any files\" block\n@@ -459,11 +469,11 @@ int cmd_add(int argc,\n \t\t (!(addremove || take_worktree_changes)\n \t\t  ? ADD_CACHE_IGNORE_REMOVAL : 0));\n \n-\tif (repo_read_index_preload(the_repository, &pathspec, 0) < 0)\n+\tif (repo_read_index_preload(repo, &pathspec, 0) < 0)\n \t\tdie(_(\"index file corrupt\"));\n \n-\tdie_in_unpopulated_submodule(the_repository->index, prefix);\n-\tdie_path_inside_submodule(the_repository->index, &pathspec);\n+\tdie_in_unpopulated_submodule(repo->index, prefix);\n+\tdie_path_inside_submodule(repo->index, &pathspec);\n \n \tif (add_new_files) {\n \t\tint baselen;\n@@ -475,13 +485,13 @@ int cmd_add(int argc,\n \t\t}\n \n \t\t/* This picks up the paths that are not tracked */\n-\t\tbaselen = fill_directory(&dir, the_repository->index, &pathspec);\n+\t\tbaselen = fill_directory(&dir, repo->index, &pathspec);\n \t\tif (pathspec.nr)\n-\t\t\tseen = prune_directory(&dir, &pathspec, baselen);\n+\t\t\tseen = prune_directory(repo, &dir, &pathspec, baselen);\n \t}\n \n \tif (refresh_only) {\n-\t\texit_status |= refresh(verbose, &pathspec);\n+\t\texit_status |= refresh(repo, verbose, &pathspec);\n \t\tgoto finish;\n \t}\n \n@@ -492,7 +502,7 @@ int cmd_add(int argc,\n \n \t\tif (!seen)\n \t\t\tseen = find_pathspecs_matching_against_index(&pathspec,\n-\t\t\t\t\tthe_repository->index, PS_IGNORE_SKIP_WORKTREE);\n+\t\t\t\t\trepo->index, PS_IGNORE_SKIP_WORKTREE);\n \n \t\t/*\n \t\t * file_exists() assumes exact match\n@@ -528,8 +538,8 @@ int cmd_add(int argc,\n \t\t\t    !file_exists(path)) {\n \t\t\t\tif (ignore_missing) {\n \t\t\t\t\tint dtype = DT_UNKNOWN;\n-\t\t\t\t\tif (is_excluded(&dir, the_repository->index, path, &dtype))\n-\t\t\t\t\t\tdir_add_ignored(&dir, the_repository->index,\n+\t\t\t\t\tif (is_excluded(&dir, repo->index, path, &dtype))\n+\t\t\t\t\t\tdir_add_ignored(&dir, repo->index,\n \t\t\t\t\t\t\t\tpath, pathspec.items[i].len);\n \t\t\t\t} else\n \t\t\t\t\tdie(_(\"pathspec '%s' did not match any files\"),\n@@ -552,9 +562,9 @@ int cmd_add(int argc,\n \n \tps_matched = xcalloc(pathspec.nr, 1);\n \tif (add_renormalize)\n-\t\texit_status |= renormalize_tracked_files(&pathspec, flags);\n+\t\texit_status |= renormalize_tracked_files(repo, &pathspec, flags);\n \telse\n-\t\texit_status |= add_files_to_cache(the_repository, prefix,\n+\t\texit_status |= add_files_to_cache(repo, prefix,\n \t\t\t\t\t\t  &pathspec, ps_matched,\n \t\t\t\t\t\t  include_sparse, flags);\n \n@@ -563,14 +573,14 @@ int cmd_add(int argc,\n \t\texit(128);\n \n \tif (add_new_files)\n-\t\texit_status |= add_files(&dir, flags);\n+\t\texit_status |= add_files(repo, &dir, flags);\n \n \tif (chmod_arg && pathspec.nr)\n-\t\texit_status |= chmod_pathspec(&pathspec, chmod_arg[0], show_only);\n+\t\texit_status |= chmod_pathspec(repo, &pathspec, chmod_arg[0], show_only);\n \tend_odb_transaction();\n \n finish:\n-\tif (write_locked_index(the_repository->index, &lock_file,\n+\tif (write_locked_index(repo->index, &lock_file,\n \t\t\t       COMMIT_LOCK | SKIP_IF_UNCHANGED))\n \t\tdie(_(\"unable to write new index file\"));\n \ndiff --git a/builtin/commit.c b/builtin/commit.c\nindex fd1cc42c5a6..6c79923ee04 100644\n--- a/builtin/commit.c\n+++ b/builtin/commit.c\n@@ -395,7 +395,7 @@ static const char *prepare_index(const char **argv, const char *prefix,\n \t\told_index_env = xstrdup_or_null(getenv(INDEX_ENVIRONMENT));\n \t\tsetenv(INDEX_ENVIRONMENT, the_repository->index_file, 1);\n \n-\t\tif (interactive_add(argv, prefix, patch_interactive) != 0)\n+\t\tif (interactive_add(the_repository, argv, prefix, patch_interactive) != 0)\n \t\t\tdie(_(\"interactive add failed\"));\n \n \t\tthe_repository->index_file = old_repo_index_file;\ndiff --git a/commit.h b/commit.h\nindex 0e5fce543c2..c3ddaaf30f9 100644\n--- a/commit.h\n+++ b/commit.h\n@@ -253,7 +253,10 @@ struct oid_array;\n struct ref;\n int for_each_commit_graft(each_commit_graft_fn, void *);\n \n-int interactive_add(const char **argv, const char *prefix, int patch);\n+int interactive_add(struct repository *repo,\n+\t\t    const char **argv,\n+\t\t    const char *prefix,\n+\t\t    int patch);\n \n struct commit_extra_header {\n \tstruct commit_extra_header *next;\n-- \ngitgitgadget\n"},{"id":"502596","messageId":"434c8babbb140b7e66321deec0cd8e8a0d706475.1726001963.git.gitgitgadget@gmail.com","threadId":"62067","inReplyTo":"pull.1778.v2.git.git.1726001960.gitgitgadget@gmail.com","subject":"[PATCH v2 2/3] builtin: remove USE_THE_REPOSITORY_VARIABLE from builtin.h","fromName":"John Cai via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2024-09-10T20:59:19Z","receivedAt":"2024-09-10T20:59:39Z","isPatch":true,"sender":{"key":"johncai86@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2354211?v=4"},"body":"From: John Cai <johncai86@gmail.com>\n\nInstead of including USE_THE_REPOSITORY_VARIABLE by default on every\nbuiltin, remove it from builtin.h and add it to all the builtins that\nreference the_repository.\n\nAlso, remove the include statement for repository.h since it gets\nbrought in through builtin.h.\n\nThe next step will be to migrate each builtin\nfrom having to use the_repository.\n\nSigned-off-by: John Cai <johncai86@gmail.com>\n---\n builtin.h                          | 8 --------\n builtin/add.c                      | 3 +--\n builtin/am.c                       | 2 +-\n builtin/annotate.c                 | 2 ++\n builtin/apply.c                    | 2 +-\n builtin/archive.c                  | 2 +-\n builtin/bisect.c                   | 1 +\n builtin/blame.c                    | 3 +--\n builtin/branch.c                   | 2 +-\n builtin/bugreport.c                | 1 +\n builtin/bundle.c                   | 2 +-\n builtin/cat-file.c                 | 2 +-\n builtin/check-attr.c               | 2 +-\n builtin/check-ignore.c             | 2 +-\n builtin/check-mailmap.c            | 1 +\n builtin/checkout--worker.c         | 1 +\n builtin/checkout-index.c           | 3 +--\n builtin/checkout.c                 | 1 +\n builtin/clean.c                    | 3 +--\n builtin/clone.c                    | 3 ++-\n builtin/column.c                   | 1 +\n builtin/commit-graph.c             | 2 +-\n builtin/commit-tree.c              | 3 ++-\n builtin/commit.c                   | 2 +-\n builtin/config.c                   | 2 +-\n builtin/count-objects.c            | 3 +--\n builtin/credential-cache--daemon.c | 1 +\n builtin/credential-store.c         | 1 +\n builtin/credential.c               | 2 ++\n builtin/describe.c                 | 1 +\n builtin/diff-files.c               | 2 +-\n builtin/diff-index.c               | 2 +-\n builtin/diff-tree.c                | 2 +-\n builtin/diff.c                     | 2 +-\n builtin/difftool.c                 | 3 ++-\n builtin/fast-export.c              | 1 +\n builtin/fast-import.c              | 2 +-\n builtin/fetch-pack.c               | 1 +\n builtin/fetch.c                    | 2 +-\n builtin/fmt-merge-msg.c            | 1 +\n builtin/for-each-ref.c             | 1 +\n builtin/for-each-repo.c            | 2 +-\n builtin/fsck.c                     | 2 +-\n builtin/fsmonitor--daemon.c        | 3 ++-\n builtin/gc.c                       | 3 +--\n builtin/grep.c                     | 2 +-\n builtin/hash-object.c              | 1 +\n builtin/help.c                     | 2 ++\n builtin/hook.c                     | 1 +\n builtin/index-pack.c               | 1 +\n builtin/init-db.c                  | 2 +-\n builtin/interpret-trailers.c       | 2 +-\n builtin/log.c                      | 3 ++-\n builtin/ls-files.c                 | 2 +-\n builtin/ls-remote.c                | 1 +\n builtin/ls-tree.c                  | 2 ++\n builtin/mailinfo.c                 | 1 +\n builtin/merge-base.c               | 2 +-\n builtin/merge-file.c               | 1 +\n builtin/merge-index.c              | 2 +-\n builtin/merge-ours.c               | 3 ++-\n builtin/merge-recursive.c          | 2 +-\n builtin/merge-tree.c               | 2 +-\n builtin/merge.c                    | 3 ++-\n builtin/mktag.c                    | 1 +\n builtin/mktree.c                   | 1 +\n builtin/multi-pack-index.c         | 1 +\n builtin/mv.c                       | 3 ++-\n builtin/name-rev.c                 | 2 +-\n builtin/notes.c                    | 4 ++--\n builtin/pack-objects.c             | 2 +-\n builtin/pack-redundant.c           | 3 ++-\n builtin/pack-refs.c                | 2 +-\n builtin/patch-id.c                 | 1 +\n builtin/prune.c                    | 1 +\n builtin/pull.c                     | 1 +\n builtin/push.c                     | 2 +-\n builtin/range-diff.c               | 3 ++-\n builtin/read-tree.c                | 3 +--\n builtin/rebase.c                   | 3 ++-\n builtin/receive-pack.c             | 3 ++-\n builtin/reflog.c                   | 2 +-\n builtin/refs.c                     | 2 +-\n builtin/remote.c                   | 1 +\n builtin/repack.c                   | 1 +\n builtin/replace.c                  | 3 +--\n builtin/replay.c                   | 1 +\n builtin/rerere.c                   | 3 ++-\n builtin/reset.c                    | 2 +-\n builtin/rev-list.c                 | 1 +\n builtin/rev-parse.c                | 3 ++-\n builtin/revert.c                   | 2 +-\n builtin/rm.c                       | 4 ++--\n builtin/send-pack.c                | 1 +\n builtin/shortlog.c                 | 2 +-\n builtin/show-branch.c              | 3 ++-\n builtin/show-index.c               | 2 +-\n builtin/show-ref.c                 | 1 +\n builtin/sparse-checkout.c          | 2 +-\n builtin/stash.c                    | 1 +\n builtin/stripspace.c               | 1 +\n builtin/submodule--helper.c        | 3 ++-\n builtin/symbolic-ref.c             | 1 +\n builtin/tag.c                      | 2 +-\n builtin/unpack-file.c              | 1 +\n builtin/unpack-objects.c           | 1 +\n builtin/update-index.c             | 3 +--\n builtin/update-ref.c               | 2 +-\n builtin/update-server-info.c       | 1 +\n builtin/upload-archive.c           | 2 +-\n builtin/var.c                      | 2 ++\n builtin/verify-commit.c            | 2 +-\n builtin/verify-pack.c              | 1 +\n builtin/verify-tag.c               | 1 +\n builtin/worktree.c                 | 2 +-\n builtin/write-tree.c               | 3 +--\n 116 files changed, 138 insertions(+), 91 deletions(-)\n\ndiff --git a/builtin.h b/builtin.h\nindex fc6fc8ffed8..f7b166b3348 100644\n--- a/builtin.h\n+++ b/builtin.h\n@@ -1,14 +1,6 @@\n #ifndef BUILTIN_H\n #define BUILTIN_H\n \n-/*\n- * TODO: Almost all of our builtins access `the_repository` by necessity\n- * because they do not get passed a pointer to it. We should adapt the function\n- * signature of those main functions to accept a `struct repository *` and then\n- * remove the macro here.\n- */\n-#define USE_THE_REPOSITORY_VARIABLE\n-\n #include \"git-compat-util.h\"\n #include \"repository.h\"\n \ndiff --git a/builtin/add.c b/builtin/add.c\nindex ba331519cac..c893ff48d26 100644\n--- a/builtin/add.c\n+++ b/builtin/add.c\n@@ -3,7 +3,7 @@\n  *\n  * Copyright (C) 2006 Linus Torvalds\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"config.h\"\n@@ -18,7 +18,6 @@\n #include \"preload-index.h\"\n #include \"diff.h\"\n #include \"read-cache.h\"\n-#include \"repository.h\"\n #include \"revision.h\"\n #include \"bulk-checkin.h\"\n #include \"strvec.h\"\ndiff --git a/builtin/am.c b/builtin/am.c\nindex 8c610eed3e6..7693891fcde 100644\n--- a/builtin/am.c\n+++ b/builtin/am.c\n@@ -4,6 +4,7 @@\n  * Based on git-am.sh by Junio C Hamano.\n  */\n \n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"advice.h\"\n@@ -38,7 +39,6 @@\n #include \"string-list.h\"\n #include \"pager.h\"\n #include \"path.h\"\n-#include \"repository.h\"\n #include \"pretty.h\"\n \n /**\ndiff --git a/builtin/annotate.c b/builtin/annotate.c\nindex 0abf89ef186..a99179fe4dd 100644\n--- a/builtin/annotate.c\n+++ b/builtin/annotate.c\n@@ -3,6 +3,8 @@\n  *\n  * Copyright (C) 2006 Ryan Anderson\n  */\n+\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"git-compat-util.h\"\n #include \"builtin.h\"\n #include \"strvec.h\"\ndiff --git a/builtin/apply.c b/builtin/apply.c\nindex ca0bb97df40..84f1863d3ac 100644\n--- a/builtin/apply.c\n+++ b/builtin/apply.c\n@@ -1,6 +1,6 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n-#include \"repository.h\"\n #include \"hash.h\"\n #include \"apply.h\"\n \ndiff --git a/builtin/archive.c b/builtin/archive.c\nindex de59c3ae97a..22f7c63529f 100644\n--- a/builtin/archive.c\n+++ b/builtin/archive.c\n@@ -2,13 +2,13 @@\n  * Copyright (c) 2006 Franck Bui-Huu\n  * Copyright (c) 2006 Rene Scharfe\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"archive.h\"\n #include \"gettext.h\"\n #include \"transport.h\"\n #include \"parse-options.h\"\n #include \"pkt-line.h\"\n-#include \"repository.h\"\n \n static void create_output_file(const char *output_file)\n {\ndiff --git a/builtin/bisect.c b/builtin/bisect.c\nindex b83056df9f4..5e91c59c763 100644\n--- a/builtin/bisect.c\n+++ b/builtin/bisect.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"copy.h\"\n #include \"environment.h\"\ndiff --git a/builtin/blame.c b/builtin/blame.c\nindex 728a62402b5..472dd762f41 100644\n--- a/builtin/blame.c\n+++ b/builtin/blame.c\n@@ -4,7 +4,7 @@\n  * Copyright (c) 2006, 2014 by its authors\n  * See COPYING for licensing conditions\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"color.h\"\n@@ -12,7 +12,6 @@\n #include \"environment.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\n-#include \"repository.h\"\n #include \"commit.h\"\n #include \"diff.h\"\n #include \"revision.h\"\ndiff --git a/builtin/branch.c b/builtin/branch.c\nindex 7980d2e83d6..7112459ebd1 100644\n--- a/builtin/branch.c\n+++ b/builtin/branch.c\n@@ -4,7 +4,7 @@\n  * Copyright (c) 2006 Kristian Høgsberg <krh@redhat.com>\n  * Based on git-branch.sh by Junio C Hamano.\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"color.h\"\ndiff --git a/builtin/bugreport.c b/builtin/bugreport.c\nindex aeab40c4902..7c2df035c9c 100644\n--- a/builtin/bugreport.c\n+++ b/builtin/bugreport.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"editor.h\"\ndiff --git a/builtin/bundle.c b/builtin/bundle.c\nindex 97f7f530d0e..cabb20b44b8 100644\n--- a/builtin/bundle.c\n+++ b/builtin/bundle.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"gettext.h\"\n@@ -5,7 +6,6 @@\n #include \"strvec.h\"\n #include \"parse-options.h\"\n #include \"pkt-line.h\"\n-#include \"repository.h\"\n #include \"bundle.h\"\n \n /*\ndiff --git a/builtin/cat-file.c b/builtin/cat-file.c\nindex b244b5a1ab6..b9b754b354f 100644\n--- a/builtin/cat-file.c\n+++ b/builtin/cat-file.c\n@@ -3,7 +3,7 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"convert.h\"\ndiff --git a/builtin/check-attr.c b/builtin/check-attr.c\nindex ffd1067558d..7cf275b8937 100644\n--- a/builtin/check-attr.c\n+++ b/builtin/check-attr.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"attr.h\"\n@@ -5,7 +6,6 @@\n #include \"gettext.h\"\n #include \"object-name.h\"\n #include \"quote.h\"\n-#include \"repository.h\"\n #include \"setup.h\"\n #include \"parse-options.h\"\n #include \"write-or-die.h\"\ndiff --git a/builtin/check-ignore.c b/builtin/check-ignore.c\nindex 70565b9f892..7b7831d13a8 100644\n--- a/builtin/check-ignore.c\n+++ b/builtin/check-ignore.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"dir.h\"\n@@ -5,7 +6,6 @@\n #include \"quote.h\"\n #include \"pathspec.h\"\n #include \"parse-options.h\"\n-#include \"repository.h\"\n #include \"submodule.h\"\n #include \"write-or-die.h\"\n \ndiff --git a/builtin/check-mailmap.c b/builtin/check-mailmap.c\nindex 87cc036dd14..c0610469d40 100644\n--- a/builtin/check-mailmap.c\n+++ b/builtin/check-mailmap.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/checkout--worker.c b/builtin/checkout--worker.c\nindex f53e1082690..ff6cdccc21d 100644\n--- a/builtin/checkout--worker.c\n+++ b/builtin/checkout--worker.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"entry.h\"\ndiff --git a/builtin/checkout-index.c b/builtin/checkout-index.c\nindex 98247ff8236..6dd38eb05d4 100644\n--- a/builtin/checkout-index.c\n+++ b/builtin/checkout-index.c\n@@ -4,13 +4,12 @@\n  * Copyright (C) 2005 Linus Torvalds\n  *\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\n #include \"lockfile.h\"\n #include \"quote.h\"\n-#include \"repository.h\"\n #include \"cache-tree.h\"\n #include \"parse-options.h\"\n #include \"entry.h\"\ndiff --git a/builtin/checkout.c b/builtin/checkout.c\nindex d3bc48684f9..d6defc36b2b 100644\n--- a/builtin/checkout.c\n+++ b/builtin/checkout.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"branch.h\"\ndiff --git a/builtin/clean.c b/builtin/clean.c\nindex b5887f877e0..9c48dd02711 100644\n--- a/builtin/clean.c\n+++ b/builtin/clean.c\n@@ -5,7 +5,7 @@\n  *\n  * Based on git-clean.sh by Pavel Roskin\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"config.h\"\n@@ -14,7 +14,6 @@\n #include \"parse-options.h\"\n #include \"path.h\"\n #include \"read-cache-ll.h\"\n-#include \"repository.h\"\n #include \"setup.h\"\n #include \"string-list.h\"\n #include \"quote.h\"\ndiff --git a/builtin/clone.c b/builtin/clone.c\nindex 1b82310ac5b..e77339c8472 100644\n--- a/builtin/clone.c\n+++ b/builtin/clone.c\n@@ -7,8 +7,9 @@\n  *\n  * Clone a repository into a different directory that does not yet exist.\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+\n #include \"abspath.h\"\n #include \"advice.h\"\n #include \"config.h\"\ndiff --git a/builtin/column.c b/builtin/column.c\nindex 93f84beeee7..50314cc2559 100644\n--- a/builtin/column.c\n+++ b/builtin/column.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/commit-graph.c b/builtin/commit-graph.c\nindex 65ce98d4675..81e577c14ae 100644\n--- a/builtin/commit-graph.c\n+++ b/builtin/commit-graph.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"commit.h\"\n #include \"config.h\"\n@@ -5,7 +6,6 @@\n #include \"gettext.h\"\n #include \"hex.h\"\n #include \"parse-options.h\"\n-#include \"repository.h\"\n #include \"commit-graph.h\"\n #include \"object-store-ll.h\"\n #include \"progress.h\"\ndiff --git a/builtin/commit-tree.c b/builtin/commit-tree.c\nindex bd8bf3296ed..2ca1a57ebbb 100644\n--- a/builtin/commit-tree.c\n+++ b/builtin/commit-tree.c\n@@ -3,13 +3,14 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\n #include \"object-name.h\"\n #include \"object-store-ll.h\"\n-#include \"repository.h\"\n+\n #include \"commit.h\"\n #include \"parse-options.h\"\n \ndiff --git a/builtin/commit.c b/builtin/commit.c\nindex 768d76ac461..fd1cc42c5a6 100644\n--- a/builtin/commit.c\n+++ b/builtin/commit.c\n@@ -4,7 +4,7 @@\n  * Copyright (c) 2007 Kristian Høgsberg <krh@redhat.com>\n  * Based on git-commit.sh by Junio C Hamano and Linus Torvalds\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"config.h\"\ndiff --git a/builtin/config.c b/builtin/config.c\nindex 841a5d706f4..faa0ee7d65e 100644\n--- a/builtin/config.c\n+++ b/builtin/config.c\n@@ -1,10 +1,10 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"config.h\"\n #include \"color.h\"\n #include \"editor.h\"\n #include \"environment.h\"\n-#include \"repository.h\"\n #include \"gettext.h\"\n #include \"ident.h\"\n #include \"parse-options.h\"\ndiff --git a/builtin/count-objects.c b/builtin/count-objects.c\nindex 6b905da3c3d..3d7b289f597 100644\n--- a/builtin/count-objects.c\n+++ b/builtin/count-objects.c\n@@ -3,14 +3,13 @@\n  *\n  * Copyright (c) 2006 Junio C Hamano\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"dir.h\"\n #include \"environment.h\"\n #include \"gettext.h\"\n #include \"path.h\"\n-#include \"repository.h\"\n #include \"parse-options.h\"\n #include \"quote.h\"\n #include \"packfile.h\"\ndiff --git a/builtin/credential-cache--daemon.c b/builtin/credential-cache--daemon.c\nindex 4caaf38b841..bc22f5c6d24 100644\n--- a/builtin/credential-cache--daemon.c\n+++ b/builtin/credential-cache--daemon.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/credential-store.c b/builtin/credential-store.c\nindex 128704078e9..e669e99dbfb 100644\n--- a/builtin/credential-store.c\n+++ b/builtin/credential-store.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/credential.c b/builtin/credential.c\nindex 796422c6fe7..14c8c6608b2 100644\n--- a/builtin/credential.c\n+++ b/builtin/credential.c\n@@ -1,3 +1,5 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n+\n #include \"git-compat-util.h\"\n #include \"credential.h\"\n #include \"builtin.h\"\ndiff --git a/builtin/describe.c b/builtin/describe.c\nindex 1c1c250fe0c..7929223c8b2 100644\n--- a/builtin/describe.c\n+++ b/builtin/describe.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"environment.h\"\ndiff --git a/builtin/diff-files.c b/builtin/diff-files.c\nindex 7f4f9bcb3eb..b8ec420f867 100644\n--- a/builtin/diff-files.c\n+++ b/builtin/diff-files.c\n@@ -3,13 +3,13 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"diff.h\"\n #include \"diff-merges.h\"\n #include \"commit.h\"\n #include \"preload-index.h\"\n-#include \"repository.h\"\n #include \"revision.h\"\n \n static const char diff_files_usage[] =\ndiff --git a/builtin/diff-index.c b/builtin/diff-index.c\nindex 8abec38592f..e87f717d86e 100644\n--- a/builtin/diff-index.c\n+++ b/builtin/diff-index.c\n@@ -1,10 +1,10 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"diff.h\"\n #include \"diff-merges.h\"\n #include \"commit.h\"\n #include \"preload-index.h\"\n-#include \"repository.h\"\n #include \"revision.h\"\n #include \"setup.h\"\n \ndiff --git a/builtin/diff-tree.c b/builtin/diff-tree.c\nindex 841448b023f..715995c46fa 100644\n--- a/builtin/diff-tree.c\n+++ b/builtin/diff-tree.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"diff.h\"\n@@ -6,7 +7,6 @@\n #include \"hex.h\"\n #include \"log-tree.h\"\n #include \"read-cache-ll.h\"\n-#include \"repository.h\"\n #include \"revision.h\"\n #include \"tmp-objdir.h\"\n #include \"tree.h\"\ndiff --git a/builtin/diff.c b/builtin/diff.c\nindex 499b7872dd4..63e790b2291 100644\n--- a/builtin/diff.c\n+++ b/builtin/diff.c\n@@ -3,7 +3,7 @@\n  *\n  * Copyright (c) 2006 Junio C Hamano\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"ewah/ewok.h\"\ndiff --git a/builtin/difftool.c b/builtin/difftool.c\nindex c8700d67f4d..f7dfa1fd0da 100644\n--- a/builtin/difftool.c\n+++ b/builtin/difftool.c\n@@ -11,8 +11,9 @@\n  *\n  * Copyright (C) 2016 Johannes Schindelin\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+\n #include \"abspath.h\"\n #include \"config.h\"\n #include \"copy.h\"\ndiff --git a/builtin/fast-export.c b/builtin/fast-export.c\nindex 1bd5949dd24..e17f262e8e4 100644\n--- a/builtin/fast-export.c\n+++ b/builtin/fast-export.c\n@@ -3,6 +3,7 @@\n  *\n  * Copyright (C) 2007 Johannes E. Schindelin\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/fast-import.c b/builtin/fast-import.c\nindex 4b9e341aa44..1e7ab67f6e5 100644\n--- a/builtin/fast-import.c\n+++ b/builtin/fast-import.c\n@@ -1,9 +1,9 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"environment.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\n-#include \"repository.h\"\n #include \"config.h\"\n #include \"lockfile.h\"\n #include \"object.h\"\ndiff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c\nindex fddd8a2c1cd..d2c4304d222 100644\n--- a/builtin/fetch-pack.c\n+++ b/builtin/fetch-pack.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\ndiff --git a/builtin/fetch.c b/builtin/fetch.c\nindex 46ecfc5bc62..9e68114b866 100644\n--- a/builtin/fetch.c\n+++ b/builtin/fetch.c\n@@ -1,13 +1,13 @@\n /*\n  * \"git fetch\"\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"config.h\"\n #include \"gettext.h\"\n #include \"environment.h\"\n #include \"hex.h\"\n-#include \"repository.h\"\n #include \"refs.h\"\n #include \"refspec.h\"\n #include \"object-name.h\"\ndiff --git a/builtin/fmt-merge-msg.c b/builtin/fmt-merge-msg.c\nindex 1fba4cf5590..324e904ac93 100644\n--- a/builtin/fmt-merge-msg.c\n+++ b/builtin/fmt-merge-msg.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"fmt-merge-msg.h\"\ndiff --git a/builtin/for-each-ref.c b/builtin/for-each-ref.c\nindex b1187587135..8085ebd8fe9 100644\n--- a/builtin/for-each-ref.c\n+++ b/builtin/for-each-ref.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"commit.h\"\n #include \"config.h\"\ndiff --git a/builtin/for-each-repo.c b/builtin/for-each-repo.c\nindex 93d82b952e9..fae7f91cf15 100644\n--- a/builtin/for-each-repo.c\n+++ b/builtin/for-each-repo.c\n@@ -1,9 +1,9 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\n #include \"parse-options.h\"\n #include \"path.h\"\n-#include \"repository.h\"\n #include \"run-command.h\"\n #include \"string-list.h\"\n \ndiff --git a/builtin/fsck.c b/builtin/fsck.c\nindex 87068cee09d..7f4e2f04143 100644\n--- a/builtin/fsck.c\n+++ b/builtin/fsck.c\n@@ -1,7 +1,7 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\n-#include \"repository.h\"\n #include \"config.h\"\n #include \"commit.h\"\n #include \"tree.h\"\ndiff --git a/builtin/fsmonitor--daemon.c b/builtin/fsmonitor--daemon.c\nindex 73a4b885661..ba8a6eebe5d 100644\n--- a/builtin/fsmonitor--daemon.c\n+++ b/builtin/fsmonitor--daemon.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"config.h\"\n@@ -11,7 +12,7 @@\n #include \"compat/fsmonitor/fsm-health.h\"\n #include \"compat/fsmonitor/fsm-listen.h\"\n #include \"fsmonitor--daemon.h\"\n-#include \"repository.h\"\n+\n #include \"simple-ipc.h\"\n #include \"khash.h\"\n #include \"run-command.h\"\ndiff --git a/builtin/gc.c b/builtin/gc.c\nindex 0727de1ae8e..6bc8f7e7f81 100644\n--- a/builtin/gc.c\n+++ b/builtin/gc.c\n@@ -9,13 +9,12 @@\n  *\n  * Copyright (c) 2006 Shawn O. Pearce\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"date.h\"\n #include \"environment.h\"\n #include \"hex.h\"\n-#include \"repository.h\"\n #include \"config.h\"\n #include \"tempfile.h\"\n #include \"lockfile.h\"\ndiff --git a/builtin/grep.c b/builtin/grep.c\nindex da11879c637..bc3439cabd5 100644\n--- a/builtin/grep.c\n+++ b/builtin/grep.c\n@@ -3,11 +3,11 @@\n  *\n  * Copyright (c) 2006 Junio C Hamano\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\n-#include \"repository.h\"\n #include \"config.h\"\n #include \"tag.h\"\n #include \"tree-walk.h\"\ndiff --git a/builtin/hash-object.c b/builtin/hash-object.c\nindex 090daea5cd8..a25f0403f44 100644\n--- a/builtin/hash-object.c\n+++ b/builtin/hash-object.c\n@@ -4,6 +4,7 @@\n  * Copyright (C) Linus Torvalds, 2005\n  * Copyright (C) Junio C Hamano, 2005\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"config.h\"\ndiff --git a/builtin/help.c b/builtin/help.c\nindex f7723bdf5c8..9c4cfe11d9e 100644\n--- a/builtin/help.c\n+++ b/builtin/help.c\n@@ -1,6 +1,8 @@\n+\n /*\n  * Builtin help command\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"exec-cmd.h\"\ndiff --git a/builtin/hook.c b/builtin/hook.c\nindex f02e2421ac0..367ef3e0b89 100644\n--- a/builtin/hook.c\n+++ b/builtin/hook.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/index-pack.c b/builtin/index-pack.c\nindex 3207130bfee..32641134e93 100644\n--- a/builtin/index-pack.c\n+++ b/builtin/index-pack.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"delta.h\"\ndiff --git a/builtin/init-db.c b/builtin/init-db.c\nindex 94bd6075095..687cada4d7e 100644\n--- a/builtin/init-db.c\n+++ b/builtin/init-db.c\n@@ -3,6 +3,7 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"environment.h\"\n@@ -11,7 +12,6 @@\n #include \"parse-options.h\"\n #include \"path.h\"\n #include \"refs.h\"\n-#include \"repository.h\"\n #include \"setup.h\"\n #include \"strbuf.h\"\n \ndiff --git a/builtin/interpret-trailers.c b/builtin/interpret-trailers.c\nindex fb93e54e5ea..44f83625c11 100644\n--- a/builtin/interpret-trailers.c\n+++ b/builtin/interpret-trailers.c\n@@ -4,7 +4,7 @@\n  * Copyright (c) 2013, 2014 Christian Couder <chriscool@tuxfamily.org>\n  *\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"parse-options.h\"\ndiff --git a/builtin/log.c b/builtin/log.c\nindex 67140575f4b..e4533a99fda 100644\n--- a/builtin/log.c\n+++ b/builtin/log.c\n@@ -4,6 +4,7 @@\n  * (C) Copyright 2006 Linus Torvalds\n  *\t\t 2006 Junio Hamano\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"config.h\"\n@@ -37,7 +38,7 @@\n #include \"mailmap.h\"\n #include \"progress.h\"\n #include \"commit-slab.h\"\n-#include \"repository.h\"\n+\n #include \"commit-reach.h\"\n #include \"range-diff.h\"\n #include \"tmp-objdir.h\"\ndiff --git a/builtin/ls-files.c b/builtin/ls-files.c\nindex 7f45cb62cf6..6aaba08e305 100644\n--- a/builtin/ls-files.c\n+++ b/builtin/ls-files.c\n@@ -5,8 +5,8 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n-#include \"repository.h\"\n #include \"config.h\"\n #include \"convert.h\"\n #include \"quote.h\"\ndiff --git a/builtin/ls-remote.c b/builtin/ls-remote.c\nindex f2c2854d0c3..f723b3bf3bb 100644\n--- a/builtin/ls-remote.c\n+++ b/builtin/ls-remote.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\ndiff --git a/builtin/ls-tree.c b/builtin/ls-tree.c\nindex 363cb948d92..8542b5d53e4 100644\n--- a/builtin/ls-tree.c\n+++ b/builtin/ls-tree.c\n@@ -3,7 +3,9 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+\n #include \"config.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\ndiff --git a/builtin/mailinfo.c b/builtin/mailinfo.c\nindex 00bfcd1afa0..e17dec27b1d 100644\n--- a/builtin/mailinfo.c\n+++ b/builtin/mailinfo.c\n@@ -2,6 +2,7 @@\n  * Another stupid program, this one parsing the headers of an\n  * email to figure out authorship and subject\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"environment.h\"\ndiff --git a/builtin/merge-base.c b/builtin/merge-base.c\nindex afeae8d8346..a20c93b11aa 100644\n--- a/builtin/merge-base.c\n+++ b/builtin/merge-base.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"commit.h\"\n@@ -5,7 +6,6 @@\n #include \"hex.h\"\n #include \"object-name.h\"\n #include \"parse-options.h\"\n-#include \"repository.h\"\n #include \"commit-reach.h\"\n \n static int show_merge_base(struct commit **rev, int rev_nr, int show_all)\ndiff --git a/builtin/merge-file.c b/builtin/merge-file.c\nindex f785813ddae..cb42865eb52 100644\n--- a/builtin/merge-file.c\n+++ b/builtin/merge-file.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"diff.h\"\ndiff --git a/builtin/merge-index.c b/builtin/merge-index.c\nindex 1309a8ff471..a5b87ee3c5e 100644\n--- a/builtin/merge-index.c\n+++ b/builtin/merge-index.c\n@@ -1,7 +1,7 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"hex.h\"\n #include \"read-cache-ll.h\"\n-#include \"repository.h\"\n #include \"run-command.h\"\n #include \"sparse-index.h\"\n \ndiff --git a/builtin/merge-ours.c b/builtin/merge-ours.c\nindex 62267f12dd8..1fcf53f0054 100644\n--- a/builtin/merge-ours.c\n+++ b/builtin/merge-ours.c\n@@ -7,10 +7,11 @@\n  *\n  * Pretend we resolved the heads, but declare our tree trumps everybody else.\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"git-compat-util.h\"\n #include \"builtin.h\"\n #include \"diff.h\"\n-#include \"repository.h\"\n+\n \n static const char builtin_merge_ours_usage[] =\n \t\"git merge-ours <base>... -- HEAD <remote>...\";\ndiff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c\nindex 2bd3fb0e553..1dd295558b2 100644\n--- a/builtin/merge-recursive.c\n+++ b/builtin/merge-recursive.c\n@@ -1,10 +1,10 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"gettext.h\"\n #include \"hash.h\"\n #include \"merge-recursive.h\"\n #include \"object-name.h\"\n-#include \"repository.h\"\n \n static const char builtin_merge_recursive_usage[] =\n \t\"git %s <base>... -- <head> <remote> ...\";\ndiff --git a/builtin/merge-tree.c b/builtin/merge-tree.c\nindex 8751d86fd0f..33f91872f9e 100644\n--- a/builtin/merge-tree.c\n+++ b/builtin/merge-tree.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"tree-walk.h\"\n #include \"xdiff-interface.h\"\n@@ -10,7 +11,6 @@\n #include \"object-name.h\"\n #include \"object-store-ll.h\"\n #include \"parse-options.h\"\n-#include \"repository.h\"\n #include \"blob.h\"\n #include \"merge-blobs.h\"\n #include \"quote.h\"\ndiff --git a/builtin/merge.c b/builtin/merge.c\nindex fd6dc00d6c0..c54ac7b67c6 100644\n--- a/builtin/merge.c\n+++ b/builtin/merge.c\n@@ -5,8 +5,9 @@\n  *\n  * Based on git-merge.sh by Junio C Hamano.\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+\n #include \"abspath.h\"\n #include \"advice.h\"\n #include \"config.h\"\ndiff --git a/builtin/mktag.c b/builtin/mktag.c\nindex 5cd8a3e6fa0..6e188dce50a 100644\n--- a/builtin/mktag.c\n+++ b/builtin/mktag.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\ndiff --git a/builtin/mktree.c b/builtin/mktree.c\nindex 72a1af1bca5..3c16faa40e3 100644\n--- a/builtin/mktree.c\n+++ b/builtin/mktree.c\n@@ -3,6 +3,7 @@\n  *\n  * Copyright (c) Junio C Hamano, 2006, 2009\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\ndiff --git a/builtin/multi-pack-index.c b/builtin/multi-pack-index.c\nindex 154fc77075f..e397723fe09 100644\n--- a/builtin/multi-pack-index.c\n+++ b/builtin/multi-pack-index.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"config.h\"\ndiff --git a/builtin/mv.c b/builtin/mv.c\nindex 6e2eb9cf4b8..472a2787376 100644\n--- a/builtin/mv.c\n+++ b/builtin/mv.c\n@@ -3,6 +3,7 @@\n  *\n  * Copyright (C) 2006 Johannes Schindelin\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n \n #include \"builtin.h\"\n #include \"abspath.h\"\n@@ -18,7 +19,7 @@\n #include \"string-list.h\"\n #include \"parse-options.h\"\n #include \"read-cache-ll.h\"\n-#include \"repository.h\"\n+\n #include \"setup.h\"\n #include \"strvec.h\"\n #include \"submodule.h\"\ndiff --git a/builtin/name-rev.c b/builtin/name-rev.c\nindex 19d92fb382d..7f08c38629c 100644\n--- a/builtin/name-rev.c\n+++ b/builtin/name-rev.c\n@@ -1,8 +1,8 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"environment.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\n-#include \"repository.h\"\n #include \"config.h\"\n #include \"commit.h\"\n #include \"tag.h\"\ndiff --git a/builtin/notes.c b/builtin/notes.c\nindex 49d8364af60..55ce2eb919a 100644\n--- a/builtin/notes.c\n+++ b/builtin/notes.c\n@@ -6,7 +6,7 @@\n  * Based on git-notes.sh by Johannes Schindelin,\n  * and builtin/tag.c by Kristian Høgsberg and Carlos Rica.\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"editor.h\"\n@@ -17,7 +17,7 @@\n #include \"object-name.h\"\n #include \"object-store-ll.h\"\n #include \"path.h\"\n-#include \"repository.h\"\n+\n #include \"pretty.h\"\n #include \"refs.h\"\n #include \"exec-cmd.h\"\ndiff --git a/builtin/pack-objects.c b/builtin/pack-objects.c\nindex 127972f3cdf..40c64f33779 100644\n--- a/builtin/pack-objects.c\n+++ b/builtin/pack-objects.c\n@@ -1,8 +1,8 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"environment.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\n-#include \"repository.h\"\n #include \"config.h\"\n #include \"attr.h\"\n #include \"object.h\"\ndiff --git a/builtin/pack-redundant.c b/builtin/pack-redundant.c\nindex 84f0d83affb..81f4494d466 100644\n--- a/builtin/pack-redundant.c\n+++ b/builtin/pack-redundant.c\n@@ -5,11 +5,12 @@\n * This file is licensed under the GPL v2.\n *\n */\n+#define USE_THE_REPOSITORY_VARIABLE\n \n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\n-#include \"repository.h\"\n+\n #include \"packfile.h\"\n #include \"object-store-ll.h\"\n \ndiff --git a/builtin/pack-refs.c b/builtin/pack-refs.c\nindex 67dabb39756..2d83c1ed2ac 100644\n--- a/builtin/pack-refs.c\n+++ b/builtin/pack-refs.c\n@@ -1,9 +1,9 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\n #include \"parse-options.h\"\n #include \"refs.h\"\n-#include \"repository.h\"\n #include \"revision.h\"\n \n static char const * const pack_refs_usage[] = {\ndiff --git a/builtin/patch-id.c b/builtin/patch-id.c\nindex fa31a1b7a60..704044c2eb9 100644\n--- a/builtin/patch-id.c\n+++ b/builtin/patch-id.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"diff.h\"\ndiff --git a/builtin/prune.c b/builtin/prune.c\nindex cbd4c38fa0a..f439d1b5bb9 100644\n--- a/builtin/prune.c\n+++ b/builtin/prune.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"commit.h\"\n #include \"diff.h\"\ndiff --git a/builtin/pull.c b/builtin/pull.c\nindex 1a926f0b0d7..149f2013205 100644\n--- a/builtin/pull.c\n+++ b/builtin/pull.c\n@@ -6,6 +6,7 @@\n  * Fetch one or more remote refs and merge it/them into the current HEAD.\n  */\n \n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"config.h\"\ndiff --git a/builtin/push.c b/builtin/push.c\nindex 9636ad52f4d..238cd5da829 100644\n--- a/builtin/push.c\n+++ b/builtin/push.c\n@@ -1,6 +1,7 @@\n /*\n  * \"git push\"\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"branch.h\"\n@@ -13,7 +14,6 @@\n #include \"transport.h\"\n #include \"parse-options.h\"\n #include \"pkt-line.h\"\n-#include \"repository.h\"\n #include \"submodule.h\"\n #include \"submodule-config.h\"\n #include \"send-pack.h\"\ndiff --git a/builtin/range-diff.c b/builtin/range-diff.c\nindex 3e67259aecc..1b33ab66a7b 100644\n--- a/builtin/range-diff.c\n+++ b/builtin/range-diff.c\n@@ -1,10 +1,11 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"object-name.h\"\n #include \"parse-options.h\"\n #include \"range-diff.h\"\n #include \"config.h\"\n-#include \"repository.h\"\n+\n \n static const char * const builtin_range_diff_usage[] = {\n N_(\"git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>\"),\ndiff --git a/builtin/read-tree.c b/builtin/read-tree.c\nindex 89410db6a7a..d2a807a828b 100644\n--- a/builtin/read-tree.c\n+++ b/builtin/read-tree.c\n@@ -3,7 +3,7 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\n@@ -16,7 +16,6 @@\n #include \"cache-tree.h\"\n #include \"unpack-trees.h\"\n #include \"parse-options.h\"\n-#include \"repository.h\"\n #include \"resolve-undo.h\"\n #include \"setup.h\"\n #include \"sparse-index.h\"\ndiff --git a/builtin/rebase.c b/builtin/rebase.c\nindex 727d9df847f..d2ad7d08631 100644\n--- a/builtin/rebase.c\n+++ b/builtin/rebase.c\n@@ -3,8 +3,9 @@\n  *\n  * Copyright (c) 2018 Pratik Karki\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+\n #include \"abspath.h\"\n #include \"environment.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/receive-pack.c b/builtin/receive-pack.c\nindex 36a6229c2a4..c4b766c6137 100644\n--- a/builtin/receive-pack.c\n+++ b/builtin/receive-pack.c\n@@ -1,6 +1,7 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n-#include \"repository.h\"\n+\n #include \"config.h\"\n #include \"environment.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/reflog.c b/builtin/reflog.c\nindex 6250f5ad49f..22df6834f71 100644\n--- a/builtin/reflog.c\n+++ b/builtin/reflog.c\n@@ -1,7 +1,7 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\n-#include \"repository.h\"\n #include \"revision.h\"\n #include \"reachable.h\"\n #include \"wildmatch.h\"\ndiff --git a/builtin/refs.c b/builtin/refs.c\nindex 70bca724d2a..24978a7b7b0 100644\n--- a/builtin/refs.c\n+++ b/builtin/refs.c\n@@ -1,9 +1,9 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"fsck.h\"\n #include \"parse-options.h\"\n #include \"refs.h\"\n-#include \"repository.h\"\n #include \"strbuf.h\"\n \n #define REFS_MIGRATE_USAGE \\\ndiff --git a/builtin/remote.c b/builtin/remote.c\nindex 1ac7e5fbce3..61a82e515b9 100644\n--- a/builtin/remote.c\n+++ b/builtin/remote.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/repack.c b/builtin/repack.c\nindex a6f2a4de1b8..1e2286d93a1 100644\n--- a/builtin/repack.c\n+++ b/builtin/repack.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"dir.h\"\ndiff --git a/builtin/replace.c b/builtin/replace.c\nindex 293ae6d327f..2daed943735 100644\n--- a/builtin/replace.c\n+++ b/builtin/replace.c\n@@ -7,7 +7,7 @@\n  * and Carlos Rica <jasampler@gmail.com> that was itself based on\n  * git-tag.sh and mktag.c by Linus Torvalds.\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"editor.h\"\n@@ -22,7 +22,6 @@\n #include \"object-name.h\"\n #include \"object-store-ll.h\"\n #include \"replace-object.h\"\n-#include \"repository.h\"\n #include \"tag.h\"\n #include \"wildmatch.h\"\n \ndiff --git a/builtin/replay.c b/builtin/replay.c\nindex c8e9098fc12..2d12a4e403f 100644\n--- a/builtin/replay.c\n+++ b/builtin/replay.c\n@@ -4,6 +4,7 @@\n \n #include \"git-compat-util.h\"\n \n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"environment.h\"\n #include \"hex.h\"\ndiff --git a/builtin/rerere.c b/builtin/rerere.c\nindex ae345155834..f7143c3f5d5 100644\n--- a/builtin/rerere.c\n+++ b/builtin/rerere.c\n@@ -1,8 +1,9 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\n #include \"parse-options.h\"\n-#include \"repository.h\"\n+\n #include \"string-list.h\"\n #include \"rerere.h\"\n #include \"xdiff/xdiff.h\"\ndiff --git a/builtin/reset.c b/builtin/reset.c\nindex 75529072606..cb054c2cc0e 100644\n--- a/builtin/reset.c\n+++ b/builtin/reset.c\n@@ -7,7 +7,7 @@\n  *\n  * Copyright (c) 2005, 2006 Linus Torvalds and Junio C Hamano\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"config.h\"\ndiff --git a/builtin/rev-list.c b/builtin/rev-list.c\nindex a4186d47ce3..f62bcbf2b14 100644\n--- a/builtin/rev-list.c\n+++ b/builtin/rev-list.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"commit.h\"\ndiff --git a/builtin/rev-parse.c b/builtin/rev-parse.c\nindex 26190aaa3ed..f2d90f69952 100644\n--- a/builtin/rev-parse.c\n+++ b/builtin/rev-parse.c\n@@ -3,8 +3,9 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+\n #include \"abspath.h\"\n #include \"config.h\"\n #include \"commit.h\"\ndiff --git a/builtin/revert.c b/builtin/revert.c\nindex 5f2ec3ade73..55ba1092c52 100644\n--- a/builtin/revert.c\n+++ b/builtin/revert.c\n@@ -1,9 +1,9 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"git-compat-util.h\"\n #include \"builtin.h\"\n #include \"parse-options.h\"\n #include \"diff.h\"\n #include \"gettext.h\"\n-#include \"repository.h\"\n #include \"revision.h\"\n #include \"rerere.h\"\n #include \"sequencer.h\"\ndiff --git a/builtin/rm.c b/builtin/rm.c\nindex 59077efa4b4..eaff027258d 100644\n--- a/builtin/rm.c\n+++ b/builtin/rm.c\n@@ -3,7 +3,7 @@\n  *\n  * Copyright (C) Linus Torvalds 2006\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"config.h\"\n@@ -15,7 +15,7 @@\n #include \"object-name.h\"\n #include \"parse-options.h\"\n #include \"read-cache.h\"\n-#include \"repository.h\"\n+\n #include \"string-list.h\"\n #include \"setup.h\"\n #include \"sparse-index.h\"\ndiff --git a/builtin/send-pack.c b/builtin/send-pack.c\nindex a4925ed5fd1..4fd3cb8a357 100644\n--- a/builtin/send-pack.c\n+++ b/builtin/send-pack.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"hex.h\"\ndiff --git a/builtin/shortlog.c b/builtin/shortlog.c\nindex 70eb7890334..3ed5c460786 100644\n--- a/builtin/shortlog.c\n+++ b/builtin/shortlog.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"commit.h\"\n@@ -5,7 +6,6 @@\n #include \"environment.h\"\n #include \"gettext.h\"\n #include \"string-list.h\"\n-#include \"repository.h\"\n #include \"revision.h\"\n #include \"utf8.h\"\n #include \"mailmap.h\"\ndiff --git a/builtin/show-branch.c b/builtin/show-branch.c\nindex 05c10628df9..cd6bdf63bc1 100644\n--- a/builtin/show-branch.c\n+++ b/builtin/show-branch.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"environment.h\"\n@@ -10,7 +11,7 @@\n #include \"strvec.h\"\n #include \"object-name.h\"\n #include \"parse-options.h\"\n-#include \"repository.h\"\n+\n #include \"dir.h\"\n #include \"commit-slab.h\"\n #include \"date.h\"\ndiff --git a/builtin/show-index.c b/builtin/show-index.c\nindex 9e1f7ac9ca5..f164c01bbea 100644\n--- a/builtin/show-index.c\n+++ b/builtin/show-index.c\n@@ -1,10 +1,10 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"hash.h\"\n #include \"hex.h\"\n #include \"pack.h\"\n #include \"parse-options.h\"\n-#include \"repository.h\"\n \n static const char *const show_index_usage[] = {\n \t\"git show-index [--object-format=<hash-algorithm>]\",\ndiff --git a/builtin/show-ref.c b/builtin/show-ref.c\nindex 6ee05f09a69..285cd3e4338 100644\n--- a/builtin/show-ref.c\n+++ b/builtin/show-ref.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/sparse-checkout.c b/builtin/sparse-checkout.c\nindex 23f1548fe54..5e930e5d639 100644\n--- a/builtin/sparse-checkout.c\n+++ b/builtin/sparse-checkout.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"dir.h\"\n@@ -7,7 +8,6 @@\n #include \"object-name.h\"\n #include \"parse-options.h\"\n #include \"pathspec.h\"\n-#include \"repository.h\"\n #include \"strbuf.h\"\n #include \"string-list.h\"\n #include \"lockfile.h\"\ndiff --git a/builtin/stash.c b/builtin/stash.c\nindex 518d297b47b..461cfaef39a 100644\n--- a/builtin/stash.c\n+++ b/builtin/stash.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"config.h\"\ndiff --git a/builtin/stripspace.c b/builtin/stripspace.c\nindex 674ef939769..e147f3ff92c 100644\n--- a/builtin/stripspace.c\n+++ b/builtin/stripspace.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"environment.h\"\ndiff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c\nindex 947bd9d0f6a..b83d44ba6dc 100644\n--- a/builtin/submodule--helper.c\n+++ b/builtin/submodule--helper.c\n@@ -1,9 +1,10 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"environment.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\n-#include \"repository.h\"\n+\n #include \"config.h\"\n #include \"parse-options.h\"\n #include \"quote.h\"\ndiff --git a/builtin/symbolic-ref.c b/builtin/symbolic-ref.c\nindex 9bc70229468..299d23d76a8 100644\n--- a/builtin/symbolic-ref.c\n+++ b/builtin/symbolic-ref.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/tag.c b/builtin/tag.c\nindex a80838eb8e0..ca2166e7e21 100644\n--- a/builtin/tag.c\n+++ b/builtin/tag.c\n@@ -5,7 +5,7 @@\n  *                    Carlos Rica <jasampler@gmail.com>\n  * Based on git-tag.sh and mktag.c by Linus Torvalds.\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"config.h\"\ndiff --git a/builtin/unpack-file.c b/builtin/unpack-file.c\nindex 97886840f8d..6da28257539 100644\n--- a/builtin/unpack-file.c\n+++ b/builtin/unpack-file.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"hex.h\"\ndiff --git a/builtin/unpack-objects.c b/builtin/unpack-objects.c\nindex 3bcdaaeb5fa..02b8d02f63f 100644\n--- a/builtin/unpack-objects.c\n+++ b/builtin/unpack-objects.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"bulk-checkin.h\"\n #include \"config.h\"\ndiff --git a/builtin/update-index.c b/builtin/update-index.c\nindex 1d1d87d08e3..a1a98aa7bca 100644\n--- a/builtin/update-index.c\n+++ b/builtin/update-index.c\n@@ -3,7 +3,7 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"bulk-checkin.h\"\n #include \"config.h\"\n@@ -22,7 +22,6 @@\n #include \"pathspec.h\"\n #include \"dir.h\"\n #include \"read-cache.h\"\n-#include \"repository.h\"\n #include \"setup.h\"\n #include \"sparse-index.h\"\n #include \"split-index.h\"\ndiff --git a/builtin/update-ref.c b/builtin/update-ref.c\nindex 06826a90515..8a98615dc86 100644\n--- a/builtin/update-ref.c\n+++ b/builtin/update-ref.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\n@@ -6,7 +7,6 @@\n #include \"object-name.h\"\n #include \"parse-options.h\"\n #include \"quote.h\"\n-#include \"repository.h\"\n \n static const char * const git_update_ref_usage[] = {\n \tN_(\"git update-ref [<options>] -d <refname> [<old-oid>]\"),\ndiff --git a/builtin/update-server-info.c b/builtin/update-server-info.c\nindex a5b7d86727c..6769611a025 100644\n--- a/builtin/update-server-info.c\n+++ b/builtin/update-server-info.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/upload-archive.c b/builtin/upload-archive.c\nindex 49d1bb7fb44..6f2ddbd71c8 100644\n--- a/builtin/upload-archive.c\n+++ b/builtin/upload-archive.c\n@@ -1,12 +1,12 @@\n /*\n  * Copyright (c) 2006 Franck Bui-Huu\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"archive.h\"\n #include \"path.h\"\n #include \"pkt-line.h\"\n #include \"sideband.h\"\n-#include \"repository.h\"\n #include \"run-command.h\"\n #include \"strvec.h\"\n \ndiff --git a/builtin/var.c b/builtin/var.c\nindex 4a5c2649d6f..2ecaed51b44 100644\n--- a/builtin/var.c\n+++ b/builtin/var.c\n@@ -3,7 +3,9 @@\n  *\n  * Copyright (C) Eric Biederman, 2005\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+\n #include \"attr.h\"\n #include \"config.h\"\n #include \"editor.h\"\ndiff --git a/builtin/verify-commit.c b/builtin/verify-commit.c\nindex c5859e5b2b4..779b7988ca9 100644\n--- a/builtin/verify-commit.c\n+++ b/builtin/verify-commit.c\n@@ -5,11 +5,11 @@\n  *\n  * Based on git-verify-tag\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\n #include \"object-name.h\"\n-#include \"repository.h\"\n #include \"commit.h\"\n #include \"parse-options.h\"\n #include \"gpg-interface.h\"\ndiff --git a/builtin/verify-pack.c b/builtin/verify-pack.c\nindex 7ad456649d2..34e4ed715f3 100644\n--- a/builtin/verify-pack.c\n+++ b/builtin/verify-pack.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/verify-tag.c b/builtin/verify-tag.c\nindex a7bef524191..f6b97048a57 100644\n--- a/builtin/verify-tag.c\n+++ b/builtin/verify-tag.c\n@@ -5,6 +5,7 @@\n  *\n  * Based on git-verify-tag.sh\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/worktree.c b/builtin/worktree.c\nindex 3b47f9832fa..c22b2e95f50 100644\n--- a/builtin/worktree.c\n+++ b/builtin/worktree.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"advice.h\"\n@@ -17,7 +18,6 @@\n #include \"read-cache-ll.h\"\n #include \"refs.h\"\n #include \"remote.h\"\n-#include \"repository.h\"\n #include \"run-command.h\"\n #include \"hook.h\"\n #include \"sigchain.h\"\ndiff --git a/builtin/write-tree.c b/builtin/write-tree.c\nindex 1b467d6ed23..de4ebf767d4 100644\n--- a/builtin/write-tree.c\n+++ b/builtin/write-tree.c\n@@ -3,7 +3,7 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"environment.h\"\n@@ -12,7 +12,6 @@\n #include \"tree.h\"\n #include \"cache-tree.h\"\n #include \"parse-options.h\"\n-#include \"repository.h\"\n \n static const char * const write_tree_usage[] = {\n \tN_(\"git write-tree [--missing-ok] [--prefix=<prefix>/]\"),\n-- \ngitgitgadget\n\n"},{"id":"502597","messageId":"9aaf966254493678d3e25b93cb11017c814d3087.1726001961.git.gitgitgadget@gmail.com","threadId":"62067","inReplyTo":"pull.1778.v2.git.git.1726001960.gitgitgadget@gmail.com","subject":"[PATCH v2 1/3] builtin: add a repository parameter for builtin functions","fromName":"John Cai via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2024-09-10T20:59:18Z","receivedAt":"2024-09-10T20:59:39Z","isPatch":true,"sender":{"key":"johncai86@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2354211?v=4"},"body":"From: John Cai <johncai86@gmail.com>\n\nIn order to reduce the usage of the global the_repository, add a\nparameter to builtin functions that will get passed a repository\nvariable.\n\nThis commit uses UNUSED on most of the builtin functions, as subsequent\ncommits will modify the actual builtins to pass the repository parameter\ndown.\n\nSigned-off-by: John Cai <johncai86@gmail.com>\n---\n builtin.h                          | 277 +++++++++++++++--------------\n builtin/add.c                      |  12 +-\n builtin/am.c                       |   5 +-\n builtin/annotate.c                 |   7 +-\n builtin/apply.c                    |   5 +-\n builtin/archive.c                  |   5 +-\n builtin/bisect.c                   |   5 +-\n builtin/blame.c                    |   5 +-\n builtin/branch.c                   |   5 +-\n builtin/bugreport.c                |   5 +-\n builtin/bundle.c                   |   5 +-\n builtin/cat-file.c                 |   7 +-\n builtin/check-attr.c               |   5 +-\n builtin/check-ignore.c             |   5 +-\n builtin/check-mailmap.c            |   5 +-\n builtin/check-ref-format.c         |   5 +-\n builtin/checkout--worker.c         |   5 +-\n builtin/checkout-index.c           |   5 +-\n builtin/checkout.c                 |  15 +-\n builtin/clean.c                    |   5 +-\n builtin/clone.c                    |   5 +-\n builtin/column.c                   |   5 +-\n builtin/commit-graph.c             |   5 +-\n builtin/commit-tree.c              |   5 +-\n builtin/commit.c                   |  10 +-\n builtin/config.c                   |   5 +-\n builtin/count-objects.c            |   5 +-\n builtin/credential-cache--daemon.c |  10 +-\n builtin/credential-cache.c         |   5 +-\n builtin/credential-store.c         |   5 +-\n builtin/credential.c               |   5 +-\n builtin/describe.c                 |   7 +-\n builtin/diagnose.c                 |   5 +-\n builtin/diff-files.c               |   5 +-\n builtin/diff-index.c               |   5 +-\n builtin/diff-tree.c                |   5 +-\n builtin/diff.c                     |   5 +-\n builtin/difftool.c                 |   5 +-\n builtin/fast-export.c              |   5 +-\n builtin/fast-import.c              |   5 +-\n builtin/fetch-pack.c               |   5 +-\n builtin/fetch.c                    |   5 +-\n builtin/fmt-merge-msg.c            |   5 +-\n builtin/for-each-ref.c             |   5 +-\n builtin/for-each-repo.c            |   5 +-\n builtin/fsck.c                     |   5 +-\n builtin/fsmonitor--daemon.c        |   7 +-\n builtin/gc.c                       |  10 +-\n builtin/get-tar-commit-id.c        |   5 +-\n builtin/grep.c                     |   5 +-\n builtin/hash-object.c              |   5 +-\n builtin/help.c                     |   5 +-\n builtin/hook.c                     |   5 +-\n builtin/index-pack.c               |   5 +-\n builtin/init-db.c                  |   5 +-\n builtin/interpret-trailers.c       |   5 +-\n builtin/log.c                      |  30 +++-\n builtin/ls-files.c                 |   5 +-\n builtin/ls-remote.c                |   5 +-\n builtin/ls-tree.c                  |   5 +-\n builtin/mailinfo.c                 |   5 +-\n builtin/mailsplit.c                |   5 +-\n builtin/merge-base.c               |   5 +-\n builtin/merge-file.c               |   5 +-\n builtin/merge-index.c              |   5 +-\n builtin/merge-ours.c               |   5 +-\n builtin/merge-recursive.c          |   5 +-\n builtin/merge-tree.c               |   5 +-\n builtin/merge.c                    |   9 +-\n builtin/mktag.c                    |   5 +-\n builtin/mktree.c                   |   6 +-\n builtin/multi-pack-index.c         |   6 +-\n builtin/mv.c                       |   5 +-\n builtin/name-rev.c                 |   5 +-\n builtin/notes.c                    |   5 +-\n builtin/pack-objects.c             |   5 +-\n builtin/pack-redundant.c           |   7 +-\n builtin/pack-refs.c                |   5 +-\n builtin/patch-id.c                 |   5 +-\n builtin/prune-packed.c             |   5 +-\n builtin/prune.c                    |   5 +-\n builtin/pull.c                     |   5 +-\n builtin/push.c                     |   5 +-\n builtin/range-diff.c               |   5 +-\n builtin/read-tree.c                |   5 +-\n builtin/rebase.c                   |   5 +-\n builtin/receive-pack.c             |   5 +-\n builtin/reflog.c                   |   9 +-\n builtin/refs.c                     |   5 +-\n builtin/remote-ext.c               |   5 +-\n builtin/remote-fd.c                |   5 +-\n builtin/remote.c                   |   5 +-\n builtin/repack.c                   |   5 +-\n builtin/replace.c                  |   5 +-\n builtin/replay.c                   |   5 +-\n builtin/rerere.c                   |   5 +-\n builtin/reset.c                    |   5 +-\n builtin/rev-list.c                 |   5 +-\n builtin/rev-parse.c                |   5 +-\n builtin/revert.c                   |  10 +-\n builtin/rm.c                       |   5 +-\n builtin/send-pack.c                |   5 +-\n builtin/shortlog.c                 |   5 +-\n builtin/show-branch.c              |   5 +-\n builtin/show-index.c               |   5 +-\n builtin/show-ref.c                 |   5 +-\n builtin/sparse-checkout.c          |   5 +-\n builtin/stash.c                    |   5 +-\n builtin/stripspace.c               |   5 +-\n builtin/submodule--helper.c        |   5 +-\n builtin/symbolic-ref.c             |   5 +-\n builtin/tag.c                      |   5 +-\n builtin/unpack-file.c              |   5 +-\n builtin/unpack-objects.c           |   5 +-\n builtin/update-index.c             |   5 +-\n builtin/update-ref.c               |   5 +-\n builtin/update-server-info.c       |   5 +-\n builtin/upload-archive.c           |  10 +-\n builtin/upload-pack.c              |   5 +-\n builtin/var.c                      |   5 +-\n builtin/verify-commit.c            |   5 +-\n builtin/verify-pack.c              |   5 +-\n builtin/verify-tag.c               |   5 +-\n builtin/worktree.c                 |   5 +-\n builtin/write-tree.c               |   5 +-\n git.c                              |  12 +-\n help.c                             |   3 +-\n stkOs5Qh                           | Bin 0 -> 10485768 bytes\n 128 files changed, 703 insertions(+), 296 deletions(-)\n create mode 100644 stkOs5Qh\n\ndiff --git a/builtin.h b/builtin.h\nindex 14fa0171607..fc6fc8ffed8 100644\n--- a/builtin.h\n+++ b/builtin.h\n@@ -10,6 +10,7 @@\n #define USE_THE_REPOSITORY_VARIABLE\n \n #include \"git-compat-util.h\"\n+#include \"repository.h\"\n \n /*\n  * builtin API\n@@ -122,143 +123,143 @@ int is_builtin(const char *s);\n \t\tBUG(\"unexpected prefix in builtin: %s\", (prefix)); \\\n } while (0)\n \n-int cmd_add(int argc, const char **argv, const char *prefix);\n-int cmd_am(int argc, const char **argv, const char *prefix);\n-int cmd_annotate(int argc, const char **argv, const char *prefix);\n-int cmd_apply(int argc, const char **argv, const char *prefix);\n-int cmd_archive(int argc, const char **argv, const char *prefix);\n-int cmd_bisect(int argc, const char **argv, const char *prefix);\n-int cmd_blame(int argc, const char **argv, const char *prefix);\n-int cmd_branch(int argc, const char **argv, const char *prefix);\n-int cmd_bugreport(int argc, const char **argv, const char *prefix);\n-int cmd_bundle(int argc, const char **argv, const char *prefix);\n-int cmd_cat_file(int argc, const char **argv, const char *prefix);\n-int cmd_checkout(int argc, const char **argv, const char *prefix);\n-int cmd_checkout__worker(int argc, const char **argv, const char *prefix);\n-int cmd_checkout_index(int argc, const char **argv, const char *prefix);\n-int cmd_check_attr(int argc, const char **argv, const char *prefix);\n-int cmd_check_ignore(int argc, const char **argv, const char *prefix);\n-int cmd_check_mailmap(int argc, const char **argv, const char *prefix);\n-int cmd_check_ref_format(int argc, const char **argv, const char *prefix);\n-int cmd_cherry(int argc, const char **argv, const char *prefix);\n-int cmd_cherry_pick(int argc, const char **argv, const char *prefix);\n-int cmd_clone(int argc, const char **argv, const char *prefix);\n-int cmd_clean(int argc, const char **argv, const char *prefix);\n-int cmd_column(int argc, const char **argv, const char *prefix);\n-int cmd_commit(int argc, const char **argv, const char *prefix);\n-int cmd_commit_graph(int argc, const char **argv, const char *prefix);\n-int cmd_commit_tree(int argc, const char **argv, const char *prefix);\n-int cmd_config(int argc, const char **argv, const char *prefix);\n-int cmd_count_objects(int argc, const char **argv, const char *prefix);\n-int cmd_credential(int argc, const char **argv, const char *prefix);\n-int cmd_credential_cache(int argc, const char **argv, const char *prefix);\n-int cmd_credential_cache_daemon(int argc, const char **argv, const char *prefix);\n-int cmd_credential_store(int argc, const char **argv, const char *prefix);\n-int cmd_describe(int argc, const char **argv, const char *prefix);\n-int cmd_diagnose(int argc, const char **argv, const char *prefix);\n-int cmd_diff_files(int argc, const char **argv, const char *prefix);\n-int cmd_diff_index(int argc, const char **argv, const char *prefix);\n-int cmd_diff(int argc, const char **argv, const char *prefix);\n-int cmd_diff_tree(int argc, const char **argv, const char *prefix);\n-int cmd_difftool(int argc, const char **argv, const char *prefix);\n-int cmd_env__helper(int argc, const char **argv, const char *prefix);\n-int cmd_fast_export(int argc, const char **argv, const char *prefix);\n-int cmd_fast_import(int argc, const char **argv, const char *prefix);\n-int cmd_fetch(int argc, const char **argv, const char *prefix);\n-int cmd_fetch_pack(int argc, const char **argv, const char *prefix);\n-int cmd_fmt_merge_msg(int argc, const char **argv, const char *prefix);\n-int cmd_for_each_ref(int argc, const char **argv, const char *prefix);\n-int cmd_for_each_repo(int argc, const char **argv, const char *prefix);\n-int cmd_format_patch(int argc, const char **argv, const char *prefix);\n-int cmd_fsck(int argc, const char **argv, const char *prefix);\n-int cmd_fsmonitor__daemon(int argc, const char **argv, const char *prefix);\n-int cmd_gc(int argc, const char **argv, const char *prefix);\n-int cmd_get_tar_commit_id(int argc, const char **argv, const char *prefix);\n-int cmd_grep(int argc, const char **argv, const char *prefix);\n-int cmd_hash_object(int argc, const char **argv, const char *prefix);\n-int cmd_help(int argc, const char **argv, const char *prefix);\n-int cmd_hook(int argc, const char **argv, const char *prefix);\n-int cmd_index_pack(int argc, const char **argv, const char *prefix);\n-int cmd_init_db(int argc, const char **argv, const char *prefix);\n-int cmd_interpret_trailers(int argc, const char **argv, const char *prefix);\n-int cmd_log(int argc, const char **argv, const char *prefix);\n-int cmd_log_reflog(int argc, const char **argv, const char *prefix);\n-int cmd_ls_files(int argc, const char **argv, const char *prefix);\n-int cmd_ls_tree(int argc, const char **argv, const char *prefix);\n-int cmd_ls_remote(int argc, const char **argv, const char *prefix);\n-int cmd_mailinfo(int argc, const char **argv, const char *prefix);\n-int cmd_mailsplit(int argc, const char **argv, const char *prefix);\n-int cmd_maintenance(int argc, const char **argv, const char *prefix);\n-int cmd_merge(int argc, const char **argv, const char *prefix);\n-int cmd_merge_base(int argc, const char **argv, const char *prefix);\n-int cmd_merge_index(int argc, const char **argv, const char *prefix);\n-int cmd_merge_ours(int argc, const char **argv, const char *prefix);\n-int cmd_merge_file(int argc, const char **argv, const char *prefix);\n-int cmd_merge_recursive(int argc, const char **argv, const char *prefix);\n-int cmd_merge_tree(int argc, const char **argv, const char *prefix);\n-int cmd_mktag(int argc, const char **argv, const char *prefix);\n-int cmd_mktree(int argc, const char **argv, const char *prefix);\n-int cmd_multi_pack_index(int argc, const char **argv, const char *prefix);\n-int cmd_mv(int argc, const char **argv, const char *prefix);\n-int cmd_name_rev(int argc, const char **argv, const char *prefix);\n-int cmd_notes(int argc, const char **argv, const char *prefix);\n-int cmd_pack_objects(int argc, const char **argv, const char *prefix);\n-int cmd_pack_redundant(int argc, const char **argv, const char *prefix);\n-int cmd_patch_id(int argc, const char **argv, const char *prefix);\n-int cmd_prune(int argc, const char **argv, const char *prefix);\n-int cmd_prune_packed(int argc, const char **argv, const char *prefix);\n-int cmd_pull(int argc, const char **argv, const char *prefix);\n-int cmd_push(int argc, const char **argv, const char *prefix);\n-int cmd_range_diff(int argc, const char **argv, const char *prefix);\n-int cmd_read_tree(int argc, const char **argv, const char *prefix);\n-int cmd_rebase(int argc, const char **argv, const char *prefix);\n-int cmd_rebase__interactive(int argc, const char **argv, const char *prefix);\n-int cmd_receive_pack(int argc, const char **argv, const char *prefix);\n-int cmd_reflog(int argc, const char **argv, const char *prefix);\n-int cmd_refs(int argc, const char **argv, const char *prefix);\n-int cmd_remote(int argc, const char **argv, const char *prefix);\n-int cmd_remote_ext(int argc, const char **argv, const char *prefix);\n-int cmd_remote_fd(int argc, const char **argv, const char *prefix);\n-int cmd_repack(int argc, const char **argv, const char *prefix);\n-int cmd_replay(int argc, const char **argv, const char *prefix);\n-int cmd_rerere(int argc, const char **argv, const char *prefix);\n-int cmd_reset(int argc, const char **argv, const char *prefix);\n-int cmd_restore(int argc, const char **argv, const char *prefix);\n-int cmd_rev_list(int argc, const char **argv, const char *prefix);\n-int cmd_rev_parse(int argc, const char **argv, const char *prefix);\n-int cmd_revert(int argc, const char **argv, const char *prefix);\n-int cmd_rm(int argc, const char **argv, const char *prefix);\n-int cmd_send_pack(int argc, const char **argv, const char *prefix);\n-int cmd_shortlog(int argc, const char **argv, const char *prefix);\n-int cmd_show(int argc, const char **argv, const char *prefix);\n-int cmd_show_branch(int argc, const char **argv, const char *prefix);\n-int cmd_show_index(int argc, const char **argv, const char *prefix);\n-int cmd_sparse_checkout(int argc, const char **argv, const char *prefix);\n-int cmd_status(int argc, const char **argv, const char *prefix);\n-int cmd_stash(int argc, const char **argv, const char *prefix);\n-int cmd_stripspace(int argc, const char **argv, const char *prefix);\n-int cmd_submodule__helper(int argc, const char **argv, const char *prefix);\n-int cmd_switch(int argc, const char **argv, const char *prefix);\n-int cmd_symbolic_ref(int argc, const char **argv, const char *prefix);\n-int cmd_tag(int argc, const char **argv, const char *prefix);\n-int cmd_unpack_file(int argc, const char **argv, const char *prefix);\n-int cmd_unpack_objects(int argc, const char **argv, const char *prefix);\n-int cmd_update_index(int argc, const char **argv, const char *prefix);\n-int cmd_update_ref(int argc, const char **argv, const char *prefix);\n-int cmd_update_server_info(int argc, const char **argv, const char *prefix);\n-int cmd_upload_archive(int argc, const char **argv, const char *prefix);\n-int cmd_upload_archive_writer(int argc, const char **argv, const char *prefix);\n-int cmd_upload_pack(int argc, const char **argv, const char *prefix);\n-int cmd_var(int argc, const char **argv, const char *prefix);\n-int cmd_verify_commit(int argc, const char **argv, const char *prefix);\n-int cmd_verify_tag(int argc, const char **argv, const char *prefix);\n-int cmd_version(int argc, const char **argv, const char *prefix);\n-int cmd_whatchanged(int argc, const char **argv, const char *prefix);\n-int cmd_worktree(int argc, const char **argv, const char *prefix);\n-int cmd_write_tree(int argc, const char **argv, const char *prefix);\n-int cmd_verify_pack(int argc, const char **argv, const char *prefix);\n-int cmd_show_ref(int argc, const char **argv, const char *prefix);\n-int cmd_pack_refs(int argc, const char **argv, const char *prefix);\n-int cmd_replace(int argc, const char **argv, const char *prefix);\n+int cmd_add(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_am(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_annotate(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_apply(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_archive(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_bisect(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_blame(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_branch(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_bugreport(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_bundle(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_cat_file(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_checkout(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_checkout__worker(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_checkout_index(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_check_attr(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_check_ignore(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_check_mailmap(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_check_ref_format(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_cherry(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_cherry_pick(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_clone(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_clean(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_column(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_commit(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_commit_graph(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_commit_tree(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_config(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_count_objects(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_credential(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_credential_cache(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_credential_cache_daemon(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_credential_store(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_describe(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_diagnose(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_diff_files(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_diff_index(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_diff(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_diff_tree(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_difftool(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_env__helper(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_fast_export(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_fast_import(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_fetch(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_fetch_pack(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_fmt_merge_msg(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_for_each_ref(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_for_each_repo(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_format_patch(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_fsck(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_fsmonitor__daemon(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_gc(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_get_tar_commit_id(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_grep(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_hash_object(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_help(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_hook(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_index_pack(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_init_db(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_interpret_trailers(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_log_reflog(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_log(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_ls_files(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_ls_tree(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_ls_remote(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_mailinfo(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_mailsplit(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_maintenance(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_merge(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_merge_base(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_merge_index(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_merge_ours(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_merge_file(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_merge_recursive(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_merge_tree(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_mktag(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_mktree(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_multi_pack_index(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_mv(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_name_rev(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_notes(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_pack_objects(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_pack_redundant(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_patch_id(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_prune(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_prune_packed(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_pull(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_push(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_range_diff(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_read_tree(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_rebase(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_rebase__interactive(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_receive_pack(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_reflog(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_refs(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_remote(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_remote_ext(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_remote_fd(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_repack(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_replay(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_rerere(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_reset(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_restore(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_rev_list(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_rev_parse(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_revert(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_rm(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_send_pack(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_shortlog(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_show(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_show_branch(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_show_index(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_sparse_checkout(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_status(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_stash(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_stripspace(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_submodule__helper(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_switch(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_symbolic_ref(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_tag(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_unpack_file(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_unpack_objects(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_update_index(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_update_ref(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_update_server_info(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_upload_archive(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_upload_archive_writer(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_upload_pack(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_var(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_verify_commit(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_verify_tag(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_version(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_whatchanged(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_worktree(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_write_tree(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_verify_pack(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_show_ref(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_pack_refs(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_replace(int argc, const char **argv, const char *prefix, struct repository *repo);\n \n #endif\ndiff --git a/builtin/add.c b/builtin/add.c\nindex 40b61ef90d9..ba331519cac 100644\n--- a/builtin/add.c\n+++ b/builtin/add.c\n@@ -167,7 +167,10 @@ int interactive_add(const char **argv, const char *prefix, int patch)\n \treturn ret;\n }\n \n-static int edit_patch(int argc, const char **argv, const char *prefix)\n+static int edit_patch(int argc,\n+\t\t      const char **argv,\n+\t\t      const char *prefix,\n+\t\t      struct repository *repo UNUSED)\n {\n \tchar *file = git_pathdup(\"ADD_EDIT.patch\");\n \tstruct child_process child = CHILD_PROCESS_INIT;\n@@ -358,7 +361,10 @@ static int add_files(struct dir_struct *dir, int flags)\n \treturn exit_status;\n }\n \n-int cmd_add(int argc, const char **argv, const char *prefix)\n+int cmd_add(int argc,\n+\t    const char **argv,\n+\t    const char *prefix,\n+\t    struct repository *repo UNUSED)\n {\n \tint exit_status = 0;\n \tstruct pathspec pathspec;\n@@ -387,7 +393,7 @@ int cmd_add(int argc, const char **argv, const char *prefix)\n \tif (edit_interactive) {\n \t\tif (pathspec_from_file)\n \t\t\tdie(_(\"options '%s' and '%s' cannot be used together\"), \"--pathspec-from-file\", \"--edit\");\n-\t\treturn(edit_patch(argc, argv, prefix));\n+\t\treturn(edit_patch(argc, argv, prefix, the_repository));\n \t}\n \targc--;\n \targv++;\ndiff --git a/builtin/am.c b/builtin/am.c\nindex d8875ad4022..8c610eed3e6 100644\n--- a/builtin/am.c\n+++ b/builtin/am.c\n@@ -2298,7 +2298,10 @@ static int parse_opt_show_current_patch(const struct option *opt, const char *ar\n \treturn 0;\n }\n \n-int cmd_am(int argc, const char **argv, const char *prefix)\n+int cmd_am(int argc,\n+\t   const char **argv,\n+\t   const char *prefix,\n+\t   struct repository *repo UNUSED)\n {\n \tstruct am_state state;\n \tint binary = -1;\ndiff --git a/builtin/annotate.c b/builtin/annotate.c\nindex 58ff977a231..0abf89ef186 100644\n--- a/builtin/annotate.c\n+++ b/builtin/annotate.c\n@@ -7,7 +7,10 @@\n #include \"builtin.h\"\n #include \"strvec.h\"\n \n-int cmd_annotate(int argc, const char **argv, const char *prefix)\n+int cmd_annotate(int argc,\n+\t\t const char **argv,\n+\t\t const char *prefix,\n+\t\t struct repository *repo UNUSED)\n {\n \tstruct strvec args = STRVEC_INIT;\n \tint i;\n@@ -18,5 +21,5 @@ int cmd_annotate(int argc, const char **argv, const char *prefix)\n \t\tstrvec_push(&args, argv[i]);\n \t}\n \n-\treturn cmd_blame(args.nr, args.v, prefix);\n+\treturn cmd_blame(args.nr, args.v, prefix, the_repository);\n }\ndiff --git a/builtin/apply.c b/builtin/apply.c\nindex d623c52f78f..ca0bb97df40 100644\n--- a/builtin/apply.c\n+++ b/builtin/apply.c\n@@ -9,7 +9,10 @@ static const char * const apply_usage[] = {\n \tNULL\n };\n \n-int cmd_apply(int argc, const char **argv, const char *prefix)\n+int cmd_apply(int argc,\n+\t      const char **argv,\n+\t      const char *prefix,\n+\t      struct repository *repo UNUSED)\n {\n \tint force_apply = 0;\n \tint options = 0;\ndiff --git a/builtin/archive.c b/builtin/archive.c\nindex b50981504f3..de59c3ae97a 100644\n--- a/builtin/archive.c\n+++ b/builtin/archive.c\n@@ -76,7 +76,10 @@ static int run_remote_archiver(int argc, const char **argv,\n \t\t\t     PARSE_OPT_KEEP_UNKNOWN_OPT |\t\\\n \t\t\t     PARSE_OPT_NO_INTERNAL_HELP\t)\n \n-int cmd_archive(int argc, const char **argv, const char *prefix)\n+int cmd_archive(int argc,\n+\t\tconst char **argv,\n+\t\tconst char *prefix,\n+\t\tstruct repository *repo UNUSED)\n {\n \tconst char *exec = \"git-upload-archive\";\n \tchar *output = NULL;\ndiff --git a/builtin/bisect.c b/builtin/bisect.c\nindex 453a6cccd70..b83056df9f4 100644\n--- a/builtin/bisect.c\n+++ b/builtin/bisect.c\n@@ -1411,7 +1411,10 @@ static int cmd_bisect__run(int argc, const char **argv, const char *prefix UNUSE\n \treturn res;\n }\n \n-int cmd_bisect(int argc, const char **argv, const char *prefix)\n+int cmd_bisect(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tint res = 0;\n \tparse_opt_subcommand_fn *fn = NULL;\ndiff --git a/builtin/blame.c b/builtin/blame.c\nindex 35e975fb132..728a62402b5 100644\n--- a/builtin/blame.c\n+++ b/builtin/blame.c\n@@ -864,7 +864,10 @@ static void build_ignorelist(struct blame_scoreboard *sb,\n \t}\n }\n \n-int cmd_blame(int argc, const char **argv, const char *prefix)\n+int cmd_blame(int argc,\n+\t      const char **argv,\n+\t      const char *prefix,\n+\t      struct repository *repo UNUSED)\n {\n \tstruct rev_info revs;\n \tchar *path = NULL;\ndiff --git a/builtin/branch.c b/builtin/branch.c\nindex 3f870741bfd..7980d2e83d6 100644\n--- a/builtin/branch.c\n+++ b/builtin/branch.c\n@@ -704,7 +704,10 @@ static int edit_branch_description(const char *branch_name)\n \treturn 0;\n }\n \n-int cmd_branch(int argc, const char **argv, const char *prefix)\n+int cmd_branch(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \t/* possible actions */\n \tint delete = 0, rename = 0, copy = 0, list = 0,\ndiff --git a/builtin/bugreport.c b/builtin/bugreport.c\nindex bdfed3d8f18..aeab40c4902 100644\n--- a/builtin/bugreport.c\n+++ b/builtin/bugreport.c\n@@ -98,7 +98,10 @@ static void get_header(struct strbuf *buf, const char *title)\n \tstrbuf_addf(buf, \"\\n\\n[%s]\\n\", title);\n }\n \n-int cmd_bugreport(int argc, const char **argv, const char *prefix)\n+int cmd_bugreport(int argc,\n+\t\t  const char **argv,\n+\t\t  const char *prefix,\n+\t\t  struct repository *repo UNUSED)\n {\n \tstruct strbuf buffer = STRBUF_INIT;\n \tstruct strbuf report_path = STRBUF_INIT;\ndiff --git a/builtin/bundle.c b/builtin/bundle.c\nindex 86d0ed7049c..97f7f530d0e 100644\n--- a/builtin/bundle.c\n+++ b/builtin/bundle.c\n@@ -226,7 +226,10 @@ cleanup:\n \treturn ret;\n }\n \n-int cmd_bundle(int argc, const char **argv, const char *prefix)\n+int cmd_bundle(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tstruct option options[] = {\ndiff --git a/builtin/cat-file.c b/builtin/cat-file.c\nindex 18fe58d6b8b..b244b5a1ab6 100644\n--- a/builtin/cat-file.c\n+++ b/builtin/cat-file.c\n@@ -191,7 +191,7 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name,\n \t\t\tconst char *ls_args[3] = { NULL };\n \t\t\tls_args[0] =  \"ls-tree\";\n \t\t\tls_args[1] =  obj_name;\n-\t\t\tret = cmd_ls_tree(2, ls_args, NULL);\n+\t\t\tret = cmd_ls_tree(2, ls_args, NULL, the_repository);\n \t\t\tgoto cleanup;\n \t\t}\n \n@@ -923,7 +923,10 @@ static int batch_option_callback(const struct option *opt,\n \treturn 0;\n }\n \n-int cmd_cat_file(int argc, const char **argv, const char *prefix)\n+int cmd_cat_file(int argc,\n+\t\t const char **argv,\n+\t\t const char *prefix,\n+\t\t struct repository *repo UNUSED)\n {\n \tint opt = 0;\n \tint opt_cw = 0;\ndiff --git a/builtin/check-attr.c b/builtin/check-attr.c\nindex 93768107100..ffd1067558d 100644\n--- a/builtin/check-attr.c\n+++ b/builtin/check-attr.c\n@@ -107,7 +107,10 @@ static NORETURN void error_with_usage(const char *msg)\n \tusage_with_options(check_attr_usage, check_attr_options);\n }\n \n-int cmd_check_attr(int argc, const char **argv, const char *prefix)\n+int cmd_check_attr(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tstruct attr_check *check;\n \tstruct object_id initialized_oid;\ndiff --git a/builtin/check-ignore.c b/builtin/check-ignore.c\nindex 2bda6a1d462..70565b9f892 100644\n--- a/builtin/check-ignore.c\n+++ b/builtin/check-ignore.c\n@@ -151,7 +151,10 @@ static int check_ignore_stdin_paths(struct dir_struct *dir, const char *prefix)\n \treturn num_ignored;\n }\n \n-int cmd_check_ignore(int argc, const char **argv, const char *prefix)\n+int cmd_check_ignore(int argc,\n+\t\t     const char **argv,\n+\t\t     const char *prefix,\n+\t\t     struct repository *repo UNUSED)\n {\n \tint num_ignored;\n \tstruct dir_struct dir = DIR_INIT;\ndiff --git a/builtin/check-mailmap.c b/builtin/check-mailmap.c\nindex b8a05b8e07b..87cc036dd14 100644\n--- a/builtin/check-mailmap.c\n+++ b/builtin/check-mailmap.c\n@@ -40,7 +40,10 @@ static void check_mailmap(struct string_list *mailmap, const char *contact)\n \tprintf(\"<%.*s>\\n\", (int)maillen, mail);\n }\n \n-int cmd_check_mailmap(int argc, const char **argv, const char *prefix)\n+int cmd_check_mailmap(int argc,\n+\t\t      const char **argv,\n+\t\t      const char *prefix,\n+\t\t      struct repository *repo UNUSED)\n {\n \tint i;\n \tstruct string_list mailmap = STRING_LIST_INIT_NODUP;\ndiff --git a/builtin/check-ref-format.c b/builtin/check-ref-format.c\nindex 5eb6bdc3f69..6874edb4f41 100644\n--- a/builtin/check-ref-format.c\n+++ b/builtin/check-ref-format.c\n@@ -51,7 +51,10 @@ static int check_ref_format_branch(const char *arg)\n \treturn 0;\n }\n \n-int cmd_check_ref_format(int argc, const char **argv, const char *prefix)\n+int cmd_check_ref_format(int argc,\n+\t\t\t const char **argv,\n+\t\t\t const char *prefix,\n+\t\t\t struct repository *repo UNUSED)\n {\n \tint i;\n \tint normalize = 0;\ndiff --git a/builtin/checkout--worker.c b/builtin/checkout--worker.c\nindex 6b62b5375bd..f53e1082690 100644\n--- a/builtin/checkout--worker.c\n+++ b/builtin/checkout--worker.c\n@@ -113,7 +113,10 @@ static const char * const checkout_worker_usage[] = {\n \tNULL\n };\n \n-int cmd_checkout__worker(int argc, const char **argv, const char *prefix)\n+int cmd_checkout__worker(int argc,\n+\t\t\t const char **argv,\n+\t\t\t const char *prefix,\n+\t\t\t struct repository *repo UNUSED)\n {\n \tstruct checkout state = CHECKOUT_INIT;\n \tstruct option checkout_worker_options[] = {\ndiff --git a/builtin/checkout-index.c b/builtin/checkout-index.c\nindex 29e744d11be..98247ff8236 100644\n--- a/builtin/checkout-index.c\n+++ b/builtin/checkout-index.c\n@@ -208,7 +208,10 @@ static int option_parse_stage(const struct option *opt,\n \treturn 0;\n }\n \n-int cmd_checkout_index(int argc, const char **argv, const char *prefix)\n+int cmd_checkout_index(int argc,\n+\t\t       const char **argv,\n+\t\t       const char *prefix,\n+\t\t       struct repository *repo UNUSED)\n {\n \tint i;\n \tstruct lock_file lock_file = LOCK_INIT;\ndiff --git a/builtin/checkout.c b/builtin/checkout.c\nindex 4cfe6fab505..d3bc48684f9 100644\n--- a/builtin/checkout.c\n+++ b/builtin/checkout.c\n@@ -1953,7 +1953,10 @@ static int checkout_main(int argc, const char **argv, const char *prefix,\n \treturn ret;\n }\n \n-int cmd_checkout(int argc, const char **argv, const char *prefix)\n+int cmd_checkout(int argc,\n+\t\t const char **argv,\n+\t\t const char *prefix,\n+\t\t struct repository *repo UNUSED)\n {\n \tstruct checkout_opts opts = CHECKOUT_OPTS_INIT;\n \tstruct option *options;\n@@ -2000,7 +2003,10 @@ int cmd_checkout(int argc, const char **argv, const char *prefix)\n \t\t\t     checkout_usage);\n }\n \n-int cmd_switch(int argc, const char **argv, const char *prefix)\n+int cmd_switch(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tstruct checkout_opts opts = CHECKOUT_OPTS_INIT;\n \tstruct option *options = NULL;\n@@ -2036,7 +2042,10 @@ int cmd_switch(int argc, const char **argv, const char *prefix)\n \t\t\t     switch_branch_usage);\n }\n \n-int cmd_restore(int argc, const char **argv, const char *prefix)\n+int cmd_restore(int argc,\n+\t\tconst char **argv,\n+\t\tconst char *prefix,\n+\t\tstruct repository *repo UNUSED)\n {\n \tstruct checkout_opts opts = CHECKOUT_OPTS_INIT;\n \tstruct option *options;\ndiff --git a/builtin/clean.c b/builtin/clean.c\nindex ded5a91534c..b5887f877e0 100644\n--- a/builtin/clean.c\n+++ b/builtin/clean.c\n@@ -915,7 +915,10 @@ static void correct_untracked_entries(struct dir_struct *dir)\n \tdir->nr = dst;\n }\n \n-int cmd_clean(int argc, const char **argv, const char *prefix)\n+int cmd_clean(int argc,\n+\t      const char **argv,\n+\t      const char *prefix,\n+\t      struct repository *repo UNUSED)\n {\n \tint i, res;\n \tint dry_run = 0, remove_directories = 0, quiet = 0, ignored = 0;\ndiff --git a/builtin/clone.c b/builtin/clone.c\nindex 269b6e18a4e..1b82310ac5b 100644\n--- a/builtin/clone.c\n+++ b/builtin/clone.c\n@@ -956,7 +956,10 @@ static int path_exists(const char *path)\n \treturn !stat(path, &sb);\n }\n \n-int cmd_clone(int argc, const char **argv, const char *prefix)\n+int cmd_clone(int argc,\n+\t      const char **argv,\n+\t      const char *prefix,\n+\t      struct repository *repository UNUSED)\n {\n \tint is_bundle = 0, is_local;\n \tint reject_shallow = 0;\ndiff --git a/builtin/column.c b/builtin/column.c\nindex 10ff7e01668..93f84beeee7 100644\n--- a/builtin/column.c\n+++ b/builtin/column.c\n@@ -18,7 +18,10 @@ static int column_config(const char *var, const char *value,\n \treturn git_column_config(var, value, cb, &colopts);\n }\n \n-int cmd_column(int argc, const char **argv, const char *prefix)\n+int cmd_column(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tstruct string_list list = STRING_LIST_INIT_DUP;\n \tstruct strbuf sb = STRBUF_INIT;\ndiff --git a/builtin/commit-graph.c b/builtin/commit-graph.c\nindex 7102ee90a00..65ce98d4675 100644\n--- a/builtin/commit-graph.c\n+++ b/builtin/commit-graph.c\n@@ -331,7 +331,10 @@ cleanup:\n \treturn result;\n }\n \n-int cmd_commit_graph(int argc, const char **argv, const char *prefix)\n+int cmd_commit_graph(int argc,\n+\t\t     const char **argv,\n+\t\t     const char *prefix,\n+\t\t     struct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tstruct option builtin_commit_graph_options[] = {\ndiff --git a/builtin/commit-tree.c b/builtin/commit-tree.c\nindex 84bb4502229..bd8bf3296ed 100644\n--- a/builtin/commit-tree.c\n+++ b/builtin/commit-tree.c\n@@ -90,7 +90,10 @@ static int parse_file_arg_callback(const struct option *opt,\n \treturn 0;\n }\n \n-int cmd_commit_tree(int argc, const char **argv, const char *prefix)\n+int cmd_commit_tree(int argc,\n+\t\t    const char **argv,\n+\t\t    const char *prefix,\n+\t\t    struct repository *repo UNUSED)\n {\n \tstatic struct strbuf buffer = STRBUF_INIT;\n \tstruct commit_list *parents = NULL;\ndiff --git a/builtin/commit.c b/builtin/commit.c\nindex b2033c48877..768d76ac461 100644\n--- a/builtin/commit.c\n+++ b/builtin/commit.c\n@@ -1502,7 +1502,10 @@ static int git_status_config(const char *k, const char *v,\n \treturn git_diff_ui_config(k, v, ctx, NULL);\n }\n \n-int cmd_status(int argc, const char **argv, const char *prefix)\n+int cmd_status(int argc,\n+const char **argv,\n+const char *prefix,\n+struct repository *repo UNUSED)\n {\n \tstatic int no_renames = -1;\n \tstatic const char *rename_score_arg = (const char *)-1;\n@@ -1641,7 +1644,10 @@ static int git_commit_config(const char *k, const char *v,\n \treturn git_status_config(k, v, ctx, s);\n }\n \n-int cmd_commit(int argc, const char **argv, const char *prefix)\n+int cmd_commit(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tstatic struct wt_status s;\n \tstatic struct option builtin_commit_options[] = {\ndiff --git a/builtin/config.c b/builtin/config.c\nindex e00d983596b..841a5d706f4 100644\n--- a/builtin/config.c\n+++ b/builtin/config.c\n@@ -1392,7 +1392,10 @@ out:\n \treturn ret;\n }\n \n-int cmd_config(int argc, const char **argv, const char *prefix)\n+int cmd_config(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *subcommand = NULL;\n \tstruct option subcommand_opts[] = {\ndiff --git a/builtin/count-objects.c b/builtin/count-objects.c\nindex ec6098a149d..6b905da3c3d 100644\n--- a/builtin/count-objects.c\n+++ b/builtin/count-objects.c\n@@ -95,7 +95,10 @@ static char const * const count_objects_usage[] = {\n \tNULL\n };\n \n-int cmd_count_objects(int argc, const char **argv, const char *prefix)\n+int cmd_count_objects(int argc,\n+\t\t      const char **argv,\n+\t\t      const char *prefix,\n+\t\t      struct repository *repo UNUSED)\n {\n \tint human_readable = 0;\n \tstruct option opts[] = {\ndiff --git a/builtin/credential-cache--daemon.c b/builtin/credential-cache--daemon.c\nindex 4952b225477..4caaf38b841 100644\n--- a/builtin/credential-cache--daemon.c\n+++ b/builtin/credential-cache--daemon.c\n@@ -287,7 +287,10 @@ static void init_socket_directory(const char *path)\n \tfree(path_copy);\n }\n \n-int cmd_credential_cache_daemon(int argc, const char **argv, const char *prefix)\n+int cmd_credential_cache_daemon(int argc,\n+\t\t\t\tconst char **argv,\n+\t\t\t\tconst char *prefix,\n+\t\t\t\tstruct repository *repo UNUSED)\n {\n \tstruct tempfile *socket_file;\n \tconst char *socket_path;\n@@ -330,7 +333,10 @@ int cmd_credential_cache_daemon(int argc, const char **argv, const char *prefix)\n \n #else\n \n-int cmd_credential_cache_daemon(int argc, const char **argv, const char *prefix)\n+int cmd_credential_cache_daemon(int argc,\n+const char **argv,\n+const char *prefix,\n+struct repository *repo UNUSED)\n {\n \tconst char * const usage[] = {\n \t\t\"git credential-cache--daemon [--debug] <socket-path>\",\ndiff --git a/builtin/credential-cache.c b/builtin/credential-cache.c\nindex aaf2f8438b4..5de8b9123bf 100644\n--- a/builtin/credential-cache.c\n+++ b/builtin/credential-cache.c\n@@ -137,7 +137,10 @@ static void announce_capabilities(void)\n \tcredential_announce_capabilities(&c, stdout);\n }\n \n-int cmd_credential_cache(int argc, const char **argv, const char *prefix)\n+int cmd_credential_cache(int argc,\n+\t\t\t const char **argv,\n+\t\t\t const char *prefix,\n+\t\t\t struct repository *repo UNUSED)\n {\n \tconst char *socket_path_arg = NULL;\n \tchar *socket_path;\ndiff --git a/builtin/credential-store.c b/builtin/credential-store.c\nindex 97968bfa1c2..128704078e9 100644\n--- a/builtin/credential-store.c\n+++ b/builtin/credential-store.c\n@@ -170,7 +170,10 @@ static void lookup_credential(const struct string_list *fns, struct credential *\n \t\t\treturn; /* Found credential */\n }\n \n-int cmd_credential_store(int argc, const char **argv, const char *prefix)\n+int cmd_credential_store(int argc,\n+\t\t\t const char **argv,\n+\t\t\t const char *prefix,\n+\t\t\t struct repository *repo UNUSED)\n {\n \tconst char * const usage[] = {\n \t\t\"git credential-store [<options>] <action>\",\ndiff --git a/builtin/credential.c b/builtin/credential.c\nindex b72e76dd9a6..796422c6fe7 100644\n--- a/builtin/credential.c\n+++ b/builtin/credential.c\n@@ -6,7 +6,10 @@\n static const char usage_msg[] =\n \t\"git credential (fill|approve|reject)\";\n \n-int cmd_credential(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_credential(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix UNUSED,\n+\t\t   struct repository *repo UNUSED)\n {\n \tconst char *op;\n \tstruct credential c = CREDENTIAL_INIT;\ndiff --git a/builtin/describe.c b/builtin/describe.c\nindex b43093c099f..1c1c250fe0c 100644\n--- a/builtin/describe.c\n+++ b/builtin/describe.c\n@@ -571,7 +571,10 @@ static int option_parse_exact_match(const struct option *opt, const char *arg,\n \treturn 0;\n }\n \n-int cmd_describe(int argc, const char **argv, const char *prefix)\n+int cmd_describe(int argc,\n+\t\t const char **argv,\n+\t\t const char *prefix,\n+\t\t struct repository *repo UNUSED )\n {\n \tint contains = 0;\n \tstruct option options[] = {\n@@ -650,7 +653,7 @@ int cmd_describe(int argc, const char **argv, const char *prefix)\n \t\t\targv_copy[i] = args.v[i];\n \t\targv_copy[args.nr] = NULL;\n \n-\t\tret = cmd_name_rev(args.nr, argv_copy, prefix);\n+\t\tret = cmd_name_rev(args.nr, argv_copy, prefix, the_repository);\n \n \t\tstrvec_clear(&args);\n \t\tfree(argv_copy);\ndiff --git a/builtin/diagnose.c b/builtin/diagnose.c\nindex 4857a4395ba..66a22d918e6 100644\n--- a/builtin/diagnose.c\n+++ b/builtin/diagnose.c\n@@ -11,7 +11,10 @@ static const char * const diagnose_usage[] = {\n \tNULL\n };\n \n-int cmd_diagnose(int argc, const char **argv, const char *prefix)\n+int cmd_diagnose(int argc,\n+\t\t const char **argv,\n+\t\t const char *prefix,\n+\t\t struct repository *repo UNUSED)\n {\n \tstruct strbuf zip_path = STRBUF_INIT;\n \ttime_t now = time(NULL);\ndiff --git a/builtin/diff-files.c b/builtin/diff-files.c\nindex 018011f29ea..7f4f9bcb3eb 100644\n--- a/builtin/diff-files.c\n+++ b/builtin/diff-files.c\n@@ -17,7 +17,10 @@ static const char diff_files_usage[] =\n \"\\n\"\n COMMON_DIFF_OPTIONS_HELP;\n \n-int cmd_diff_files(int argc, const char **argv, const char *prefix)\n+int cmd_diff_files(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tstruct rev_info rev;\n \tint result;\ndiff --git a/builtin/diff-index.c b/builtin/diff-index.c\nindex 685b60284fd..8abec38592f 100644\n--- a/builtin/diff-index.c\n+++ b/builtin/diff-index.c\n@@ -14,7 +14,10 @@ static const char diff_cache_usage[] =\n \"\\n\"\n COMMON_DIFF_OPTIONS_HELP;\n \n-int cmd_diff_index(int argc, const char **argv, const char *prefix)\n+int cmd_diff_index(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tstruct rev_info rev;\n \tunsigned int option = 0;\ndiff --git a/builtin/diff-tree.c b/builtin/diff-tree.c\nindex b8df1d4b79b..841448b023f 100644\n--- a/builtin/diff-tree.c\n+++ b/builtin/diff-tree.c\n@@ -108,7 +108,10 @@ static void diff_tree_tweak_rev(struct rev_info *rev)\n \t}\n }\n \n-int cmd_diff_tree(int argc, const char **argv, const char *prefix)\n+int cmd_diff_tree(int argc,\n+\t\t  const char **argv,\n+\t\t  const char *prefix,\n+\t\t  struct repository *repo UNUSED)\n {\n \tchar line[1000];\n \tstruct object *tree1, *tree2;\ndiff --git a/builtin/diff.c b/builtin/diff.c\nindex 6eac445579b..499b7872dd4 100644\n--- a/builtin/diff.c\n+++ b/builtin/diff.c\n@@ -393,7 +393,10 @@ static void symdiff_release(struct symdiff *sdiff)\n \tbitmap_free(sdiff->skip);\n }\n \n-int cmd_diff(int argc, const char **argv, const char *prefix)\n+int cmd_diff(int argc,\n+\t     const char **argv,\n+\t     const char *prefix,\n+\t     struct repository *repo UNUSED)\n {\n \tint i;\n \tstruct rev_info rev;\ndiff --git a/builtin/difftool.c b/builtin/difftool.c\nindex dcc68e190c2..c8700d67f4d 100644\n--- a/builtin/difftool.c\n+++ b/builtin/difftool.c\n@@ -690,7 +690,10 @@ static int run_file_diff(int prompt, const char *prefix,\n \treturn run_command(child);\n }\n \n-int cmd_difftool(int argc, const char **argv, const char *prefix)\n+int cmd_difftool(int argc,\n+\t\t const char **argv,\n+\t\t const char *prefix,\n+\t\t struct repository *repo UNUSED)\n {\n \tint use_gui_tool = -1, dir_diff = 0, prompt = -1, symlinks = 0,\n \t    tool_help = 0, no_index = 0;\ndiff --git a/builtin/fast-export.c b/builtin/fast-export.c\nindex f253b79322a..1bd5949dd24 100644\n--- a/builtin/fast-export.c\n+++ b/builtin/fast-export.c\n@@ -1180,7 +1180,10 @@ static int parse_opt_anonymize_map(const struct option *opt,\n \treturn 0;\n }\n \n-int cmd_fast_export(int argc, const char **argv, const char *prefix)\n+int cmd_fast_export(int argc,\n+\t\t    const char **argv,\n+\t\t    const char *prefix,\n+\t\t    struct repository *repo UNUSED)\n {\n \tstruct rev_info revs;\n \tstruct commit *commit;\ndiff --git a/builtin/fast-import.c b/builtin/fast-import.c\nindex 2214c105f17..4b9e341aa44 100644\n--- a/builtin/fast-import.c\n+++ b/builtin/fast-import.c\n@@ -3537,7 +3537,10 @@ static void parse_argv(void)\n \tbuild_mark_map(&sub_marks_from, &sub_marks_to);\n }\n \n-int cmd_fast_import(int argc, const char **argv, const char *prefix)\n+int cmd_fast_import(int argc,\n+\t\t    const char **argv,\n+\t\t    const char *prefix,\n+\t\t    struct repository *repo UNUSED)\n {\n \tunsigned int i;\n \ndiff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c\nindex af329e8d5cf..fddd8a2c1cd 100644\n--- a/builtin/fetch-pack.c\n+++ b/builtin/fetch-pack.c\n@@ -43,7 +43,10 @@ static void add_sought_entry(struct ref ***sought, int *nr, int *alloc,\n \t(*sought)[*nr - 1] = ref;\n }\n \n-int cmd_fetch_pack(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_fetch_pack(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix UNUSED,\n+\t\t   struct repository *repo UNUSED)\n {\n \tint i, ret;\n \tstruct ref *ref = NULL;\ndiff --git a/builtin/fetch.c b/builtin/fetch.c\nindex c297569a473..46ecfc5bc62 100644\n--- a/builtin/fetch.c\n+++ b/builtin/fetch.c\n@@ -2138,7 +2138,10 @@ static int fetch_one(struct remote *remote, int argc, const char **argv,\n \treturn exit_code;\n }\n \n-int cmd_fetch(int argc, const char **argv, const char *prefix)\n+int cmd_fetch(int argc,\n+\t      const char **argv,\n+\t      const char *prefix,\n+\t      struct repository *repo UNUSED)\n {\n \tstruct fetch_config config = {\n \t\t.display_format = DISPLAY_FORMAT_FULL,\ndiff --git a/builtin/fmt-merge-msg.c b/builtin/fmt-merge-msg.c\nindex 957786d1b3a..1fba4cf5590 100644\n--- a/builtin/fmt-merge-msg.c\n+++ b/builtin/fmt-merge-msg.c\n@@ -9,7 +9,10 @@ static const char * const fmt_merge_msg_usage[] = {\n \tNULL\n };\n \n-int cmd_fmt_merge_msg(int argc, const char **argv, const char *prefix)\n+int cmd_fmt_merge_msg(int argc,\n+\t\t      const char **argv,\n+\t\t      const char *prefix,\n+\t\t      struct repository *repo UNUSED)\n {\n \tchar *inpath = NULL;\n \tconst char *message = NULL;\ndiff --git a/builtin/for-each-ref.c b/builtin/for-each-ref.c\nindex 5517a4a1c08..b1187587135 100644\n--- a/builtin/for-each-ref.c\n+++ b/builtin/for-each-ref.c\n@@ -16,7 +16,10 @@ static char const * const for_each_ref_usage[] = {\n \tNULL\n };\n \n-int cmd_for_each_ref(int argc, const char **argv, const char *prefix)\n+int cmd_for_each_ref(int argc,\n+\t\t     const char **argv,\n+\t\t     const char *prefix,\n+\t\t     struct repository *repo UNUSED)\n {\n \tstruct ref_sorting *sorting;\n \tstruct string_list sorting_options = STRING_LIST_INIT_DUP;\ndiff --git a/builtin/for-each-repo.c b/builtin/for-each-repo.c\nindex c4fa41fda9f..93d82b952e9 100644\n--- a/builtin/for-each-repo.c\n+++ b/builtin/for-each-repo.c\n@@ -29,7 +29,10 @@ static int run_command_on_repo(const char *path, int argc, const char ** argv)\n \treturn run_command(&child);\n }\n \n-int cmd_for_each_repo(int argc, const char **argv, const char *prefix)\n+int cmd_for_each_repo(int argc,\n+\t\t      const char **argv,\n+\t\t      const char *prefix,\n+\t\t      struct repository *repo UNUSED)\n {\n \tstatic const char *config_key = NULL;\n \tint keep_going = 0;\ndiff --git a/builtin/fsck.c b/builtin/fsck.c\nindex 60f4e6fad97..87068cee09d 100644\n--- a/builtin/fsck.c\n+++ b/builtin/fsck.c\n@@ -925,7 +925,10 @@ static struct option fsck_opts[] = {\n \tOPT_END(),\n };\n \n-int cmd_fsck(int argc, const char **argv, const char *prefix)\n+int cmd_fsck(int argc,\n+\t     const char **argv,\n+\t     const char *prefix,\n+\t     struct repository *repo UNUSED)\n {\n \tint i;\n \tstruct object_directory *odb;\ndiff --git a/builtin/fsmonitor--daemon.c b/builtin/fsmonitor--daemon.c\nindex 1593713f4cb..73a4b885661 100644\n--- a/builtin/fsmonitor--daemon.c\n+++ b/builtin/fsmonitor--daemon.c\n@@ -1521,7 +1521,10 @@ static int try_to_start_background_daemon(void)\n \t}\n }\n \n-int cmd_fsmonitor__daemon(int argc, const char **argv, const char *prefix)\n+int cmd_fsmonitor__daemon(int argc,\n+\t\t\t  const char **argv,\n+\t\t\t  const char *prefix,\n+\t\t\t  struct repository *repo UNUSED)\n {\n \tconst char *subcmd;\n \tenum fsmonitor_reason reason;\n@@ -1584,7 +1587,7 @@ int cmd_fsmonitor__daemon(int argc, const char **argv, const char *prefix)\n }\n \n #else\n-int cmd_fsmonitor__daemon(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_fsmonitor__daemon(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)\n {\n \tstruct option options[] = {\n \t\tOPT_END()\ndiff --git a/builtin/gc.c b/builtin/gc.c\nindex 427faf1cfe1..0727de1ae8e 100644\n--- a/builtin/gc.c\n+++ b/builtin/gc.c\n@@ -657,7 +657,10 @@ static void gc_before_repack(struct maintenance_run_opts *opts,\n \t}\n }\n \n-int cmd_gc(int argc, const char **argv, const char *prefix)\n+int cmd_gc(int argc,\n+const char **argv,\n+const char *prefix,\n+struct repository *repo UNUSED)\n {\n \tint aggressive = 0;\n \tint quiet = 0;\n@@ -2890,7 +2893,10 @@ static const char * const builtin_maintenance_usage[] = {\n \tNULL,\n };\n \n-int cmd_maintenance(int argc, const char **argv, const char *prefix)\n+int cmd_maintenance(int argc,\n+\t\t    const char **argv,\n+\t\t    const char *prefix,\n+\t\t    struct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tstruct option builtin_maintenance_options[] = {\ndiff --git a/builtin/get-tar-commit-id.c b/builtin/get-tar-commit-id.c\nindex 7195a072edc..6bec0d1854c 100644\n--- a/builtin/get-tar-commit-id.c\n+++ b/builtin/get-tar-commit-id.c\n@@ -12,7 +12,10 @@ static const char builtin_get_tar_commit_id_usage[] =\n #define RECORDSIZE\t(512)\n #define HEADERSIZE (2 * RECORDSIZE)\n \n-int cmd_get_tar_commit_id(int argc, const char **argv UNUSED, const char *prefix)\n+int cmd_get_tar_commit_id(int argc,\n+\t\t\t  const char **argv UNUSED,\n+\t\t\t  const char *prefix,\n+\t\t\t  struct repository *repo UNUSED)\n {\n \tchar buffer[HEADERSIZE];\n \tstruct ustar_header *header = (struct ustar_header *)buffer;\ndiff --git a/builtin/grep.c b/builtin/grep.c\nindex dfc3c3e8bd2..da11879c637 100644\n--- a/builtin/grep.c\n+++ b/builtin/grep.c\n@@ -888,7 +888,10 @@ static int pattern_callback(const struct option *opt, const char *arg,\n \treturn 0;\n }\n \n-int cmd_grep(int argc, const char **argv, const char *prefix)\n+int cmd_grep(int argc,\n+\t     const char **argv,\n+\t     const char *prefix,\n+\t     struct repository *repo UNUSED)\n {\n \tint hit = 0;\n \tint cached = 0, untracked = 0, opt_exclude = -1;\ndiff --git a/builtin/hash-object.c b/builtin/hash-object.c\nindex c767414a0cc..090daea5cd8 100644\n--- a/builtin/hash-object.c\n+++ b/builtin/hash-object.c\n@@ -84,7 +84,10 @@ static void hash_stdin_paths(const char *type, int no_filters, unsigned flags,\n \tstrbuf_release(&unquoted);\n }\n \n-int cmd_hash_object(int argc, const char **argv, const char *prefix)\n+int cmd_hash_object(int argc,\n+\t\t    const char **argv,\n+\t\t    const char *prefix,\n+\t\t    struct repository *repo UNUSED)\n {\n \tstatic const char * const hash_object_usage[] = {\n \t\tN_(\"git hash-object [-t <type>] [-w] [--path=<file> | --no-filters]\\n\"\ndiff --git a/builtin/help.c b/builtin/help.c\nindex dc1fbe2b986..f7723bdf5c8 100644\n--- a/builtin/help.c\n+++ b/builtin/help.c\n@@ -631,7 +631,10 @@ static void opt_mode_usage(int argc, const char *opt_mode,\n \tno_help_format(opt_mode, fmt);\n }\n \n-int cmd_help(int argc, const char **argv, const char *prefix)\n+int cmd_help(int argc,\n+\t     const char **argv,\n+\t     const char *prefix,\n+\t     struct repository *repo UNUSED)\n {\n \tint nongit;\n \tenum help_format parsed_help_format;\ndiff --git a/builtin/hook.c b/builtin/hook.c\nindex cc37438fdee..f02e2421ac0 100644\n--- a/builtin/hook.c\n+++ b/builtin/hook.c\n@@ -66,7 +66,10 @@ usage:\n \tusage_with_options(builtin_hook_run_usage, run_options);\n }\n \n-int cmd_hook(int argc, const char **argv, const char *prefix)\n+int cmd_hook(int argc,\n+\t     const char **argv,\n+\t     const char *prefix,\n+\t     struct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tstruct option builtin_hook_options[] = {\ndiff --git a/builtin/index-pack.c b/builtin/index-pack.c\nindex fd968d673d2..3207130bfee 100644\n--- a/builtin/index-pack.c\n+++ b/builtin/index-pack.c\n@@ -1718,7 +1718,10 @@ static void show_pack_info(int stat_only)\n \tfree(chain_histogram);\n }\n \n-int cmd_index_pack(int argc, const char **argv, const char *prefix)\n+int cmd_index_pack(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tint i, fix_thin_pack = 0, verify = 0, stat_only = 0, rev_index;\n \tconst char *curr_index;\ndiff --git a/builtin/init-db.c b/builtin/init-db.c\nindex 582dcf20f86..94bd6075095 100644\n--- a/builtin/init-db.c\n+++ b/builtin/init-db.c\n@@ -70,7 +70,10 @@ static const char *const init_db_usage[] = {\n  * On the other hand, it might just make lookup slower and messier. You\n  * be the judge.  The default case is to have one DB per managed directory.\n  */\n-int cmd_init_db(int argc, const char **argv, const char *prefix)\n+int cmd_init_db(int argc,\n+\t\tconst char **argv,\n+\t\tconst char *prefix,\n+\t\tstruct repository *repo UNUSED)\n {\n \tconst char *git_dir;\n \tconst char *real_git_dir = NULL;\ndiff --git a/builtin/interpret-trailers.c b/builtin/interpret-trailers.c\nindex 1d969494cf5..fb93e54e5ea 100644\n--- a/builtin/interpret-trailers.c\n+++ b/builtin/interpret-trailers.c\n@@ -188,7 +188,10 @@ static void interpret_trailers(const struct process_trailer_options *opts,\n \tstrbuf_release(&sb);\n }\n \n-int cmd_interpret_trailers(int argc, const char **argv, const char *prefix)\n+int cmd_interpret_trailers(int argc,\n+\t\t\t   const char **argv,\n+\t\t\t   const char *prefix,\n+\t\t\t   struct repository *repo UNUSED)\n {\n \tstruct process_trailer_options opts = PROCESS_TRAILER_OPTIONS_INIT;\n \tLIST_HEAD(trailers);\ndiff --git a/builtin/log.c b/builtin/log.c\nindex 36769bab3b6..67140575f4b 100644\n--- a/builtin/log.c\n+++ b/builtin/log.c\n@@ -637,7 +637,10 @@ static int git_log_config(const char *var, const char *value,\n \treturn git_diff_ui_config(var, value, ctx, cb);\n }\n \n-int cmd_whatchanged(int argc, const char **argv, const char *prefix)\n+int cmd_whatchanged(int argc,\n+\t\t    const char **argv,\n+\t\t    const char *prefix,\n+\t\t    struct repository *repo UNUSED)\n {\n \tstruct log_config cfg;\n \tstruct rev_info rev;\n@@ -758,7 +761,10 @@ static void show_setup_revisions_tweak(struct rev_info *rev)\n \t\trev->diffopt.output_format = DIFF_FORMAT_PATCH;\n }\n \n-int cmd_show(int argc, const char **argv, const char *prefix)\n+int cmd_show(int argc,\n+\t     const char **argv,\n+\t     const char *prefix,\n+\t     struct repository *repo UNUSED)\n {\n \tstruct log_config cfg;\n \tstruct rev_info rev;\n@@ -874,7 +880,10 @@ int cmd_show(int argc, const char **argv, const char *prefix)\n /*\n  * This is equivalent to \"git log -g --abbrev-commit --pretty=oneline\"\n  */\n-int cmd_log_reflog(int argc, const char **argv, const char *prefix)\n+int cmd_log_reflog(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tstruct log_config cfg;\n \tstruct rev_info rev;\n@@ -916,7 +925,10 @@ static void log_setup_revisions_tweak(struct rev_info *rev)\n \t\tdiff_merges_default_to_first_parent(rev);\n }\n \n-int cmd_log(int argc, const char **argv, const char *prefix)\n+int cmd_log(int argc,\n+\t    const char **argv,\n+\t    const char *prefix,\n+\t    struct repository *repo UNUSED)\n {\n \tstruct log_config cfg;\n \tstruct rev_info rev;\n@@ -1986,7 +1998,10 @@ static void infer_range_diff_ranges(struct strbuf *r1,\n \t}\n }\n \n-int cmd_format_patch(int argc, const char **argv, const char *prefix)\n+int cmd_format_patch(int argc,\n+\t\t     const char **argv,\n+\t\t     const char *prefix,\n+\t\t     struct repository *repo UNUSED)\n {\n \tstruct format_config cfg;\n \tstruct commit *commit;\n@@ -2619,7 +2634,10 @@ static void print_commit(char sign, struct commit *commit, int verbose,\n \t}\n }\n \n-int cmd_cherry(int argc, const char **argv, const char *prefix)\n+int cmd_cherry(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tstruct rev_info revs;\n \tstruct patch_ids ids;\ndiff --git a/builtin/ls-files.c b/builtin/ls-files.c\nindex 6eeb5cba783..7f45cb62cf6 100644\n--- a/builtin/ls-files.c\n+++ b/builtin/ls-files.c\n@@ -561,7 +561,10 @@ static int option_parse_exclude_standard(const struct option *opt,\n \treturn 0;\n }\n \n-int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix)\n+int cmd_ls_files(int argc,\n+\t\t const char **argv,\n+\t\t const char *cmd_prefix,\n+\t\t struct repository *repo UNUSED)\n {\n \tint require_work_tree = 0, show_tag = 0, i;\n \tchar *max_prefix;\ndiff --git a/builtin/ls-remote.c b/builtin/ls-remote.c\nindex 0a491595ca8..f2c2854d0c3 100644\n--- a/builtin/ls-remote.c\n+++ b/builtin/ls-remote.c\n@@ -37,7 +37,10 @@ static int tail_match(const struct strvec *pattern, const char *path)\n \treturn 0;\n }\n \n-int cmd_ls_remote(int argc, const char **argv, const char *prefix)\n+int cmd_ls_remote(int argc,\n+\t\t  const char **argv,\n+\t\t  const char *prefix,\n+\t\t  struct repository *repo UNUSED)\n {\n \tconst char *dest = NULL;\n \tunsigned flags = 0;\ndiff --git a/builtin/ls-tree.c b/builtin/ls-tree.c\nindex bf372c67d77..363cb948d92 100644\n--- a/builtin/ls-tree.c\n+++ b/builtin/ls-tree.c\n@@ -329,7 +329,10 @@ static struct ls_tree_cmdmode_to_fmt ls_tree_cmdmode_format[] = {\n \t},\n };\n \n-int cmd_ls_tree(int argc, const char **argv, const char *prefix)\n+int cmd_ls_tree(int argc,\n+\t\tconst char **argv,\n+\t\tconst char *prefix,\n+\t\tstruct repository *repo UNUSED)\n {\n \tstruct object_id oid;\n \tstruct tree *tree;\ndiff --git a/builtin/mailinfo.c b/builtin/mailinfo.c\nindex 53a22645da5..00bfcd1afa0 100644\n--- a/builtin/mailinfo.c\n+++ b/builtin/mailinfo.c\n@@ -48,7 +48,10 @@ static int parse_opt_quoted_cr(const struct option *opt, const char *arg, int un\n \treturn 0;\n }\n \n-int cmd_mailinfo(int argc, const char **argv, const char *prefix)\n+int cmd_mailinfo(int argc,\n+\t\t const char **argv,\n+\t\t const char *prefix,\n+\t\t struct repository *repo UNUSED)\n {\n \tstruct metainfo_charset meta_charset;\n \tstruct mailinfo mi;\ndiff --git a/builtin/mailsplit.c b/builtin/mailsplit.c\nindex fe6dbc5d053..b8f7150ce9a 100644\n--- a/builtin/mailsplit.c\n+++ b/builtin/mailsplit.c\n@@ -269,7 +269,10 @@ out:\n \treturn ret;\n }\n \n-int cmd_mailsplit(int argc, const char **argv, const char *prefix)\n+int cmd_mailsplit(int argc,\n+\t\t  const char **argv,\n+\t\t  const char *prefix,\n+\t\t  struct repository *repo UNUSED)\n {\n \tint nr = 0, nr_prec = 4, num = 0;\n \tint allow_bare = 0;\ndiff --git a/builtin/merge-base.c b/builtin/merge-base.c\nindex 5a8e7295029..afeae8d8346 100644\n--- a/builtin/merge-base.c\n+++ b/builtin/merge-base.c\n@@ -143,7 +143,10 @@ static int handle_fork_point(int argc, const char **argv)\n \treturn 0;\n }\n \n-int cmd_merge_base(int argc, const char **argv, const char *prefix)\n+int cmd_merge_base(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tstruct commit **rev;\n \tint rev_nr = 0;\ndiff --git a/builtin/merge-file.c b/builtin/merge-file.c\nindex 1f987334a31..f785813ddae 100644\n--- a/builtin/merge-file.c\n+++ b/builtin/merge-file.c\n@@ -53,7 +53,10 @@ static int diff_algorithm_cb(const struct option *opt,\n \treturn 0;\n }\n \n-int cmd_merge_file(int argc, const char **argv, const char *prefix)\n+int cmd_merge_file(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tconst char *names[3] = { 0 };\n \tmmfile_t mmfs[3] = { 0 };\ndiff --git a/builtin/merge-index.c b/builtin/merge-index.c\nindex 0fabe3f6bb2..1309a8ff471 100644\n--- a/builtin/merge-index.c\n+++ b/builtin/merge-index.c\n@@ -73,7 +73,10 @@ static void merge_all(void)\n \t}\n }\n \n-int cmd_merge_index(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_merge_index(int argc,\n+\t\t    const char **argv,\n+\t\t    const char *prefix UNUSED,\n+\t\t    struct repository *repo UNUSED)\n {\n \tint i, force_file = 0;\n \ndiff --git a/builtin/merge-ours.c b/builtin/merge-ours.c\nindex 932924e5d0e..62267f12dd8 100644\n--- a/builtin/merge-ours.c\n+++ b/builtin/merge-ours.c\n@@ -15,7 +15,10 @@\n static const char builtin_merge_ours_usage[] =\n \t\"git merge-ours <base>... -- HEAD <remote>...\";\n \n-int cmd_merge_ours(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_merge_ours(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix UNUSED,\n+\t\t   struct repository *repo UNUSED)\n {\n \tif (argc == 2 && !strcmp(argv[1], \"-h\"))\n \t\tusage(builtin_merge_ours_usage);\ndiff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c\nindex e951b09805d..2bd3fb0e553 100644\n--- a/builtin/merge-recursive.c\n+++ b/builtin/merge-recursive.c\n@@ -21,7 +21,10 @@ static char *better_branch_name(const char *branch)\n \treturn xstrdup(name ? name : branch);\n }\n \n-int cmd_merge_recursive(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_merge_recursive(int argc,\n+\t\t\tconst char **argv,\n+\t\t\tconst char *prefix UNUSED,\n+\t\t\tstruct repository *repo UNUSED)\n {\n \tstruct object_id bases[21];\n \tunsigned bases_count = 0;\ndiff --git a/builtin/merge-tree.c b/builtin/merge-tree.c\nindex 9bca9b5f33c..8751d86fd0f 100644\n--- a/builtin/merge-tree.c\n+++ b/builtin/merge-tree.c\n@@ -526,7 +526,10 @@ static int real_merge(struct merge_tree_options *o,\n \treturn !result.clean; /* result.clean < 0 handled above */\n }\n \n-int cmd_merge_tree(int argc, const char **argv, const char *prefix)\n+int cmd_merge_tree(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tstruct merge_tree_options o = { .show_messages = -1 };\n \tstruct strvec xopts = STRVEC_INIT;\ndiff --git a/builtin/merge.c b/builtin/merge.c\nindex 662a49a0e8c..fd6dc00d6c0 100644\n--- a/builtin/merge.c\n+++ b/builtin/merge.c\n@@ -1275,7 +1275,10 @@ static int merging_a_throwaway_tag(struct commit *commit)\n \treturn is_throwaway_tag;\n }\n \n-int cmd_merge(int argc, const char **argv, const char *prefix)\n+int cmd_merge(int argc,\n+\t      const char **argv,\n+\t      const char *prefix,\n+\t      struct repository *repo UNUSED)\n {\n \tstruct object_id result_tree, stash, head_oid;\n \tstruct commit *head_commit;\n@@ -1347,7 +1350,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)\n \t\t\t\t\tREF_NO_DEREF);\n \n \t\t/* Invoke 'git reset --merge' */\n-\t\tret = cmd_reset(nargc, nargv, prefix);\n+\t\tret = cmd_reset(nargc, nargv, prefix, the_repository);\n \n \t\tif (!is_null_oid(&stash_oid)) {\n \t\t\toid_to_hex_r(stash_oid_hex, &stash_oid);\n@@ -1379,7 +1382,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)\n \t\t\tdie(_(\"There is no merge in progress (MERGE_HEAD missing).\"));\n \n \t\t/* Invoke 'git commit' */\n-\t\tret = cmd_commit(nargc, nargv, prefix);\n+\t\tret = cmd_commit(nargc, nargv, prefix, the_repository);\n \t\tgoto done;\n \t}\n \ndiff --git a/builtin/mktag.c b/builtin/mktag.c\nindex c6b644219fb..5cd8a3e6fa0 100644\n--- a/builtin/mktag.c\n+++ b/builtin/mktag.c\n@@ -71,7 +71,10 @@ static int verify_object_in_tag(struct object_id *tagged_oid, int *tagged_type)\n \treturn ret;\n }\n \n-int cmd_mktag(int argc, const char **argv, const char *prefix)\n+int cmd_mktag(int argc,\n+\t      const char **argv,\n+\t      const char *prefix,\n+\t      struct repository *repo UNUSED)\n {\n \tstatic struct option builtin_mktag_options[] = {\n \t\tOPT_BOOL(0, \"strict\", &option_strict,\ndiff --git a/builtin/mktree.c b/builtin/mktree.c\nindex 9a22d4e2773..72a1af1bca5 100644\n--- a/builtin/mktree.c\n+++ b/builtin/mktree.c\n@@ -150,7 +150,10 @@ static void mktree_line(char *buf, int nul_term_line, int allow_missing)\n \tfree(to_free);\n }\n \n-int cmd_mktree(int ac, const char **av, const char *prefix)\n+int cmd_mktree(int ac,\n+\t       const char **av,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tstruct strbuf sb = STRBUF_INIT;\n \tstruct object_id oid;\n@@ -199,5 +202,6 @@ int cmd_mktree(int ac, const char **av, const char *prefix)\n \t\tused=0; /* reset tree entry buffer for re-use in batch mode */\n \t}\n \tstrbuf_release(&sb);\n+\n \treturn 0;\n }\ndiff --git a/builtin/multi-pack-index.c b/builtin/multi-pack-index.c\nindex 8805cbbeb3b..154fc77075f 100644\n--- a/builtin/multi-pack-index.c\n+++ b/builtin/multi-pack-index.c\n@@ -267,8 +267,10 @@ static int cmd_multi_pack_index_repack(int argc, const char **argv,\n \t\t\t   (size_t)opts.batch_size, opts.flags);\n }\n \n-int cmd_multi_pack_index(int argc, const char **argv,\n-\t\t\t const char *prefix)\n+int cmd_multi_pack_index(int argc,\n+\t\t\t const char **argv,\n+\t\t\t const char *prefix,\n+\t\t\t struct repository *repo UNUSED)\n {\n \tint res;\n \tparse_opt_subcommand_fn *fn = NULL;\ndiff --git a/builtin/mv.c b/builtin/mv.c\nindex 6c69033c5f5..6e2eb9cf4b8 100644\n--- a/builtin/mv.c\n+++ b/builtin/mv.c\n@@ -178,7 +178,10 @@ static void remove_empty_src_dirs(const char **src_dir, size_t src_dir_nr)\n \tstrbuf_release(&a_src_dir);\n }\n \n-int cmd_mv(int argc, const char **argv, const char *prefix)\n+int cmd_mv(int argc,\n+\t   const char **argv,\n+\t   const char *prefix,\n+\t   struct repository *repo UNUSED)\n {\n \tint i, flags, gitmodules_modified = 0;\n \tint verbose = 0, show_only = 0, force = 0, ignore_errors = 0, ignore_sparse = 0;\ndiff --git a/builtin/name-rev.c b/builtin/name-rev.c\nindex a468ef84c37..19d92fb382d 100644\n--- a/builtin/name-rev.c\n+++ b/builtin/name-rev.c\n@@ -558,7 +558,10 @@ static void name_rev_line(char *p, struct name_ref_data *data)\n \tstrbuf_release(&buf);\n }\n \n-int cmd_name_rev(int argc, const char **argv, const char *prefix)\n+int cmd_name_rev(int argc,\n+\t\t const char **argv,\n+\t\t const char *prefix,\n+\t\t struct repository *repo UNUSED)\n {\n \tstruct mem_pool string_pool;\n \tstruct object_array revs = OBJECT_ARRAY_INIT;\ndiff --git a/builtin/notes.c b/builtin/notes.c\nindex 04f9dfb7fbd..49d8364af60 100644\n--- a/builtin/notes.c\n+++ b/builtin/notes.c\n@@ -1096,7 +1096,10 @@ static int get_ref(int argc, const char **argv, const char *prefix)\n \treturn 0;\n }\n \n-int cmd_notes(int argc, const char **argv, const char *prefix)\n+int cmd_notes(int argc,\n+\t      const char **argv,\n+\t      const char *prefix,\n+\t      struct repository *repo UNUSED)\n {\n \tconst char *override_notes_ref = NULL;\n \tparse_opt_subcommand_fn *fn = NULL;\ndiff --git a/builtin/pack-objects.c b/builtin/pack-objects.c\nindex 778be80f564..127972f3cdf 100644\n--- a/builtin/pack-objects.c\n+++ b/builtin/pack-objects.c\n@@ -4284,7 +4284,10 @@ static int option_parse_cruft_expiration(const struct option *opt UNUSED,\n \treturn 0;\n }\n \n-int cmd_pack_objects(int argc, const char **argv, const char *prefix)\n+int cmd_pack_objects(int argc,\n+\t\t     const char **argv,\n+\t\t     const char *prefix,\n+\t\t     struct repository *repo UNUSED)\n {\n \tint use_internal_rev_list = 0;\n \tint shallow = 0;\ndiff --git a/builtin/pack-redundant.c b/builtin/pack-redundant.c\nindex dd9bf35f5b8..84f0d83affb 100644\n--- a/builtin/pack-redundant.c\n+++ b/builtin/pack-redundant.c\n@@ -561,11 +561,8 @@ static void load_all(void)\n \t}\n }\n \n-int cmd_pack_redundant(int argc, const char **argv, const char *prefix UNUSED)\n-{\n-\tint i;\n-\tint i_still_use_this = 0;\n-\tstruct pack_list *min = NULL, *red, *pl;\n+int cmd_pack_redundant(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED) {\n+\tint i; int i_still_use_this = 0; struct pack_list *min = NULL, *red, *pl;\n \tstruct llist *ignore;\n \tstruct object_id *oid;\n \tchar buf[GIT_MAX_HEXSZ + 2]; /* hex hash + \\n + \\0 */\ndiff --git a/builtin/pack-refs.c b/builtin/pack-refs.c\nindex db408256663..67dabb39756 100644\n--- a/builtin/pack-refs.c\n+++ b/builtin/pack-refs.c\n@@ -11,7 +11,10 @@ static char const * const pack_refs_usage[] = {\n \tNULL\n };\n \n-int cmd_pack_refs(int argc, const char **argv, const char *prefix)\n+int cmd_pack_refs(int argc,\n+\t\t  const char **argv,\n+\t\t  const char *prefix,\n+\t\t  struct repository *repo UNUSED)\n {\n \tstruct ref_exclusions excludes = REF_EXCLUSIONS_INIT;\n \tstruct string_list included_refs = STRING_LIST_INIT_NODUP;\ndiff --git a/builtin/patch-id.c b/builtin/patch-id.c\nindex 35c1179f7e9..fa31a1b7a60 100644\n--- a/builtin/patch-id.c\n+++ b/builtin/patch-id.c\n@@ -260,7 +260,10 @@ static int git_patch_id_config(const char *var, const char *value,\n \treturn git_default_config(var, value, ctx, cb);\n }\n \n-int cmd_patch_id(int argc, const char **argv, const char *prefix)\n+int cmd_patch_id(int argc,\n+\t\t const char **argv,\n+\t\t const char *prefix,\n+\t\t struct repository *repo UNUSED)\n {\n \t/* if nothing is set, default to unstable */\n \tstruct patch_id_opts config = {0, 0};\ndiff --git a/builtin/prune-packed.c b/builtin/prune-packed.c\nindex ca3578e1588..4d63f26b0a1 100644\n--- a/builtin/prune-packed.c\n+++ b/builtin/prune-packed.c\n@@ -8,7 +8,10 @@ static const char * const prune_packed_usage[] = {\n \tNULL\n };\n \n-int cmd_prune_packed(int argc, const char **argv, const char *prefix)\n+int cmd_prune_packed(int argc,\n+\t\t     const char **argv,\n+\t\t     const char *prefix,\n+\t\t     struct repository *repo UNUSED)\n {\n \tint opts = isatty(2) ? PRUNE_PACKED_VERBOSE : 0;\n \tconst struct option prune_packed_options[] = {\ndiff --git a/builtin/prune.c b/builtin/prune.c\nindex 57fe31467fe..cbd4c38fa0a 100644\n--- a/builtin/prune.c\n+++ b/builtin/prune.c\n@@ -147,7 +147,10 @@ static void remove_temporary_files(const char *path)\n \tclosedir(dir);\n }\n \n-int cmd_prune(int argc, const char **argv, const char *prefix)\n+int cmd_prune(int argc,\n+\t      const char **argv,\n+\t      const char *prefix,\n+\t      struct repository *repo UNUSED)\n {\n \tstruct rev_info revs;\n \tint exclude_promisor_objects = 0;\ndiff --git a/builtin/pull.c b/builtin/pull.c\nindex 4c54d8196fa..1a926f0b0d7 100644\n--- a/builtin/pull.c\n+++ b/builtin/pull.c\n@@ -977,7 +977,10 @@ static void show_advice_pull_non_ff(void)\n \t\t \"invocation.\\n\"));\n }\n \n-int cmd_pull(int argc, const char **argv, const char *prefix)\n+int cmd_pull(int argc,\n+\t     const char **argv,\n+\t     const char *prefix,\n+\t     struct repository *repository UNUSED)\n {\n \tconst char *repo, **refspecs;\n \tstruct oid_array merge_heads = OID_ARRAY_INIT;\ndiff --git a/builtin/push.c b/builtin/push.c\nindex 7a67398124f..9636ad52f4d 100644\n--- a/builtin/push.c\n+++ b/builtin/push.c\n@@ -546,7 +546,10 @@ static int git_push_config(const char *k, const char *v,\n \treturn git_default_config(k, v, ctx, NULL);\n }\n \n-int cmd_push(int argc, const char **argv, const char *prefix)\n+int cmd_push(int argc,\n+\t     const char **argv,\n+\t     const char *prefix,\n+\t     struct repository *repository UNUSED)\n {\n \tint flags = 0;\n \tint tags = 0;\ndiff --git a/builtin/range-diff.c b/builtin/range-diff.c\nindex f02cbac087d..3e67259aecc 100644\n--- a/builtin/range-diff.c\n+++ b/builtin/range-diff.c\n@@ -13,7 +13,10 @@ N_(\"git range-diff [<options>] <base> <old-tip> <new-tip>\"),\n NULL\n };\n \n-int cmd_range_diff(int argc, const char **argv, const char *prefix)\n+int cmd_range_diff(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tstruct diff_options diffopt = { NULL };\n \tstruct strvec other_arg = STRVEC_INIT;\ndiff --git a/builtin/read-tree.c b/builtin/read-tree.c\nindex a8cf8504b8a..89410db6a7a 100644\n--- a/builtin/read-tree.c\n+++ b/builtin/read-tree.c\n@@ -108,7 +108,10 @@ static int git_read_tree_config(const char *var, const char *value,\n \treturn git_default_config(var, value, ctx, cb);\n }\n \n-int cmd_read_tree(int argc, const char **argv, const char *cmd_prefix)\n+int cmd_read_tree(int argc,\n+\t\t  const char **argv,\n+\t\t  const char *cmd_prefix,\n+\t\t  struct repository *repo UNUSED)\n {\n \tint i, stage = 0;\n \tstruct object_id oid;\ndiff --git a/builtin/rebase.c b/builtin/rebase.c\nindex a2c96c080e1..727d9df847f 100644\n--- a/builtin/rebase.c\n+++ b/builtin/rebase.c\n@@ -1063,7 +1063,10 @@ static int check_exec_cmd(const char *cmd)\n \treturn 0;\n }\n \n-int cmd_rebase(int argc, const char **argv, const char *prefix)\n+int cmd_rebase(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tstruct rebase_options options = REBASE_OPTIONS_INIT;\n \tconst char *branch_name;\ndiff --git a/builtin/receive-pack.c b/builtin/receive-pack.c\nindex 3f35140e489..36a6229c2a4 100644\n--- a/builtin/receive-pack.c\n+++ b/builtin/receive-pack.c\n@@ -2480,7 +2480,10 @@ static int delete_only(struct command *commands)\n \treturn 1;\n }\n \n-int cmd_receive_pack(int argc, const char **argv, const char *prefix)\n+int cmd_receive_pack(int argc,\n+\t\t     const char **argv,\n+\t\t     const char *prefix,\n+\t\t     struct repository *repo UNUSED)\n {\n \tint advertise_refs = 0;\n \tstruct command *commands;\ndiff --git a/builtin/reflog.c b/builtin/reflog.c\nindex 0d2ff95c6e7..6250f5ad49f 100644\n--- a/builtin/reflog.c\n+++ b/builtin/reflog.c\n@@ -244,7 +244,7 @@ static int cmd_reflog_show(int argc, const char **argv, const char *prefix)\n \t\t      PARSE_OPT_KEEP_DASHDASH | PARSE_OPT_KEEP_ARGV0 |\n \t\t      PARSE_OPT_KEEP_UNKNOWN_OPT);\n \n-\treturn cmd_log_reflog(argc, argv, prefix);\n+\treturn cmd_log_reflog(argc, argv, prefix, the_repository);\n }\n \n static int show_reflog(const char *refname, void *cb_data UNUSED)\n@@ -447,7 +447,10 @@ static int cmd_reflog_exists(int argc, const char **argv, const char *prefix)\n  * main \"reflog\"\n  */\n \n-int cmd_reflog(int argc, const char **argv, const char *prefix)\n+int cmd_reflog(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repository)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tstruct option options[] = {\n@@ -466,5 +469,5 @@ int cmd_reflog(int argc, const char **argv, const char *prefix)\n \tif (fn)\n \t\treturn fn(argc - 1, argv + 1, prefix);\n \telse\n-\t\treturn cmd_log_reflog(argc, argv, prefix);\n+\t\treturn cmd_log_reflog(argc, argv, prefix, repository);\n }\ndiff --git a/builtin/refs.c b/builtin/refs.c\nindex 131f98be986..70bca724d2a 100644\n--- a/builtin/refs.c\n+++ b/builtin/refs.c\n@@ -90,7 +90,10 @@ static int cmd_refs_verify(int argc, const char **argv, const char *prefix)\n \treturn ret;\n }\n \n-int cmd_refs(int argc, const char **argv, const char *prefix)\n+int cmd_refs(int argc,\n+\t     const char **argv,\n+\t     const char *prefix,\n+\t     struct repository *repo UNUSED)\n {\n \tconst char * const refs_usage[] = {\n \t\tREFS_MIGRATE_USAGE,\ndiff --git a/builtin/remote-ext.c b/builtin/remote-ext.c\nindex 282782eccdd..33c8ae0fc7d 100644\n--- a/builtin/remote-ext.c\n+++ b/builtin/remote-ext.c\n@@ -195,7 +195,10 @@ static int command_loop(const char *child)\n \t}\n }\n \n-int cmd_remote_ext(int argc, const char **argv, const char *prefix)\n+int cmd_remote_ext(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tBUG_ON_NON_EMPTY_PREFIX(prefix);\n \ndiff --git a/builtin/remote-fd.c b/builtin/remote-fd.c\nindex 9020fab9c58..ae896eda57b 100644\n--- a/builtin/remote-fd.c\n+++ b/builtin/remote-fd.c\n@@ -53,7 +53,10 @@ static void command_loop(int input_fd, int output_fd)\n \t}\n }\n \n-int cmd_remote_fd(int argc, const char **argv, const char *prefix)\n+int cmd_remote_fd(int argc,\n+\t\t  const char **argv,\n+\t\t  const char *prefix,\n+\t\t  struct repository *repo UNUSED)\n {\n \tint input_fd = -1;\n \tint output_fd = -1;\ndiff --git a/builtin/remote.c b/builtin/remote.c\nindex d1f9292ed2b..1ac7e5fbce3 100644\n--- a/builtin/remote.c\n+++ b/builtin/remote.c\n@@ -1754,7 +1754,10 @@ out:\n \treturn 0;\n }\n \n-int cmd_remote(int argc, const char **argv, const char *prefix)\n+int cmd_remote(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tstruct option options[] = {\ndiff --git a/builtin/repack.c b/builtin/repack.c\nindex 62cfa50c50f..a6f2a4de1b8 100644\n--- a/builtin/repack.c\n+++ b/builtin/repack.c\n@@ -1116,7 +1116,10 @@ static const char *find_pack_prefix(const char *packdir, const char *packtmp)\n \treturn pack_prefix;\n }\n \n-int cmd_repack(int argc, const char **argv, const char *prefix)\n+int cmd_repack(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tstruct child_process cmd = CHILD_PROCESS_INIT;\n \tstruct string_list_item *item;\ndiff --git a/builtin/replace.c b/builtin/replace.c\nindex 34cc4672bc1..293ae6d327f 100644\n--- a/builtin/replace.c\n+++ b/builtin/replace.c\n@@ -545,7 +545,10 @@ static int convert_graft_file(int force)\n \treturn -1;\n }\n \n-int cmd_replace(int argc, const char **argv, const char *prefix)\n+int cmd_replace(int argc,\n+\t\tconst char **argv,\n+\t\tconst char *prefix,\n+\t\tstruct repository *repo UNUSED)\n {\n \tint force = 0;\n \tint raw = 0;\ndiff --git a/builtin/replay.c b/builtin/replay.c\nindex 138198ce9ca..c8e9098fc12 100644\n--- a/builtin/replay.c\n+++ b/builtin/replay.c\n@@ -274,7 +274,10 @@ static struct commit *pick_regular_commit(struct commit *pickme,\n \treturn create_commit(result->tree, pickme, replayed_base);\n }\n \n-int cmd_replay(int argc, const char **argv, const char *prefix)\n+int cmd_replay(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tconst char *advance_name_opt = NULL;\n \tchar *advance_name = NULL;\ndiff --git a/builtin/rerere.c b/builtin/rerere.c\nindex 81b65ffa39c..ae345155834 100644\n--- a/builtin/rerere.c\n+++ b/builtin/rerere.c\n@@ -48,7 +48,10 @@ static int diff_two(const char *file1, const char *label1,\n \treturn ret;\n }\n \n-int cmd_rerere(int argc, const char **argv, const char *prefix)\n+int cmd_rerere(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tstruct string_list merge_rr = STRING_LIST_INIT_DUP;\n \tint i, autoupdate = -1, flags = 0;\ndiff --git a/builtin/reset.c b/builtin/reset.c\nindex 5f941fb3a29..75529072606 100644\n--- a/builtin/reset.c\n+++ b/builtin/reset.c\n@@ -330,7 +330,10 @@ static int git_reset_config(const char *var, const char *value,\n \treturn git_default_config(var, value, ctx, cb);\n }\n \n-int cmd_reset(int argc, const char **argv, const char *prefix)\n+int cmd_reset(int argc,\n+\t      const char **argv,\n+\t      const char *prefix,\n+\t      struct repository *repo UNUSED)\n {\n \tint reset_type = NONE, update_ref_status = 0, quiet = 0;\n \tint no_refresh = 0;\ndiff --git a/builtin/rev-list.c b/builtin/rev-list.c\nindex 97d077a9943..a4186d47ce3 100644\n--- a/builtin/rev-list.c\n+++ b/builtin/rev-list.c\n@@ -513,7 +513,10 @@ static int try_bitmap_disk_usage(struct rev_info *revs,\n \treturn 0;\n }\n \n-int cmd_rev_list(int argc, const char **argv, const char *prefix)\n+int cmd_rev_list(int argc,\n+\t\t const char **argv,\n+\t\t const char *prefix,\n+\t\t struct repository *repo UNUSED)\n {\n \tstruct rev_info revs;\n \tstruct rev_list_info info;\ndiff --git a/builtin/rev-parse.c b/builtin/rev-parse.c\nindex 4285dc34a7b..26190aaa3ed 100644\n--- a/builtin/rev-parse.c\n+++ b/builtin/rev-parse.c\n@@ -688,7 +688,10 @@ static void print_path(const char *path, const char *prefix, enum format_type fo\n \tfree(cwd);\n }\n \n-int cmd_rev_parse(int argc, const char **argv, const char *prefix)\n+int cmd_rev_parse(int argc,\n+\t\t  const char **argv,\n+\t\t  const char *prefix,\n+\t\t  struct repository *repo UNUSED)\n {\n \tint i, as_is = 0, verify = 0, quiet = 0, revs_count = 0, type = 0;\n \tconst struct git_hash_algo *output_algo = NULL;\ndiff --git a/builtin/revert.c b/builtin/revert.c\nindex 7bf2b4e11d6..5f2ec3ade73 100644\n--- a/builtin/revert.c\n+++ b/builtin/revert.c\n@@ -261,7 +261,10 @@ static int run_sequencer(int argc, const char **argv, const char *prefix,\n \treturn sequencer_pick_revisions(the_repository, opts);\n }\n \n-int cmd_revert(int argc, const char **argv, const char *prefix)\n+int cmd_revert(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tstruct replay_opts opts = REPLAY_OPTS_INIT;\n \tint res;\n@@ -275,7 +278,10 @@ int cmd_revert(int argc, const char **argv, const char *prefix)\n \treturn res;\n }\n \n-int cmd_cherry_pick(int argc, const char **argv, const char *prefix)\n+int cmd_cherry_pick(int argc,\n+const char **argv,\n+const char *prefix,\n+struct repository *repo UNUSED)\n {\n \tstruct replay_opts opts = REPLAY_OPTS_INIT;\n \tint res;\ndiff --git a/builtin/rm.c b/builtin/rm.c\nindex 0e79cbab62b..59077efa4b4 100644\n--- a/builtin/rm.c\n+++ b/builtin/rm.c\n@@ -261,7 +261,10 @@ static struct option builtin_rm_options[] = {\n \tOPT_END(),\n };\n \n-int cmd_rm(int argc, const char **argv, const char *prefix)\n+int cmd_rm(int argc,\n+\t   const char **argv,\n+\t   const char *prefix,\n+\t   struct repository *repo UNUSED)\n {\n \tstruct lock_file lock_file = LOCK_INIT;\n \tint i, ret = 0;\ndiff --git a/builtin/send-pack.c b/builtin/send-pack.c\nindex 17cae6bbbdf..a4925ed5fd1 100644\n--- a/builtin/send-pack.c\n+++ b/builtin/send-pack.c\n@@ -147,7 +147,10 @@ static int send_pack_config(const char *k, const char *v,\n \treturn git_default_config(k, v, ctx, cb);\n }\n \n-int cmd_send_pack(int argc, const char **argv, const char *prefix)\n+int cmd_send_pack(int argc,\n+\t\t  const char **argv,\n+\t\t  const char *prefix,\n+\t\t  struct repository *repo UNUSED)\n {\n \tstruct refspec rs = REFSPEC_INIT_PUSH;\n \tconst char *remote_name = NULL;\ndiff --git a/builtin/shortlog.c b/builtin/shortlog.c\nindex b529608c923..70eb7890334 100644\n--- a/builtin/shortlog.c\n+++ b/builtin/shortlog.c\n@@ -378,7 +378,10 @@ void shortlog_finish_setup(struct shortlog *log)\n \tstring_list_sort(&log->trailers);\n }\n \n-int cmd_shortlog(int argc, const char **argv, const char *prefix)\n+int cmd_shortlog(int argc,\n+\t\t const char **argv,\n+\t\t const char *prefix,\n+\t\t struct repository *repo UNUSED)\n {\n \tstruct shortlog log = { STRING_LIST_INIT_NODUP };\n \tstruct rev_info rev;\ndiff --git a/builtin/show-branch.c b/builtin/show-branch.c\nindex 29237f653d8..05c10628df9 100644\n--- a/builtin/show-branch.c\n+++ b/builtin/show-branch.c\n@@ -632,7 +632,10 @@ static int parse_reflog_param(const struct option *opt, const char *arg,\n \treturn 0;\n }\n \n-int cmd_show_branch(int ac, const char **av, const char *prefix)\n+int cmd_show_branch(int ac,\n+\t\tconst char **av,\n+\t\tconst char *prefix,\n+\t\tstruct repository *repo UNUSED)\n {\n \tstruct commit *rev[MAX_REVS], *commit;\n \tchar *reflog_msg[MAX_REVS] = {0};\ndiff --git a/builtin/show-index.c b/builtin/show-index.c\nindex 540dc3dad1c..9e1f7ac9ca5 100644\n--- a/builtin/show-index.c\n+++ b/builtin/show-index.c\n@@ -11,7 +11,10 @@ static const char *const show_index_usage[] = {\n \tNULL\n };\n \n-int cmd_show_index(int argc, const char **argv, const char *prefix)\n+int cmd_show_index(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tint i;\n \tunsigned nr;\ndiff --git a/builtin/show-ref.c b/builtin/show-ref.c\nindex f5899ce9ff7..6ee05f09a69 100644\n--- a/builtin/show-ref.c\n+++ b/builtin/show-ref.c\n@@ -287,7 +287,10 @@ static int exclude_existing_callback(const struct option *opt, const char *arg,\n \treturn 0;\n }\n \n-int cmd_show_ref(int argc, const char **argv, const char *prefix)\n+int cmd_show_ref(int argc,\n+const char **argv,\n+const char *prefix,\n+struct repository *repo UNUSED)\n {\n \tstruct exclude_existing_options exclude_existing_opts = {0};\n \tstruct patterns_options patterns_opts = {0};\ndiff --git a/builtin/sparse-checkout.c b/builtin/sparse-checkout.c\nindex 2604ab04df5..23f1548fe54 100644\n--- a/builtin/sparse-checkout.c\n+++ b/builtin/sparse-checkout.c\n@@ -1030,7 +1030,10 @@ static int sparse_checkout_check_rules(int argc, const char **argv, const char *\n \treturn ret;\n }\n \n-int cmd_sparse_checkout(int argc, const char **argv, const char *prefix)\n+int cmd_sparse_checkout(int argc,\n+\t\t\tconst char **argv,\n+\t\t\tconst char *prefix,\n+\t\t\tstruct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tstruct option builtin_sparse_checkout_options[] = {\ndiff --git a/builtin/stash.c b/builtin/stash.c\nindex fcfd97972a4..518d297b47b 100644\n--- a/builtin/stash.c\n+++ b/builtin/stash.c\n@@ -1871,7 +1871,10 @@ static int save_stash(int argc, const char **argv, const char *prefix)\n \treturn ret;\n }\n \n-int cmd_stash(int argc, const char **argv, const char *prefix)\n+int cmd_stash(int argc,\n+\t      const char **argv,\n+\t      const char *prefix,\n+\t      struct repository *repo UNUSED)\n {\n \tpid_t pid = getpid();\n \tconst char *index_file;\ndiff --git a/builtin/stripspace.c b/builtin/stripspace.c\nindex e5626e51266..674ef939769 100644\n--- a/builtin/stripspace.c\n+++ b/builtin/stripspace.c\n@@ -29,7 +29,10 @@ enum stripspace_mode {\n \tCOMMENT_LINES\n };\n \n-int cmd_stripspace(int argc, const char **argv, const char *prefix)\n+int cmd_stripspace(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tstruct strbuf buf = STRBUF_INIT;\n \tenum stripspace_mode mode = STRIP_DEFAULT;\ndiff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c\nindex 85fb23dee84..947bd9d0f6a 100644\n--- a/builtin/submodule--helper.c\n+++ b/builtin/submodule--helper.c\n@@ -3528,7 +3528,10 @@ cleanup:\n \treturn ret;\n }\n \n-int cmd_submodule__helper(int argc, const char **argv, const char *prefix)\n+int cmd_submodule__helper(int argc,\n+\t\t\t  const char **argv,\n+\t\t\t  const char *prefix,\n+\t\t\t  struct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tconst char *const usage[] = {\ndiff --git a/builtin/symbolic-ref.c b/builtin/symbolic-ref.c\nindex 81abdd170fe..9bc70229468 100644\n--- a/builtin/symbolic-ref.c\n+++ b/builtin/symbolic-ref.c\n@@ -41,7 +41,10 @@ static int check_symref(const char *HEAD, int quiet, int shorten, int recurse, i\n \treturn 0;\n }\n \n-int cmd_symbolic_ref(int argc, const char **argv, const char *prefix)\n+int cmd_symbolic_ref(int argc,\n+\t\t     const char **argv,\n+\t\t     const char *prefix,\n+\t\t     struct repository *repo UNUSED)\n {\n \tint quiet = 0, delete = 0, shorten = 0, recurse = 1, ret = 0;\n \tconst char *msg = NULL;\ndiff --git a/builtin/tag.c b/builtin/tag.c\nindex a1fb218512c..a80838eb8e0 100644\n--- a/builtin/tag.c\n+++ b/builtin/tag.c\n@@ -457,7 +457,10 @@ static int strbuf_check_tag_ref(struct strbuf *sb, const char *name)\n \treturn check_refname_format(sb->buf, 0);\n }\n \n-int cmd_tag(int argc, const char **argv, const char *prefix)\n+int cmd_tag(int argc,\n+\t    const char **argv,\n+\t    const char *prefix,\n+\t    struct repository *repo UNUSED)\n {\n \tstruct strbuf buf = STRBUF_INIT;\n \tstruct strbuf ref = STRBUF_INIT;\ndiff --git a/builtin/unpack-file.c b/builtin/unpack-file.c\nindex c129e2bb6cb..97886840f8d 100644\n--- a/builtin/unpack-file.c\n+++ b/builtin/unpack-file.c\n@@ -25,7 +25,10 @@ static char *create_temp_file(struct object_id *oid)\n \treturn path;\n }\n \n-int cmd_unpack_file(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_unpack_file(int argc,\n+\t\t    const char **argv,\n+\t\t    const char *prefix UNUSED,\n+\t\t    struct repository *repo UNUSED)\n {\n \tstruct object_id oid;\n \ndiff --git a/builtin/unpack-objects.c b/builtin/unpack-objects.c\nindex 08fa2a7a743..3bcdaaeb5fa 100644\n--- a/builtin/unpack-objects.c\n+++ b/builtin/unpack-objects.c\n@@ -601,7 +601,10 @@ static void unpack_all(void)\n \t\tdie(\"unresolved deltas left after unpacking\");\n }\n \n-int cmd_unpack_objects(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_unpack_objects(int argc,\n+\t\t       const char **argv,\n+\t\t       const char *prefix UNUSED,\n+\t\t       struct repository *repo UNUSED)\n {\n \tint i;\n \tstruct object_id oid;\ndiff --git a/builtin/update-index.c b/builtin/update-index.c\nindex 35a1f957adc..1d1d87d08e3 100644\n--- a/builtin/update-index.c\n+++ b/builtin/update-index.c\n@@ -917,7 +917,10 @@ static enum parse_opt_result reupdate_callback(\n \treturn 0;\n }\n \n-int cmd_update_index(int argc, const char **argv, const char *prefix)\n+int cmd_update_index(int argc,\n+\t\t     const char **argv,\n+\t\t     const char *prefix,\n+\t\t     struct repository *repo UNUSED)\n {\n \tint newfd, entries, has_errors = 0, nul_term_line = 0;\n \tenum uc_mode untracked_cache = UC_UNSPECIFIED;\ndiff --git a/builtin/update-ref.c b/builtin/update-ref.c\nindex 8f31da9a4b7..06826a90515 100644\n--- a/builtin/update-ref.c\n+++ b/builtin/update-ref.c\n@@ -713,7 +713,10 @@ static void update_refs_stdin(void)\n \tstrbuf_release(&input);\n }\n \n-int cmd_update_ref(int argc, const char **argv, const char *prefix)\n+int cmd_update_ref(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tconst char *refname, *oldval;\n \tstruct object_id oid, oldoid;\ndiff --git a/builtin/update-server-info.c b/builtin/update-server-info.c\nindex 1dc3971edeb..a5b7d86727c 100644\n--- a/builtin/update-server-info.c\n+++ b/builtin/update-server-info.c\n@@ -9,7 +9,10 @@ static const char * const update_server_info_usage[] = {\n \tNULL\n };\n \n-int cmd_update_server_info(int argc, const char **argv, const char *prefix)\n+int cmd_update_server_info(int argc,\n+\t\t\t   const char **argv,\n+\t\t\t   const char *prefix,\n+\t\t\t   struct repository *repo UNUSED)\n {\n \tint force = 0;\n \tstruct option options[] = {\ndiff --git a/builtin/upload-archive.c b/builtin/upload-archive.c\nindex 1b09e5e1aa3..49d1bb7fb44 100644\n--- a/builtin/upload-archive.c\n+++ b/builtin/upload-archive.c\n@@ -18,7 +18,10 @@ static const char deadchild[] =\n \n #define MAX_ARGS (64)\n \n-int cmd_upload_archive_writer(int argc, const char **argv, const char *prefix)\n+int cmd_upload_archive_writer(int argc,\n+\t\t\t      const char **argv,\n+\t\t\t      const char *prefix,\n+\t\t\t      struct repository *repo UNUSED)\n {\n \tstruct strvec sent_argv = STRVEC_INIT;\n \tconst char *arg_cmd = \"argument \";\n@@ -76,7 +79,10 @@ static ssize_t process_input(int child_fd, int band)\n \treturn sz;\n }\n \n-int cmd_upload_archive(int argc, const char **argv, const char *prefix)\n+int cmd_upload_archive(int argc,\n+const char **argv,\n+const char *prefix,\n+struct repository *repo UNUSED)\n {\n \tstruct child_process writer = CHILD_PROCESS_INIT;\n \ndiff --git a/builtin/upload-pack.c b/builtin/upload-pack.c\nindex 46d93278d9a..3b6c83fbce3 100644\n--- a/builtin/upload-pack.c\n+++ b/builtin/upload-pack.c\n@@ -17,7 +17,10 @@ static const char * const upload_pack_usage[] = {\n \tNULL\n };\n \n-int cmd_upload_pack(int argc, const char **argv, const char *prefix)\n+int cmd_upload_pack(int argc,\n+\t\t    const char **argv,\n+\t\t    const char *prefix,\n+\t\t    struct repository *repo UNUSED)\n {\n \tconst char *dir;\n \tint strict = 0;\ndiff --git a/builtin/var.c b/builtin/var.c\nindex e30ff45be1c..4a5c2649d6f 100644\n--- a/builtin/var.c\n+++ b/builtin/var.c\n@@ -210,7 +210,10 @@ static int show_config(const char *var, const char *value,\n \treturn git_default_config(var, value, ctx, cb);\n }\n \n-int cmd_var(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_var(int argc,\n+\t    const char **argv,\n+\t    const char *prefix UNUSED,\n+\t    struct repository *repo UNUSED)\n {\n \tconst struct git_var *git_var;\n \tchar *val;\ndiff --git a/builtin/verify-commit.c b/builtin/verify-commit.c\nindex 0d2b9aea2ae..c5859e5b2b4 100644\n--- a/builtin/verify-commit.c\n+++ b/builtin/verify-commit.c\n@@ -51,7 +51,10 @@ static int verify_commit(const char *name, unsigned flags)\n \treturn run_gpg_verify((struct commit *)obj, flags);\n }\n \n-int cmd_verify_commit(int argc, const char **argv, const char *prefix)\n+int cmd_verify_commit(int argc,\n+\t\t      const char **argv,\n+\t\t      const char *prefix,\n+\t\t      struct repository *repo UNUSED)\n {\n \tint i = 1, verbose = 0, had_error = 0;\n \tunsigned flags = 0;\ndiff --git a/builtin/verify-pack.c b/builtin/verify-pack.c\nindex 011dddd2dc3..7ad456649d2 100644\n--- a/builtin/verify-pack.c\n+++ b/builtin/verify-pack.c\n@@ -61,7 +61,10 @@ static const char * const verify_pack_usage[] = {\n \tNULL\n };\n \n-int cmd_verify_pack(int argc, const char **argv, const char *prefix)\n+int cmd_verify_pack(int argc,\n+\t\t    const char **argv,\n+\t\t    const char *prefix,\n+\t\t    struct repository *repo UNUSED)\n {\n \tint err = 0;\n \tunsigned int flags = 0;\ndiff --git a/builtin/verify-tag.c b/builtin/verify-tag.c\nindex c731e2f87b4..a7bef524191 100644\n--- a/builtin/verify-tag.c\n+++ b/builtin/verify-tag.c\n@@ -19,7 +19,10 @@ static const char * const verify_tag_usage[] = {\n \t\tNULL\n };\n \n-int cmd_verify_tag(int argc, const char **argv, const char *prefix)\n+int cmd_verify_tag(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tint i = 1, verbose = 0, had_error = 0;\n \tunsigned flags = 0;\ndiff --git a/builtin/worktree.c b/builtin/worktree.c\nindex 41e7f6a3271..3b47f9832fa 100644\n--- a/builtin/worktree.c\n+++ b/builtin/worktree.c\n@@ -1392,7 +1392,10 @@ static int repair(int ac, const char **av, const char *prefix)\n \treturn rc;\n }\n \n-int cmd_worktree(int ac, const char **av, const char *prefix)\n+int cmd_worktree(int ac,\n+\t\t const char **av,\n+\t\t const char *prefix,\n+\t\t struct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tstruct option options[] = {\ndiff --git a/builtin/write-tree.c b/builtin/write-tree.c\nindex 8c75b4609b5..1b467d6ed23 100644\n--- a/builtin/write-tree.c\n+++ b/builtin/write-tree.c\n@@ -19,7 +19,10 @@ static const char * const write_tree_usage[] = {\n \tNULL\n };\n \n-int cmd_write_tree(int argc, const char **argv, const char *cmd_prefix)\n+int cmd_write_tree(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *cmd_prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tint flags = 0, ret;\n \tconst char *tree_prefix = NULL;\ndiff --git a/git.c b/git.c\nindex 9a618a2740f..2fbea24ec92 100644\n--- a/git.c\n+++ b/git.c\n@@ -31,7 +31,7 @@\n \n struct cmd_struct {\n \tconst char *cmd;\n-\tint (*fn)(int, const char **, const char *);\n+\tint (*fn)(int, const char **, const char *, struct repository *);\n \tunsigned int option;\n };\n \n@@ -441,7 +441,7 @@ static int handle_alias(int *argcp, const char ***argv)\n \treturn ret;\n }\n \n-static int run_builtin(struct cmd_struct *p, int argc, const char **argv)\n+static int run_builtin(struct cmd_struct *p, int argc, const char **argv, struct repository *repo)\n {\n \tint status, help;\n \tstruct stat st;\n@@ -479,9 +479,9 @@ static int run_builtin(struct cmd_struct *p, int argc, const char **argv)\n \ttrace_argv_printf(argv, \"trace: built-in: git\");\n \ttrace2_cmd_name(p->cmd);\n \n-\tvalidate_cache_entries(the_repository->index);\n-\tstatus = p->fn(argc, argv, prefix);\n-\tvalidate_cache_entries(the_repository->index);\n+\tvalidate_cache_entries(repo->index);\n+\tstatus = p->fn(argc, argv, prefix, (p->option & RUN_SETUP)? repo : NULL);\n+\tvalidate_cache_entries(repo->index);\n \n \tif (status)\n \t\treturn status;\n@@ -736,7 +736,7 @@ static void handle_builtin(int argc, const char **argv)\n \n \tbuiltin = get_builtin(cmd);\n \tif (builtin)\n-\t\texit(run_builtin(builtin, argc, argv));\n+\t\texit(run_builtin(builtin, argc, argv, the_repository));\n \tstrvec_clear(&args);\n }\n \ndiff --git a/help.c b/help.c\nindex c03863f2265..e7cdfab6432 100644\n--- a/help.c\n+++ b/help.c\n@@ -16,6 +16,7 @@\n #include \"parse-options.h\"\n #include \"prompt.h\"\n #include \"fsmonitor-ipc.h\"\n+#include \"repository.h\"\n \n #ifndef NO_CURL\n #include \"git-curl-compat.h\" /* For LIBCURL_VERSION only */\n@@ -775,7 +776,7 @@ void get_version_info(struct strbuf *buf, int show_build_options)\n \t}\n }\n \n-int cmd_version(int argc, const char **argv, const char *prefix)\n+int cmd_version(int argc, const char **argv, const char *prefix, struct repository *repository UNUSED)\n {\n \tstruct strbuf buf = STRBUF_INIT;\n \tint build_options = 0;\ndiff --git a/stkOs5Qh b/stkOs5Qh\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..6ddaad1925d3a5d4c17b021e8eb54bf93966742d\nGIT binary patch\nliteral 10485768\nzcmeFa3!q(9buPTt$w>$a$q5PMfe0rWo*Etz5fCHc<%tG)1yGA@_c>>uoK5!G`>-E*\nzP<b_pw}%uf)c3V&)!tie>)%>y`%_C1U%h=vX|KQ9ib^fzp=hmAr3(M|ePhhE=GuFo\nzkSMk7y$04kYmPbQn6EL%9COSu=URPsxj8nue!<DZ#eb(nL3@vXhlfu;{e@?oCY;wT\nzNRox~lXTt_`}cfgeUkb!_!l2Z4*Jtq9?&!YjUP&So^QM%nZJ+c;4QZ%vpt8N^6q5m\nz?E}eSFTb(pS$^I1$us$^ynA_~=dmY}m9sq0`hRas4&)hr%@IlV+<av+ydTf%zk5xx\nzzt3|&eqqw@S@S!0B>VFm`@6>`Pxl=E$<gG;c~1Px#YuRccjA3X;kkZ!^1Mebd)nvu\nzyB<pp<XL;!^+~_yq!mvl;W>5qvgD`noc<SYOn%bm%tM>W&z}Bm@RIct$xE8^3eWoK\nz)03Y)&s-Z^(EL#HOg$s3mM0_M`p7f-Y#P{>WY2jYNjCkM&qepHPY(2X<<vm($~PQ)\nzK+h$erAhYuZaukVmglk??n(Gu{%aQ&p3U>WlkDrcV!>TWzvrrBKa{-cBiH=wK^u(U\nz^njj9a%@t;{H*8W*CZ1+oLG3OC*PP<-}I&Ix%QB2lK)$u#wXsH^n0co>yv#w*L`a=\nz`PuW6wL$BcCzEIF`QUew)&V~4TPBk1`Sbgdwm+T04=4M4D)%HEKEL|;!gKva_auB?\nzfBpT>=yTKRBa(eRH*b9`>3QCJM{@H%o?DK(Kk0dX^Pc3E19*Pnj0cnbd3L|>OUZ#g\nzZ@B%~<e7SAUUo#H=cDtInV;~v^~%>I&(!lv_uiEp$aCAP?n(4qe|mCT*Yn1u4<tX%\nz^UIU>CqK>SO?zLH^n333!~2sv9=vS7p0~XHu7uB9k32VdYwOAbdfxV~vy$+<{p+tx\nz_`LJt2YR2s{;TAjKgRQ`9~embJ@5YHT?wD}bgnNvzjpIUN%!-<bH9`DdH<pR<LRH9\nz7bNfh;ri_P^<|eO{hr_Y%tXTHw_keSKA(?X{ba)D_tOvk)Sf@M>dGX3{%G)?WVYwy\nzFaB`y@jv-a^6{_VpZsy_fx>gw!S^TebNBZ9l77!8&b%x6X+59(y@7<!r*>cSfA#Zc\nz$K9Dc)6ZXi{Kn)z>iOK7_a(DF@A*vfx$fuduSq_)kLTW79!z?kd%u+2yC2WreB{{V\nzr}cbs@exV(e0+KGMLb_R>4^T%?`})Jw4cx4{qK8{19`rD^&67^6Q8gB$!n7Rc^<fW\nzc{1Dc5AV1y*{|mZCnf*z6Fy)6&J)SLo_|VDO8#m69kW0G_R8d+{tG>iob*VtKhL9I\nz_<Zso{e1JXYZE??EqwAPdj9$EpGdl&?;QVFvR}_*4<z5|dj93xZ%p`n_hrw?pZBg$\nzzIXgPlkbh6zR%}hk6N1idpzI2>9K^*6SurZ&kv7%F!?|5NeA9{S>c)Uu9MO^pStrI\nzdlr1^-Rb^33*UTe+V45!4cpS6J^!(7u=KJgQa;Om>0^3UUVdVF<jUm-{`@Y|^?8o^\nzay@;z=jcZV(*1pg-+p8IU+p>e?AN4)=bi`C<4*h10X@fGb62{r=Xo!_Cw=}Q7xsUC\nzb2NSaf3oKVZ&{u`)6eP8e|gI1Mc=>wztnT#i{F{*dF;ycWe+{@pW@lH{PgshdS2Ol\nzP8yzzm%kw`Jg>MXy?7tbC3h@O59GOY`m*%W|FO9L^YydROMmucZLs-s+tT>C;-drU\nzzsGasbrb1<JXg&>H$C8I{FUid{hn{$kzVx-Jg@$@&!_*{pKE^W)^uM_>6|Cir+uEh\nzH7)%Z&+8sKD&<o?^VX+*MqhMg`jb3kXTCiB&-hdhx-ji|w)|OI3D2*-HLb+Y-@Y@g\nzM9;*n_ovzOm9x@`=-IOR*fe`CzAT-5^bP5?hdn2)J^RKV|M|81(pvZPz)@-K8G0HE\nzM$_<I_m_92&*ano(3jHibiRIi`r|y?Kk-1izt4_6*QERN-0-XgX?Sj4{>t=epW3<U\nz&HmhS@w?M!`uT-}?nrx{AAC6dg@4Cq_xM1nXXe6mcl`YR6X~86i+i3oyy&d-4R1W^\nz-|hLu_urZRS9xw-@>l6TpX+W-Z{5eU_s9p+pX9myl9#6k^4w8bpX&M8%hNmj`IUJe\nzPJiXZ=REE6<}<EI^=!E{ee=^iZ+Xp?sh%&Ln7+lIcMP7CzT=`h(s$g5zwdo#wN)Cg\nzHY;Q8MssJ<YBxta6QyRQT$?VpC%eO?iAHlvbz8N*B_T?QIOCn^WV%_IsO~6DRBM%b\nzd8*PKE>(7nRi@iaT^cX9GP33I@ltuT)u?sa712ue5n?`GJf_R?Ppb85yF^g6)M}U8\nzm1L||DK`s{W~Xl9B)m;0<?(IRRz-itDkYSAv{o5+XsJ4pLAHSUcx9s8sWF#rRUnTw\nz>J!y1Nv+yy`@6@ql1j6QN;WH~)HXw`Rma-Nc(u|W2vTFU&UmFXRcUUi2ybGdRGpe`\nzv|3e^C={qsFLkEJ%WX7$sWn}0wyeQg$#|t*9-H+1BkZXLyNO-f-sx>ytCm}(TBETQ\nzEvd4X38}P_>pBf|z}VDyty-@nt?3%7+&6><ZmNb!xmIh8p|MMPDK<Q#9AdGfwZ>?v\nz-WW%16bB-eLb$vo4mL)w1v?r<ojcZ;nnIBx3Ngg`e|oyMvsjE6GFchhS}I47W(7=Q\nzjW{-$Sc9skt7!hoN_o7}Obj1IX8VmzqM;08*p2CSwNY;w`?bk%aM!PHLpl}c`s#EJ\nzX;!v?S1R2&Aw?_M-mJ1MjRIJ&-K;V@4`bX+l`(vpjj4Q$6_O+@d%4|imP+krrxFDx\nz$~AC#7R{#5LmI3hE>U{alTF2biUF)sEe3En#tEjUD|HMX7Qskh3{=`NK*KTyOccrj\nzY!^gm*1U+VooG0#b`IPEhJyH^yvc!%33(O<Gf9Tpm0FEXbIj1ajwq|8Mh~;#XmA!E\nzLZpciTNwkxmd<!#QmKcxiE4ekGzzIP#;#A0J^Qq^wTjA*Cl+C~Z*<y}kO8{{ys1{e\nzs8@ENvud@Z(rQ=Hu@$F@oGa5A7MrW?9K8h<8LdIGmRg<GG_nVlf{kW%OSKO9GzJOm\nzuvVi9Ua8j0H3y6}%C$-hb+<J2_GC!|-GXE`jGVDX6T=fiXG`6(GBy@`v{7!3Cuq&i\nzv>_TGPLCNt3}8qWgJBPbh0rQXB-e|nO%Nfk#;A`!i3v<U6Bt8!Z||J0B((;cQKY=V\nzH4e5k%hQv|RHupmUr=gQD&v*$(zbQ%l$xV&t?cx<z>+h}c>;e+?FP9A-D1^@=~Jd^\nz2p56u1BiA=o@q{3ab#ls!`eF0IF?gHyIhs10B^B)&2k+w+ouuZ69bK-pOS5m%V;&^\nzA)p3nNW#&Hiju!Fw0dQGj0#rB6DQ-_t5c;i_||%+-7Jr7<@{a1s<bdWjdhwW$gkQ?\nza4u#KpOQjhZEE!xFO9)Cw_(22pz@-T8_LZJCmYCEm*=CM+E&A=V(heb*2ne{kC9f{\nzA?7F*(v3or)=Q1?QOLP+y;b&+SnISVd!P_VJuvIoPJO(F(m^H%28kflQq)U=wMxiO\nznA6Q_9m6of^!HA)iW!1avh^tS91QDZqJmi?BmhzoAes>c=oXb`n<_~J<UEJYi$Ru?\nz4PYyaO;;#qwH**0<g=WMq5}5Bcpqp2;c2-iC`@%?X9!7M@Nz-Yv@-S)&7@QJRAbOZ\nzD(D(aGWjbeu41^=8I=kEB_~D$I1X0p8HY<3jR|&YnC%rEr;vtJ$XSzQjKaa@vn~3S\nzLJ#dmR)cD!V%xM@grVmldh`5ag6L>enTgA2vKEAHj#siqOvXl$NejKpH<NpOtDv!x\nzu}P?CP;J_5?Vu-gLphl0NFCv#_Y8_eHRy#HuWF@Ey?R}TU0~z9B<UfpADisdw?aNu\nz67~m1VhB=t)jLxL!6XO~sYq|998r?0O+~rXz<`HXL#bMj-l&145Qe=rs*uNM5zdrj\nzjT#1(aqd)QDh_J~_HiS$(MF?|Y%gP|St>B9y|min5PK!CXuG}BlaZ{8QO`qz)Yb`}\nzZbAchq8KXGLa9KnUPZ5A6*5JR0Lc~vW~*A7D(~n6#^Q!@!0=m`Z!pnTujkmWK_zU3\nzf*CQb6I5@+c^WWMtu~78(PG5&^?9S!ZcGQX0Ge!U2WV;(y7@RXq=^Zv5}>4N1O<2>\nzkgq5xL7*FIx-4P9Ri(NVpj#^SN)s$ZwF|6Jh$Fw4me?ILHi<b+DwyIMnEne%eNvC9\nz*<2n&N{xD@G=a&fo%9d@OCg7zxs?+cmqBRhyhv&c6vwoJO1;&=z|QN{a#`U*EiQo%\nzhNzYLl+x>}avF<A_^bo?q{%fjddP`$0?##33|1-}n2<agJ;8~^$}1HoE)=3B8mM3B\nz7Y@%+jHOJowV~umB05~#g)B0#iL{u07};?xP%l)IOHQiHD15urn~)k1=6lSVoY)H_\nz$Ez(#h60dX)PQMWy3;a#ERAZ#srF!`mc0hVc&k(QKuh(Dv88O^cmtxoeW;ChuwdtO\nz*aB7_fYh9>m7x=lLCNN9FQrm#P}*LFhCER#LrLn1^sHbrp+;RFr<`g`^eX^h6D6o-\nzP%*tpC@`f5vU*u_L!}=DODAO(vNT$m1eYZ3>NHg{?-47UwH(vB`bB_jD!^tQoDaND\nzFpcjF-9t|77hUeOC)u5hc4gcPijr3_;h^Ebf^8^-vqX2noi~ceru-E#LxX_(C)yNB\nzXe(bJ=iD>lD=0&fz7y2S0#Y69B03aR=oTQ+FagVwj5Woa4K<;P$Hom!BmyV|`k?^A\nzWEkumo~JEOO08OXv>-WRctpilGwd{}1=;xbh>Y6{<c*y=^-ey<9N%Vc8@98MkQSp1\nz4NamElQD>z$-}e4JWPw9+mDL*7sN}PPay)+V5P}rW(%rMXg9|$GC|HzU`tLHPs3Q`\nzUd<|MpF*b2kp-ADUMycRsAxnAoaVt2CbKOtYkF;^)dtPXT1%j8pvHJ(jSf|?#&kBY\nzq`@~URC2QF3l{g105KiQk2MSflk>Ck)yh3YOhXfxYCsBupD_x(eSN*+1gFZ)tq`n~\nzn`ZQk;W(TZ<^on2Efz{C>41hTwI}mQTcsi2U~p{3phWLV74)S94Flyirq!@m*E+pK\nzFvc1RZFnB*U@HzdPwUB?gc)GGusPVLXOrSN7*;nf<qX`0t<bWf)PTfvDzK?E%UMh|\nzz?BGT3WK$X>jX4T5QD5>%!z=BWz0%oP2OokS>y;WK(%gX;~A7~EoPDKrM|UFP+iQ5\nz>@9}=Z8RaSB5^E6z<h>@6I$h#Dl|sSytGN8xv^#$$0}kA@@lopTVN*GiP_qfNo6<*\nz8*f$v+EC0OR+_F()9zY_b%NR_rg*M@Xq&PjtT&ten^V+lOVcnpPP-tc*@ROgmGH{g\nzB=i&Tt!wU>-zTZxV`$T+(j8N&Z!5sGSf)8<>$a**Zc5vW)0d>C>MSN`+*GxpH??CT\nz2%dgg4CvGvuzf_ugTV{Bdm#~489@v3+Hpxj&8LgHRw^+qSZ#~cxgs;|Id7`Uj_E24\nzZZ_O<uofP1$ueuN=_A419Oai`^d#dNs~ZuWK3d{DzzDaMTKxoZlWOQs6x<rN0FQ|p\nz39y+OUOH1KqsArnV6aB_90bAe-ic{90_SDqh>`)L2r`>-5ytf?=lZBHOwG{;i+~%y\nzE#CsXG=(jkYM)eCEpn@5mgrd%^ob}kNXWgL=>oiqe`0Viw}sfL^3G8Vc`lNR&BFR;\nz{HA%+yT;luh5!|#A9}W9<W1KX>Mhe9S7^5GNVY^b%-W$Fs;cw@hBoMqi&~&N%C@d#\nzyy?jutNGG&1zP}^OMQ!LvRucWTQ?CU$J9ukwJ|^or#BV#(0VgYqi%qlY=`Ba*8J?7\nzJXwq{Mzyx<0h?^-0r%}zcA9rVduqBTjf)vfBID(q1sNG@(P|76TX8dx*)$xsVP6X*\nzq*}Y?)s6Qw(X*u54kbe~?kw?6wNR~orRqlL4(HXFC8JQyLPE^m+H66W!YUG4U>_)j\nzDCvm4Nz^xOj1UB<Z5(rQ4nsR^IveL@<`jur&YjMYz6Hd+64RL-j-8tT$&_)irYT=s\nzooastc1Z|ktU{-!v2g@T$vUVDvY+&canJ;I7-(SuE|&dc*eqz~wmxkjYHI+yPFyJ0\nzs?cz$6@aT;i^@&hUayRzBzSku9vf3Y`N7pWMJiJ*C}zdVOw!u`ssb0vUgl;6_EFfI\nzx~tMJ<D}E9(cs9v?i!7>r55P9+^q-hXkl*=yE2&)!3ZjPRp><M3<ZP6s}S@{mONV#\nz*3o_(%w;rxxiwbBB!%eh(yn@<%Gx<W9Wa@ex0S0{iDKQ$*&W98hLN(}Ok2;Y_E0ae\nzwOJj-&J{MB8=V@JP{YMe7%PM!jy{4d&WaWh@*)-Sv#ffOTlpev4t3728t!A*3(Pa_\nzj>5R()`{$?zL2DO7S?`>x=K0QU(*V!2r7o$;*H%hs;kgS%TTzu4@rZgI-?8Dtxs6s\nzSvcPeW*-!YqQlfU1t6+}6`_pO{7b#WAhbqEE5aTxU{Km2Y^z`+sX0;D=I02Y{bAc%\nzi=ei^gIH-+U}cUXC>CkK8Y@qiN2~DNpzA;sU#{1&bfw$MEC|}dh*MzH<j4>-dD(qG\nzB?m|c<tTCS8sUbhI6ddoV%S#cIYF$Gnvf?k5*oFZa3oJ~o6lBq3bL^=&Wv9&2qhBs\nzt4kSxFII4Y!1@$XMseK#aK3MJwoGDg*C6aZ;n_+!5Ca#ZEoD(_j=f+V>~+|WL}B@k\nzm19@h7Isx^m#S4J-$~%Mr?~q}uE4sZMe9D-0+5Whjgu%eMdt&xpb6=K=E6)ku>V!Z\nzB0%&Swjgs_VJnaj@D?-%we$|#X-0!pCOS2z5HC?gfdYP_*4S>FLv)Ss{Q{p^B8ahR\nz1i(z*;$&Kd%?u4>e>f|&%WyKH;$ps15)T&Jg3%5ud&3DJu*GzF3tP%b$oOI0P=H|R\nzt{wVmY_XJT<()9kU~@qexy=OQ)iPGm*k}c_lAed#)iH=)bGgZ)R7_JSC3Cz?+%inK\nzbi_Vb3<?yP%=Tnt5WsLUmoe?!IEXVYDi8aOcE-4LjH9irC^-BPxZl&2ssIeCg1j1<\nzuo)pS4G?j{2nUkLELPf6DqvBV6r;Jf-vNG+8p7CVfbq)=56Xzb&kIZ0X{Hbwsb!lG\nzinZi;18t5fX##`;2KQeH;0_0Q-bMwM5S1puRzTQ!Ew#)k)}Clq?f{BdtJcVN-=rg%\nz66Y*ku5E#$)SlFM#2QiagVJ@XsIc7og0e3UFznaEJ7+9(oayt3(V**rf=JxMu;nz+\nzIN%tl0A6QSxI$AOY>^n<9T}@@R<|xVR=9oPFhFu!7wUsb-jxbOs}t2(BHh;1FP%B`\nz^^2js$mOEtD6NG}Zb2@FU?QULr|*h#)<Om0v;fnx4H(p0P;F@`7xLIt9p<z;+Sik3\nz5%oqlBrvYSS%x<3beyT(pHPekw<yao578AU3n>SfL^}|(5Uu1@CJ{J<sOw=&u<(LI\nz%j&?`W=T;`I&^pnZlPz%sD1T=LwJ^LX&@3BG=_&RHmj%wvGc~IXebOdu~B$)C~T_Z\nzL<2h!+qJ^a%Wb1@oEwlPE@<8=L1xHutJJ|J69SSo0X?j9=m%k$UFU!Dibnu@RkyP0\nz-1m<_YAg$5MwVH)JUR*yVX#g;Fer);5-JT_y#g~MIL7>Vz*TfkaN2@l35@L;Sg%x%\nz?d4`2<4cP)tu7puekMd<eb755RpJ3i+Y#j1R2AAD<ZUJe#G%`(<FtBZ1mJLBbTN$S\nz{Yy7M18`sPx(>#&tXWX_Y{p?qQZgh|SU$aIs#?ymD!(Z*fs5Ti${p;4fSC>prYY(O\nzqfp+)!I9XzkXLF}JTz_D+DO%PaocQct<>{6XxD-}>0mERgR~)gc2Pymw44#1u8wUj\nz?+}kjVf85;P9EOmwiPl>tEg2c42G;@RU*gEZ0cDC7LgYc#uJQ5gkfv|>z84chF>^V\nzqg|l!ZSb4x!gB>|Y8pksrXHOclj)k2zo|0zKcr!x+Yw1e&C)m)add~nU;K}*gHYvm\nzUW@*{S_r|tx;@Es6MCy$7lG@9GoCYg4Q_f+K!rv9(D3T6PGdg_rUMsRTnIoB!tNw?\nzpM;Q)<a|CLVeIBm$k57yHK8CTpj&VX$DH9iSeOmBS8L-`bbaUx6+dXey3|lr-?yAO\nz>ZuTr{{xP7tB1_REsD08SR#(<s<yFuqh(a?6FnO~#fI0Pih*q7d2=YJdI$#pi9+c#\nzTHX0QTf#X8y^zp&R5nc#280Zb`2sGDRI9r&(D|5<*z8=UIzhU^;n)Iw^C<<ukQ5!Z\nz`=V9gxD;~}&Kc`b3$Q(YqG$89YdXFU)(fVxo1MXsyeI^5JYfg45pH<NjRb7q0A`F0\nzMerfL5Kv?f0Imv9s*<!=lgqTM)v<`>Xh3@C6j(K)=3x|gF&T%wsmv?XCL72%ilgz+\nzIA(<DYErR{dQ*$&VvmFtW_7eL$evRZizD4PC2u6j54n+P=E);WedLldYUv!i3lU9I\nz^e5a$JlbYz3KPFd){W<-*5b@`yKW5jJqCqEf+J`FD$&+qHV}#*(<f<2rfmrd2>|RT\nzaj}gEdZ6HV0o>iNL8slgad-i#CoAJs$Vk1mXwKs5-eI*e)~AzQp>8B}KFljZLMbV7\nzVd!+%U$mx1wTV*G-NIm^-!WInzMqJd50+QHo<>w+4wxmB296z=X>8Tqse`??x@^u!\nzi9QBKu$1)>^LEBu!0Dc24%>)WOHSa3idG+NL+&i1iAEvbz^w9bqgO*Os5CaQ1!577\nz3Zd!An%(c*_J!2ei1BE$G1wdPjt!Y8>=;?kN-mIO5#s*OAPPQU>FB;ZwUy@@ruD9s\nz>efnSS_H&48bL-cb8ca^3nk_zu=NPq0on;w8fHHm+&8szT+nk^HyLKtnnbJeq*d0e\nz8qGaWs7HOV>Aqs>C#+uFa)yvL_sq%isig|0&*@f`YkeA5CECJ1an^q7H7OIANM#hT\nzL8S#2iw-WrTtnLmibX{%hoHMS3Mn*tB2W-**p%vRn2|$Z67Sq5qSMcI)LbSBo3q)Z\nzG_qk4U<a|FEvVbHe=HqTWkoSj2s9Xy!xdL5qiJTO09n9;V=gUWW}#r<oY-PNx){&p\nzqblAlS~-uQKHzs4aCqjaC|wizGPQ8Xp)yTl72Se4^|un3uaOTcAj#}pDT@U+IXE>Y\nz+Q;_=SHebaR<wX8SGm`jmY{G&<}o3d%<AKsNOGRSQV89NQf`wE9cEE%RjRyvv5srj\nzCK8`qp=VGhD7Usw!vsr*15{utF=>_sN3pk0JZ;OtW>&+TEYl22XR|BV0IO?t3ff-7\nzpc}9q%!4%)yUY(DsIRc2hvu;p39uATHpUaOt^f}9#!^>VzcVGRH*C5Ze1K}n^|k6K\nzhf^1rC80xxlo`_zb6dPuUL6_Mxu#@npM)xGa>x2PL`M<%$aH%j)y=VL1J0IKVA%S(\nzQbG~E0_c5qeyI$1;w@Of>@)-mG93^&9_RoFCxIymZo$ww9VF!B!nFhpdD4Z@_OS1S\nzviW)svsHBprcVz-Hx9I5n9jC`5^yIJFU&l!kK21?2lNedFz50Y50zL*1MFYuM4Ch3\nzRv99B4$YyELgCd6Rt|^M3UJ7S%J%YP!XF9;!w9jQm@!I15HqasoDAj^sOnKBn3+V(\nz<6&E{g;AU+1Lj0*sq10P-Z-Eaa<ou^YEQ0`XUc+VhKQ+!aQ2jyA`mkT)IK&_4zyU7\nzUTE@uL>Vl^_7pfLo-M?<8)1<dh>Ey@c7!(4VlX44P)<vI4)(D$*m%P>h}>=(-4Ihu\nz3@XJAmL!;nYgj))Q9-Wu8ch5XRT?|3qInEv0@zYG?l3@g4maW}PVMgfBJGZ7oW6)+\nz`W_*92yrlU3KheGvQ)AK$73PEDr4IUA#8&nG2`s)Prb4Q2RpQ$Rq6Xe!Ey~OHg#A?\nzQ_4gOqBRWQ9G(Pf7=^T6U`I1rDZ<*IlPH|8F@z_kf&q4_mCZW^VBz?(vLt2|ECZI4\nzrd%RGs~knMl>)@JCWzb<)eCVXN-HdBQ9MI&CDJ96)GCXhmJvY>2(_~pNVhxeYK9|b\nzhPl05+iGw06}0sVxBU#}+lo;e8{FHwWc%<FkaIc^Aw0Hd-w4~}bpm!CxMYhM@`2L&\nzlpp06NZ|yKsY7m!BJW@lhGDn`aR`MI1ZX3rrmwM(1;L)sg>6YB8)v`^^2{9f`{AQ1\nz7!+`C4@qPa$U|XqlSQ|;!^#w)XQ-v>^jL|eJNF#Gl+YE&e$>F}1E-mcJ>nHKVlW7d\nz!>)#%?Y=RXTXh%?sj@>LB@JE_g(<qAa)T^_StKbsy<lQz#qFZxXB$+*uBa*$Z}`@>\nzby&ZbDmt#kqr!#4u@rGS4lC*UHt|yF#$MT$4vc_ilQJQMWHcE{viUpoes2G3)1GlK\nz3c-fS5!`7{oMC<oCJJGGm*HD-h};<iN?Ukby-|m&e;maP%_yvQO!cB8vt$91Q4S~s\nzh;k2Fsaf7$0GhRrd4<Fw?<gGhm?Jdo!MR(qZPxneb0s6hg=I$w<5Z&#8Jp%z5@_)r\nzn0Y%>>JftimtHsQyM2UdqTVu1X9wywQVgkQU|v&ELoU#9rzgd_e*Q}vS?KHl$DE^O\nz4LJh4D+ad~7K%$5z5B68!!ZW1cR3P}Oh`|wr96a9aFK5;LvAlaL`JyUn4X3<p+#km\nzWd!1M5E(etLg(a&nCBzLhTzAH#nZrC0&ZcD8Zcb5z_NvD$hPx@;oEscb`dJDng9wh\nzC57#2;YbH?Fal-x^r!&iCO1(-SU3t`VOpZ@$kEG%MT~(7ix%x7NFlYTCR(dUxKw~e\nza0U{d!KJd8ir)j3CoYpYYUt1|2z>+KbrK=k)_7AlP4J8*kIz6W<;JzF-ZWFl8jZhI\nzy}%nd{LKJ*VauAk1J&%&j+~f?%Ai_01Ta#ft$^ITj6I2FDGOq3#P2x$1ZfpWfR(a$\nzn`N?KaJo>ov>O%jrrK$wP!U<H>YB8mW@#bof4O$i0hh3{q#ov;1ms34_p)O9{;?p4\nzhhbHt0*fRj09Vzr>rrYj3&W&rgosEJKm(^HaOzaVm6)k;0D@*bY%=4tQ~?^@6@wKQ\nzG?pj_j0#p36`a6)AIFSyNeKtOS)y5vytEMaR!Y^66~H=eYrU~uMVH8e1BaHX+J!~R\nz%w4a5P2G$Fj(vt=Lhc|yCc``Gz6E+}0fKWUQ5XwjI@%TSyI@FBfQSbuA+sDx&4d&j\nz)a*rwArWdq3S83ZGz0?BVM|&|+Mx?+1DfQ6F&&ozF^t7Bk2r)-{#L3b=r0(UFbC=S\nzAF*2zMA=t^dd6wOW2o4;BeGIUsM;Ey$YgR=PP=(j$(2qTyE5SP1~UoI=Bc+BHgRf0\nz11CeHpt5LTKC6yZQC1j)a6uDx00V{D;z`vC?BX@7Zg63YPA7Y@90!)lYq#6D#NRN|\nz@al@XZNueZ3LjV_a{#!U=c#jmAG62-G*(6Nc5zJ}Ex*`2NT<LE8!PkDwc8^=l}2am\nzp4xp8b{H&AU5G6=o8_HMsuy?Z%7S@KEIO}<h4Xq?I8?(zSuHFWDq*2e2Mgs@urOA!\nzV<^&=ZF$j(p+Y6BA9B<}qzEz&k^)S`-2|MFB!Ftx*6p~q0FyIcpq4iIm)yX=T;uYu\nz7V~Yme&9SSlpCCnFSSQ&2^E}rYqE_CQxX7i7)b*`EA=cGxFtvMSs7LuTJyW%iH<)}\nzUYq4Ki-%-Im(q}`2_g$=8I?!Eh6rJb`G6&$OBd`MP41xEu*nf&&O>WNVVa6fJXxM-\nz??k)Cc@Q+@U1nG1(Atdjm>GN=7)eg7JdR}J*@mUjjc{f8wEVO50R|I}E>#KsDq)ki\nzUvg?P2S!{DB(Oe*DbWj`Wv=)>S!LrM*||EvP1SICmrWOeIWq*w>CG}LVY<x5?U)tC\nzJG!@l0t@ts@yvWg^s9$$3ebTNdtl@dnCdwT!!wdn3*5r_5{6~dmPNv-V$^iB<f06x\nzLJJ<%DZFklPs!6xZAeIr<vb+1?~u{v35&n2McGg!g+++)v}O)jGYdkkb)2tEPj)9u\nzj5)c!84qMY!*StGt00*X9RgE)e%C`cOv)v+fCvxDuw6fvCxxHA{82Mnz`;D`dq|LD\nza_WshKJX%l=1tmDg~}mqHVcEBX7AY`5_?4MKW_de@&nFbP946e)ILNJdYfyokYjYk\nz!>(p`JZ5b~S+@P-*lPV_x}iE)*8?=2zUEeS|I2gfe$fxr0ZsAY#mBMk<HNQpoDR$i\nzW$XWd<!61fpczU{wa}`XF>C<2rE#JU05OtE6+qbU(&7xu)5$6h<8#X^dWANH<F9Z~\nzrLT|1Vis~6Y#wcMNEVNI6aAe>^VSp0F>yTCUvaoz0DyJPl_EnyN7G{!X<*>>BM+u}\nz86@9VNuVDKmc5|D&8?WbwE1J`r~&SP*cry84`gfsiabXpM-T6B^pP2&g3q~QwqTvc\nz;tK)+g@L1(gK6P`wHQZwGB1i^OgEU;(LUH_G<81=r@(FsrRgS<g=sH=t$obg+~A^W\nz6|*f_zqk<lXK=zSM(F%P7f1`eBFyAX27}bx>4Z2SF}K)W55?RBJ!~LGup1>)6&&!!\nzcbLV7+X8HALCBvzXLdno^33tD2SsnHDsCUZ-cgp^zy%_vh!=>9lmwm5eqqc(#M-v9\nzU28&Y?t!6#@EBrAiIVW%JchswS=e@QaQmNu!aAI@qNoIb0wRT_m4rn^%|#YgJ#iil\nz_!4409pQOFskdWELk?%zpj}|i3BNRecks-l(9|%B55vexC=iWGuycn}XI16-SWB+v\nz(8V@JgPV5fDL>5M5`_7&vFRuUPdc#(^~VaeA}qd?v>PD<h8xCmfQjN+!)Bk<*@UQD\nzFbY@>_7?hxXB%KUy?&>Jl}&kE%*tS($xb1+a_0c6FBl3H0^^p)uci6U8O-)L4TaS~\nzb)oUOktnATbe*tGqxBoMthl`c`$cglNS8*^rq~@}yYzBxGJzWd)Iz?IZz$mXLYSr$\nz%4zOnqGPhriEZlO0U($svUs0B<0NK~_2Ud)1Svzl_B8sgEXN5U_Gt%!3l2*mQDV{5\nzewr1lK?asi6rg65oIQ<%zgG+vSqN7ahBJZ#!Rj=^aB<TW!vicK>p}{;t5d-8+B7-%\nzpi89gaqh=3v8yuZ-fio^u1Gn7QPYCoAr?#-3j|k-s4u!AHPK26S@W1gSEGe_NfGoA\nz(@nKSsBfNy42zKn=}=%1YKB9f^NhCCLX;Jm$P<rHiBr9>$FxtZkd02IGc92nCKGRY\nzvzIC^(-sREWgQOVoR%F%hxR6~iImPlny^5TT9@NXYjX>cnWWI|)Tn~$$03?PrlR|x\nz^_h`53kExMqC<rgxweDO<`0%DGcb`h&3clgGKd8T5*5Pkk~_7P@&oe{G%md1N{tDu\nzAW#T+_n`}ENT)=R4;YW=Jxx4#+B~qH77_KwdDepVsU-w^7fMN)i(HNgEvnepcJBvP\nz%{->TD>6A+Y*ia@F%4iJDa;HYA+%nK(9LM_<f@<UY*<@>VoaIxRB6FYVx~YV<F2fH\nz9B*t{me@)qUlFcSwP}gFYSgzxDbyB96I4rFMARLV?0_ON9rlg%j(gWI^;tyVRiA+U\nzjErp_IV{^>%DWsr2X4Vx)E*S7+IEdyts%n+GmlG(MWSYBgL!_YM-@OmCNi$&>JT2X\nzHmZxzpo@mmgcibesJ0Rkz)M^xiw)=q%lx(6|2Br>OetJMapfk&8P96rw5z>{Ni@t<\nzEw514v&@<Uf+faMkAotMv!X;896Z=U**8Xatd&wult$2eg3W0nI_N=p;WgrdiwX-Y\nzUs%j{McA59HHsR5xneusA<9Us=DABEk@cb^cJ$X=c>Bd8BM2u?pku;de!FyyqmHEu\nzvFbpWn<V0B8Rv~YbRjj3E3UVQ8o<lOfl0=}q=)@vNFw;S+qwpRh$>jtBkrwbK#p3!\nzO4Q&m%Y%u~K^Uc2Hd7K5;zMk2#4H3Y_vuOnR(c$VWu=5kZJxaXS7(J~m|>Fy2Sf>E\nzFN^sk#t<95?yE?F;%!Vd7`=|tYdS6Dr6~`2`aOQ31f~|@N?tpT0Wo4F<6O}LbRDWt\nz1tJzQvK6^qU_uKY)CM|#Ov9Bi^tS2}auQ>B$!(bf?^LglMxcOtgEH@3&Ze|kOK(z9\nz&|I8;{E#*{g!e=`zE4pea_Zn_b%~>f?IcGk5a1*!T=k`6m{4<Kg{^gmscJSp3b@cY\nzXgZ5wp$ny#`E_khMIbhi?p2I|GFUsn?CCOJkUa}fl_Q%j<EW6WrG_Q82*9wU@itE3\nz-UkJcYgVvqz>vU6*cVEU6iEmh&c;WwR?x#3R>-WtnU5X3CqgA`DyQR}wyd3MP&06y\nzW;d#G=||WiIP!e^K|ALXkOrWh90iRBB0x8RAXp-l0CLe0$9QX2$2n)Jt56iaTSwYE\nz#s$+5Z0#CCT=pP>(k`Usd(Iglj#4zoluWe&Vw9OErz{d&)`k?um728t#60Fi&o_@F\nzMEYbXiUL{lcvL8fMP@AQNvSFYuTV|Y)GV=>bhl9lscniN^V^^oHSE$|=%XDR8Piw=\nzF`i&ACgl{C8#J7ipzId0<Rb3Ut{5ZoUDz#%Tllyees_7)zHVCRN@r_92u~hIksGkB\nz^F2p)fh48$j&5KGLzZ|!r(2Z{PMzCww>P?3;kp1lsO<~VR3D2o3_B|xoC|Zd$~Fp|\nzqz_(7C8*Rm7UX63VwnE{T<X;iPT0k-QvhpEa|=SF*<sdKK^J!*bj?gXmj$E`+(B}P\nzlx1W#K<J(rDQ+@2B+{_r$>W%;XJ<t)J}OcGr}4O@)0651xdTnHxDUf=5X#F|cn|TO\nz!#>@C{Y+LqP(mBIVT%{&1}Kp72w;eDuwvBx_U2;F?hd}`Vkz9{5e!rcTOW8LLhOnP\nz#Z7TH2i6tX2N{OI76d|eY^x?Hu7Q#Uj8>3a5Y@uUI*(Xd8iwy=m<2BbWmL?54l*1z\nzcKU&KH!bUl1i^(*{zyOPhho@peIg6B3MmZF4QWP%SLI+#6k*B+4oB43oGY2JL)>C%\nze~1#$)e-?q{Ux$7h5))qK8BicUu0z5l#8t|P=fW*gQ$vDhp>Rs70nhm0q8*y3X7EL\nz4*7MX_y&O~3f2#P4}?u9R4%*78L(046EI*<!Cf>uB_F`JgiWzZ;76Zh7|pX#lF7(1\nzIDGpDo7PYTA+eO6>b<fu)t2X_`US15xgezWiTO<|!R)jcRYL164k!gD%D5AVhh@0S\nz86jAw3t)$3sIHI?EEP=pdB{lS0FU#=kz#`NE;hL6R!c6CMS*YGAykvP7)*B8G0|kH\nz<qL)pWt>&1v<18PXgc%`nh>V%2qRM}*m4vi%B_37S%~CHRGK=ZZL_h%KEmS#w=*1w\nz#sAy@h;j<e=S5?%XA6Nq86)~fg|geR*_?K1s@VzFfdYGFZiS$$vu2Wl8vcFpv7v`u\nz?NLmdPTZ(zz3LDeRDgi~qW50+IjYQ=kl3+M^I}0Eur(IrO$wBz;ocgFKgV==APbO?\nzwN;^A1-4S2aj1xGWniApGsv}HN@TA<C<!mgr*LOM?3yLzg>#EGT+Hz+&)ULU`6;>x\nz7_Hn1jaK$>_;u8*`CRN}JeL(k6m#<gDP?6>A;b8#6gYPUV-d;NRSz^B*;~$cxB`Oy\nzKd?9X85G_LAtZ7+#tvrXCO+GtFIRAaWk7vO&luR7$H3S%cL@(oN}^DUc?{7=aSX~=\nzfYJc$iS@W}xo<}={Z3%j?ntBJ`-nYhAv5iAk3cNJaRGy93)TcQV6ZJs$>*+@gf$99\nzl=*0Da~o&?z$#D-`8~fDo8P!<;rNzcgG8778X&(_RCjem#Pb*dc?dbXqmcp2%&5>8\nz$L%F!;j>nRY1hgw{Vf$D%u9o-z#<%)#wb750jH&yPEgeH+=7B@u9wKlInpNuwiOEy\nz_%t{Y5e9~Vz6<MZMvc2f<PI!UyMWx8&(P@3PW?oBZUMRt-eNgGJ70zJ^Nc5M6zW7s\nz0c5Ujd1C0+rWo15)KEVa5qybhF2fa!o@}NkYDtd@YR{{P#4oHB(|H;mY(kP^h&NA}\nz+fL!M2JlV;5$^e$9Co$eK#-4IsbMq|K}V#xw~z<Jo9;TnbdMu!PK`P+I>nrwDVDkk\nz(|XYjvq{PCnfBR|lP;uB7<$?4IfX;E_Qg(nvq_Mrt+fheWU%9DdMw7+a8!DlbM35B\nzzz>m8j7YG!FmsXgwiq{pTPXs8ZN*?nBVqvuS6GJYW38oe<c0oQxGkMFPSpdG37V40\nz@EMO9K1gZj*5Oh;74~;yP`n#s>H$b)UsZA|4uq?=ag;%RRV9Py7u^4dRVj8>!xfep\nzJXE3>1wD-pioA~o{)#x}#pL`v0a&?Z24tszjTJkj%z<a85z)@@`Q3rr0(p@ZZUTkT\nz0UIaypeJV=9&6_nH)yb~U^rn`MDp#_A~15Ni6Y#W2!*HXbgjD8+~mxc5F3Iv@RA+l\nz;n*RZtl@ZusjeGlVHi4Kl?IB7Tr_11hhpJ?uEQhVzrJ+u1HxubV2gmnlk8nE>gqYn\nz_6LeEFawYMyZ(tAesDM+D>e*bY@FfZL2901_J`^#CL<2NzW^l4!~MgOLup`Oj{J}n\nz?)jJ9*6n^-4lb}VOsx>aZUN+~TozP`vh;qRX^4e*ser$1dlgc`^mr*O^#9_)Lpgo(\nzbhtz9zA6tu=2fRc3|461O-wQrzcF^OH9L$O2L&nw7$q)e9m`i#9x@eyPGsGHF5*HA\nzNE3ZRrHIHxPcbZk<z_kIa5DEC`8`LT2=|ir$6!SQ3WNZRKA|K&n!WHcWoc@1ttx_t\nz6t;gu<;^2A%Q>`3S|*{^Q@0EC7a%G!*3Pyu0vU><$-Gcvl#W<YR*;D@Bo;v=)P)6W\nz{?-6e&5H>gq(5C~c3+ie;CKb5ahP`mc4T<lr?H{LysD)z4L6MC1~u<agcJd9=NHCt\nz@+(A1QOAC;Us^0{s2yS8MW)HLIXfaVEFClu@u^ZQP}!({y%O9?sSIGw)}o&(J+s6G\nzuDDs3d=Z>hLqu?Qbv%>^g9uAeTxJ=R5a`%VN7o94cTmF<fPPZpQYTC8bqPMjC~nbF\nz762rJETWAAZG$i2`5|IU$qG6RIE`TZHmeQSx?u~UPje6zSwxIOGkTN+ts4i8BiytM\nz?a`d2bz=wJ?PUQ(Eg?VrL?TR3a<Gi<)-7VgCn?~B2uzjG?I;>_wNMwhE9iHhbU{Pf\nz-dH$d1zgQ82$<1@^E(s=v(bwOyQ7-=Camcu-Ep$-DHWBru2{5SF%zwQ<p*LD5~87a\nza=yyPx3rn;QYNW*xUi;y)j~M9g>Kd&4&QImfevUr-56jxbUD_6vto?ZcxDLtQP>Q$\nzfnlCK8o*)m$q&-SreC;|P(pe++|XY@Fe`Qpq6su90L%ug3s+(|%7j~-ajjVl#P!3v\nzDWw3@B06w?Y~}|mVqUSkZ|n=_oB>O?<`|nct?Mu>*yWJ0g#en7qbh?%u{wQ|C1fZ<\nz_9HDuv@32L!<~6)^#KANW*#95k~@%(KoI6!QCVt!Q++3lkrrxihnd77lBeeEsL1ez\nzQ?3E6n)GEeeb$q+DPVRfQig6^i<+evG=-E3?(|L^PU8ibq5axpaWZo$#-R|HQF9zg\nzVmn4dAAV}3dB|R+dhzBKIQn4z0%!WNRrY4zYk`-KEL<2XaQEfa_qMc!p%MmIbBa{G\nz!4mBKVDF~?hAhKw!?)>0D<rxgL#N^$^APmG^%4`rL>bC$jZiD@7&f|T>euzzrei4y\nz&*-8GWAKlmk)P{6ON3Ckl-Kf8$#`P781ze=9Eys=i7K2@G|xQ4w-^-1*CX<2$2w0s\nzG$ZL(=5aE3YJ@7ST(lzFfQAjl3|g7Yhn1zMqjgbfbBfF9;uJs*Mo-}K2_}pYyj{gu\nzLhg??Hi;&&$v(I)V_=X`Ww8Lqvmf1bh|L-(m{?n76~x87ew@Q<1vav#!6%3txFya4\nzY<=2@u=>gF{L5)rBVjEkI}-OnBZY%4#z{$6$XgzMk!wLkv3#^f_q$d3P9BI@gqm&c\nz-DXMbkc@9gaDyS!z%_yR`5?oE0~0wsW){>}=Z~$(x~Naw7j?8eIgNnaoOtdR^DK5d\nz@+RQ@##Y4`rf!P?<O-)GFY|8gEVK+tV;v=AgmmV{KwKD_fC`Zs1QA)RPc-zwhK9my\nz#l9H?(u3cun58ozvTa3|mz{k~r(d4$kZl73t4LfzMG3+s0qq8OOUJ+UX1*odo=&>L\nz*+P$B@r7ZGmz7}<A+;=Gc4r#r9xxb+jAN~4!9_7yFWM!rPcsII3_C8Dv_5teFGWy(\nzJzNc8g5VW5w(-Sy_eSA|5b~huEl#@dAyJ2cZMf+|F=tj0ToJ_N^y%Qrm7FR+X!)an\nzX?dnOWG2TCS6_3e?6y!AAqFgtr)09|kP~}9PpYfMa-9{}g;E4{nN&i_g1=T~$MZ$L\nz)kMid9XZ^Y)Wg;&vc&<)(_-2PkKVx%@C6Jxkn22>s)LZJc{$7!99S_TSkTiWkQN&;\nzPCjGU6lg^WDdW;e=;D?qd8w(uCXvmPz%c=0C0QLeDueqq(G{VreI2~%BS*MAsu}3c\nz8bJjUre`{?2^ZQl6i78JZB*Kbx5Y|ujs_y;yFwHOuEe>EGh#4o_t_Ognu1v{i3Q^o\nz<_7f=_h7;K+16bd2IqBI!-!;}1a}bW95Hgibio_HG`MZHGg`U_4`1uuf|VZFediPs\nz&mP0062XYa58yF#FB3RJZp;A;9-1Wvia)<pt<Sof&p{}#RD|FO4<OY@+VUhfgG;}=\nzFsd0be0dc_FdC^igqga_!Xebe{<UIks1%UNpcoct7iPz4N7EGdc&2pBlG2rTGx}yW\nzu)txYYQ;d&Ad8q*%7^tgHnOP+*cnAXHcyloN<S91PXWl0=1auxs9C^PtR6xUZ^oIL\nzIE7V$0(cT5k|o#12DiPKB`O9u?nX%Lk0F3-!>yFIRY>6r!xlgCj8sf%4JdzT8f@*_\nz1HmaX#2LPp%o1b~ypF6F8o8==)9L0p#P_lr*E4-1z)k$Zb)PJ=p{OpkYGtK_$6#+E\nzvH!uFurnUh?12#)>YNwCd0Bd>T8n%GC&Y}VI0*xAv;l|67;IPdu`1zS0Bi0H&OInZ\nzvkROVnQakdA<dkml-D$%;nw4Dmo_K`M2m&2Y(gPM{)G!M87Tpm9p`{D0sV=ePz@2T\nzboYypqNy2yh8xz{h(!VbgrG5vZ?8^ygM<(Vq2f4zvptuHh9X_)(O-f)Kcc||u?X-y\nzsRiW8!A&-2`X)NchAEmZ*~a0R(Xp+dYG#t02ex^0QgCNwed57qC&#*>(Ii#C_Jun$\nzrp*U4jkf^8S(ZKyJRA$}TybJg=iftPkt6m*$Xc=&$VCXU1R<O9dQuU=$QhLa{}jb#\nzS1qzEvxNBat9^Qg-vI-3mZm6xvoWU4^H^}kE#?E#{f<D|imY7%F+8U|2Zx5WF9)I|\nzc|)@m<L>67Mkl4{wq~j<i|q+)>gFW}u-Sp(kP?hLRmDAE){k9kK};D62^fjn5O9`c\nz;YfxBbnkdLN%BqrdHRL{gJ?`hyu<*JRzZX`ueq?trj+wH%u-z2db<D(iS0HZRv;7L\nzIE=4vN)&(`0V->brms<CgC~P){Pcn~>)9H*K-i`WOg_DF#r#a!^uykLNQ9+LpD5EM\nz#9di2EnlopGG>YsCOBJ8Gg+3#?D;m|%a1FP6KF{@3`R)$K%#FJC>1Z%ppsF*LA7nY\nzOSQs{i?QI~wiHg}P&q(hU;)8&%$-<DG8UKb`FIP)1Iz`^YqpkS(+k~#o&ae*f!~xC\nz2)a2Qvw{}5wt$QqCz|59A&4fO%3GrV;n`~*T|jE>9SSvAlpPerEfbo>FhjSXjoUoh\nzluL$<l2*WW^DAq~jLgJ=kWAQN1gi+Fi1CBlh0s)F0axni%I(P_s6%W#iza&ju3|8o\nzMk%6r^ru;Y@l8-1O%F<e5fWqb6<6;UrVWv%fWdbu?Ba2LpaLIM^K`J9;}|o=Iu;tC\nzu4Vwnp=sNkcW?_<O@0qE3wj+`|EOk`xEo0<07jIziGNWFIM{N+hJO5Ft9vn+U3-JW\nzYR+x2KFZzOX`2zybVz`*W27c9<v~wO$U52z^Dvj;#HalVmvOV`j7(fdWRv?V+bta4\nz);@s44JNwi@;n_xHcV?cwHU)ho1L3CmqwczQ)sFWnuR0y)GMQBXfccino4a+SOk(Z\nzhCF5%>RIq3!-rR?y;;u#q})IaR$Rl7$__JtwF&kBf;&MbGXV>`0B9MQv?$?4(2RaO\nz3R3`t5$Nt5Vm8cEbnV0+X~@1%r2WQDMs-K{$;$v%-^Bq)54(od)f`gBRxFo)b$-Kx\nzOIW+|nh|j8;+a`oBPcu%h9u$ma27^a<63W=Mn=7iD!2GxXSHkkiZRAL@mf4j71Tk4\nzgmwW**8)jAxb;LZY1_ee2b}Cyqs(%7*#-QsblC-$U%ctc3(g09{s$RPcOw5#AR!?F\nz{R2%HO=Bf7^biS7GSMO$TgC!Bl$T?K%mO&>SK)MH3j}<LfGv~<%<5PKu`Wf3$fCA1\nz1G_oXLOvrDVCqTaxUH(o6z%Fxch$l0!b-D0hHtudC&bnquKTnS^u%=ou=0ix0DJO%\nzB6?xMl)=eu{_;G~<e=>n*+h${Ei!o5by#6@Lh&3o(5ku)YH-fxJ*(2=>`Etsw7SA9\nz?osAi6VQBJk$q!{Oo*oC`V4DLGg^nHDF8{ifR|nP8Lj1&7qFm%%N7(DL7g48jdV`I\nz%7j+*!H{)v3;qQ4afqj^(V^(Nu9<-#uksE+0D>Epf!GebZ|p)rWt$EmB_U+z5H_1*\nzE<>EnWQkN?Y7!0~;qhxTXlG`ZNS4}iDqI^y`P;%(W^`6E9DPL0zH>}}3fHYHpF#jL\nzSQF|S>_b`M1c9Ry^mJ@B>xMlEjv~m0DaCd6EeG@u?@Ph3DqXT+^9W6Pyh8;ZD!5J*\nzosP3W^5~cIAvgb73%adXGtLquIi1djs*bxmLmEK!1?u3Wj!#&+OM!u%rUmrtN44Qm\nznDB#_86{Hnio$M&7L;=|t$J)tS<BE$+CsA>1n~8FlNcDV?b28=7(a4@xeE0hrHh<Z\nz)lA>a1?v|n1n%;zJJG2v=iY1H$=r3|=0UdIfX!`gLi7M&`qwr^j5v<3>EhZV;L1Z|\nzti6LLlfbc1q~MKczCI|ObPGokYX@t2j>*{;x}Bz9(1U3P+7TUUOm!zizz}U$-I<ar\nzy1ZA5RyeJ$k;pGBwcQR0Or`SM_1s>bd;ajY2|0Vh;i}PrVg>KtY5Mq>)RDNe@gIDL\nzF!7R`wHHOV7A$zYC9wev=EjU1ws3%ERvSU2$a5@l?C15CcEgLULLcVItsCJnSP#cH\nz@?<K8XY6g`yMb6o!XjqvnBzC`ok4bBSo@I0fCKU3Ynu#!Qo~z;pSa3Et}4wMmU*X`\nzL{v;u&XNTf<fO(Nwr2yE`HV|O%*(8eMDNMGRcsd!^8r`vg~sNlmM#yK<7Y%D_g&dO\nzNxqDt*!;QS0$Tvw^NpzbE>MILC8l+tTGz&0V0e0iMHu`DCaN7oH#!VoUj%pgjeNPY\nz&AR+TKWL-TC)i^Yx#Cc}oDN)S&N&cbP@W+q__0#zOTn`*0%5uV9L!{fZ2B|nUKF;X\nzCUiG~b%*H%m%-RtWI7or;bGp;r?v_}F3Ty7u~ya{HTsI0XX|jHIE2b1>{PrhP#Rty\nz4wH6Jbh(Vdg2Y4vC7>z10i2oex+6N%up`NK-yI_%gCenZ{#_1RcteZ?uwQk60;3(e\nzJ`X2T0$uw%*h#{obkshXv>hS~w;<vgC+v;W!cuGwaD%?(VD&AuROmJEV3VJVQLplp\nzUuI$(+ivd1CQ-SYGv(db+ai53K;xNWi)?Aj@Y-dYWB63<1QuB449?G6vA;7BNy`bR\nz>Yg=7a3%|)1bk?Bkm%ZZ+O<rd#SKB!Q*vJhcb2x19PWRmi@jW^JGk+13#NRuU;v>X\nzqKXEni@_o_mv<ql<-z&{G)rX)PZ!Kg1>0<;Zt|uJ!`YQ>W0w_qyu*8{2t^W{fJ;Cy\nz!&&w4T>yODkXzZj|0*O86MaB37LYe}K(T>QK=8Q}EGiuddK|uRR>6^wjIP}?9D+V$\nzNu@<+p~u}%61+)wDBLFsk5GDI_PH-MxC8rrvEvmTUW8cNk$VbD-3W;MWQE<SC`&;e\nzf*8vKT82xsL_m02nz#|;xF@D5-mX-DBMM-#4rXygv%#sCTYT6ju{9d5n}(H1UVIp4\nzT(vm_i$TgQOGMvwZ*G3{H>`ZkV-a12YWjv~pw49q*Q;8F`1S1~FJYr?mCTzac<<<|\nzmf5Fxqy?D)5yWH^wgURC1G&3V;1!@bk773^I$VIYgCe+`ii;9_c4C+&Z`g@siLwSp\nz-Jr}!X`?ScYhjC7yqg;cmrya0pu$DPpnQWkql4Xb<^Ym;$kE{_@{O}kRG2A?ldy&L\nzCTpb*u|b{U1wx3;VREf0!fduS_1M<cm~tpoJrKRa{554R+-OEqpJ8Z%iiYh0UDppP\nzeqWL4avsEG$<uQBv{+~u7&!qKM_!`PmL|@Fcrq<@0!1wKk+%`xJ2!0X8@d$Eya}*x\nzBs6U5#UZlRO(sNORyE)AK*jD|57E|hQ61EsT$MlrLdSwE7)P#1PC%|q<d8supRx8h\nzQnQbnf+9Esib*@f;VJ+Ip;cO4yMo3xArhsCUab_mD~)s!85Q{22A65P+TIBx8iJ-7\nzqf35(l~E%$S{AhpxLJYXcgh>XkD+$V1&xw-ii7-Cvrq(w^5nEDEP2^j15DX;NtH)y\nzNP~<5yx3!CYZ#iGK=(V=M|p$WawNi}s0k@C>rrv=ScJC2_-0?}35C-wJw0HcVrBqi\nz0uAzSj33<0sl-eOOa@Cm2;BFJ(qvii_BSUb(MTmM0N5Ud&H@0qr5#i5Ae<%j2v}o_\nz4L8}r%Ab?1ea6Ex%An+MTf4!F1)tT@GET2MfJz@n|3*QQhdXE@oIOMQHXZ}w3;#N4\nz6l8)fS|JQDt`5P1y9kjM;?oDG3A^?HvI%W~<I7z2hJY?z2mwQ|FDgS$S=)u-iO~ir\nzTgNxwG#ZQGUSJrR8D2jAG7$F#SOwTt?T_RDN{^MBjb8lWtQp6e)w=-l86n!R!Jshz\nzmMCTL@{2*yJ5)YRiniOyWwb_dR#?r@g=}rk=GXTMU?`t-Jda7cC84+RETVv``3p`Z\nz^zJCgN4NLG@Y^RYYRbOx?ykUU6?5Y(+6zIum$cm=M|D(%x53y{?SU}GFhZPBILPcs\nzS(_0HB40Na6@fU!<H#7?#Vh~_aa;n!dZivAt(ckg*;QWUOk`>PCfjisK_&A`QxVDI\nz3HHaVR#|@#)wD(->0L4?L`b-VfF=S4Tx$t5^Fj%edZ&@o92f#w^@-#YI=*qVE|@7b\nz+jT}mP=mo+K8I=yQyamB2iOJ)$k_izrg0c;9s_6~hEBf~@*>+jF)dINuC3McD6QDL\nzf!dUk=`TmrCfv1+(Qq2nHszq=c4#8Z@c4a`Ex71~r`>&D*sM>zm~OYuEFyg=Sz=ir\nzdnqU{uH(>8w$={EiJ>m~E9Pw)4b8HYwTS%FRrjpqku=R<*zcoL3>B3qDT2XXC(<I8\nz=g1`kb0ni;kmV63w0*7Y9^!`DO~Km)QXNyFlk3L8f+ZrIxxNF;Ih;Z*if(MBtpx0}\nzr8mMebF)sA3iF8MrDD3XC#`U@PG*kK^qh3_*5b`U*e};wCR>GLZPkT>X(C(dVkJ$p\nzkALJUCuQvrcxyJU$`@BwFPIvzJVh5qIoe4!wMf>j{b1SWZi0b>MjCV}uFY*scWCa7\nzstPlW?J)vFwy~__&gfY<*a_{H%C2$dy#cub^0>FWZz`=uZCdpWAv-aj*U`oyS&+w@\nzFdqHu=jz6srnhNW0p<}JRoWV`qYj~1p}i!OtjlfSKtXXkASPzIXXUhlfh32RiCkMS\nzvb5&MVsacY0W3vYprI`yg5oBLP4ooT`*Anm9(;YeI3omsMUy~3Ob&@qq5No64#GKE\nz4KnGJ)Wo4O`IyL%;ts;<gl0|H1HuYFDUV_*ALXE;l@F`|68J(b?uKYK^sSkU5DEZO\nzxweuyPsT_h$AQ}=ia-m5X-?C2Tuw@#r3u>zU2*;;E}eSIQ&1MNdQJ~VWFb+}uF^XE\nz!|PbL=GRTk8ev?}gNsr^n&OkLCJS0X<F|#?D%9oFt~gB>+SlXt^>Df@WNe@VaCUYm\nziQY?P_|#)#bc)TvPoBCV7h(!lDHx~V6d1ih%{2sF96?1Lv0+0L?_AE)E5gJK0a$dw\nz8kz7l8n{fx?!sSuh2Gs$-PlN@o>*rJH&cW_sWp`p!tHLrI2Hv33>*g>mlhvrWad;^\nzoHZI$2G5UbeKCyhit3`YKp@DoW~E5ib;y7g?64thn`YR$6|;oep;NhH8^bU&bCpfh\nzysX4-yO-s8^jh*iJlNaK2DY|njCPQp{4&P?+#8ig*^W{Sac9mLL?IQW;q(*FCUIP_\nzL1Fgh2AeK*kCMXA+RpR#kH(1Tjh00f!+Anq<E6h54t9dG=zIZPciT4DnG6bRnNH7H\nz2q>fQ8JqG*v<esX6EzR}LK0v2&0#c9U<Vi?Bti_+B)<i0lvx<=a9~lNr;ULan&_G=\nzD@l3?E-d<tfZn6(Y{z*6@>3m`^l53@n-A?Ap`MiXJZ2STX@u87`ejCc@FVsRMX3M}\nz#R3p}_U^{yX#7s7EN)rh*YT^P^x5U~7N`l-Y(l1ND|dlSlPO@@WjA1kA_1{@5ro+;\nzZ#K(W7u<BEv~zl{*A=o-40r<Nf-Ec&x0%D#$vly~8+xiNXm_Orq|lCQLa&A>BL!h?\nz#)owxC|HOqH+(@LFA`y5j2uMm4LZHLI<R4(feQ%xPM62pMAOr)PRm%;dA?s}MP6Qq\nzGOLh<bUm4MHJuKuVgPc2&2a_ASi@IByP?<O6Y3GHU-7zz={g;6f+?1^<G`mJO9Wv-\nz7Z{vQn}9)v1rRh4`%o?+V7dvEk;*JM8JJiu7odT;GH4Got}_EnK(uNYU9zC+Z@jG$\nz;AV}<Dn7V?FFI4kM6sM?W{Ju?7KrcF%09*<Dy~sNjf0)sQLH-ntTKJe@L^ABA$=nI\nzB!Xd&W^V|+T+ps75vr+BF_;%w{v1`JEr4wAL&ivgpu;n%Qt*8omoH9cp}2mno!Gy@\nzCLb?`QA!JEi7kj?$+v~=8l%OO+MEQ;Mb#xOIES!K8<qqp!GuEI@p}x|n_^}?(FWZD\nzOAEe*YQ=9OWG4u-NJ?i0+V~8h37BAE2$ES*?$ZJP{|uYW8HXXKb&$w9E6{|AstZqA\nzc$^Sxr~)B|J9XakS^x*JQY*uUyck90x`wZ|m$2)I!-r}RR!EjBuUyo;j53#hV4!CD\nzTB@V@bfilAVF9+THH}89nvSE@#<GG19u`)A4(^UJ{&i?*cyKRl*O(bNXh}ywnGxV^\nz0(aFIg0uMAqAlV@pBM?qZaq+wxH22^(ONL90JRLwir`T;lS{pW_7O}!0n6OYvrxzp\nzw*bIbB@=b56AjLQfoqfef+HMdfTE&Pn>kKaNp4s}oI{fHoOtHWtrqGI`wA3_2P~bT\nz7%+rl2@Ng4xxrd9gNBnfJ?J4%3{!BTG;A3@<9gO{%NX{Ac{m@HQwF0|=(pJL#T*HF\nz2IP7R%LQ6=>9(#@YADSVJgPVlSV||teRILYzX9r;1vI;L5?E0hU)uRysyVGTZ^fYc\nzX-1DgEbL|Hh_*=Ug`3O@={VG}&U1I~JT-^5nfT%|0Z6S@*MvrJ65*l_!&EK;IhpVU\nzQX@r=4D0P2BN!RsS&#!Gf}`-V#u~EItVZ!Rd@)0sg6Yi+KCh#DB0O$i_W+^e)^|?9\nzWktt8@=P_MtDDH#G|EPC>`*PaWoM$2$%~{W%yg(Vp+Y(lEfk(&B-fZ>ipP4pf?<IM\nz_9HW4!VecO;KYB%8vvW#xCau_E2-h+uOSlM$c1nCy0BbC!c{5gNqT;AZ^_ptePY-X\nzIaynCvaHGw+m`gc;o)`&kgaU6EDCxR1X|bEjTw(KBJ@j;?tz5_1Qsq1wsW&k11wyK\nz^b-<H8`kQ~#uw{B-~r-hR~d>`lHdZSq|&Jb?oEja$*#vzyw?8Ka{l!!f-!=_4I1v~\nzF-v3&4jn1K61s?>(di7`nTC@hCVL#o0O{?xGDI#L3GP_R1NhFMe~>(ZkvNBgJL#?w\nzE+mCQNfCmH(`ewJEN{2d;E3K!+t#5pSyb*rNI`<_0Gey2D%=xyKms6mQuol)^C1uF\nz6=G2rCK*N)i=462;1yu%<o+?R^}rXB;+JG4eOs9R#fqFny1~TCZb%?W^ZxLu&xc4C\nzGzc5YGFon%xO{-l5aelwgNJW`6Hhk@7BGtt;^=0Fkch+zfRGzn)vY90bOdZ&7d&Bi\nz{?eK(i!ySkH}n?n=!i>au~v%c9oKm`d7y<QMrscw=U(wLYWO_L%FiE@DfnGcfEA^6\nz5qne^K;%7vl3cDNWMSD}!+je)P)UspDj@-t6*RWxhw-xL@g@vKxE0Q|V=b~F525y$\nzC#>$U?X)M(@X1cE5J^xJ$03|T&_ZNZpazjeTM*CeQg7tfw)(*f8~dW>Rw6RGoB`O5\nzMwMo-0J5BY#~(Ai`3+!l&^ofJ+IB;^X-vB*G``6yZkj`}Kp59|PcbuodW(7aZH#%`\nz)F=)#PSQ1jXp>ME@~d?7P}qMdpyU_n=7`06bR7;Ap5N#;4<<DOOXZ?pVc0sh)UDQx\nz^05z72821rsw9DjXzgYP<6<HVK5ggZ!Tjn<MeyS@Sa;gheY#ZBnoyCPg=lnekO#Sc\nz%0no~pjF-(Ua_<Wt8q00BXu`Wd!L?0N<~1h2pl4j$S{pI2+v~396ULdq1!SPjc^yX\nzh7qEI&EJk)X3(%1rXdud>VDqFkO9Jr7A#;1x%y@{@DLkjkPz0|kt!$&X24P06-l<@\nz)C#?$CuS55F8ruCqp)?%4>9}6N)@sQ%C`*Ar8z0>+jFIw<w}j!j+yA(m2^K0tum~@\nz0fz^U3IH7{lg?qgPUh1Z(DQ4y4eqTXMJnJxOP~=g_}jpeP9=9N{JlPV2@1gu%wBLS\nzK?ImgUwqdKcnl!qV5uoCNd@v7OZ{XA&E|?8Pj;Bg)DG;S=`bH%Z(ttcRUl?j2q7V4\nzaXaWxvjaPGBxLq|NJoU|?iIFh!KF=nuaYpvNX}z}O95gbR(l0B&}+a<w06Q*#XoZb\nz44#9?L&Db%2@i)WR36jGsoo&xpB><CI(+SD)y<&gHPWI8ogD>}R*i=Tr=YKro0N1C\nz2Sa4-0AHbi@C0UwT*{G#eGsPJFikNTYfU%7s3wsqL$C|Nnn5&%E3_SA0Pd17K99zt\nzYTR#Z&~3iq4193RLjJ6mS}BWTlS#RR9tCM-kyJJn4rtbwfj}`-$jfxj?UNAi^4lsk\nzvCWk{O_+wg7{_LG7kk?&{&DXc8WHQ;5aLU|m}ZEFHh4-LVq536-3STCv;rX6E>~Kf\nz==Ocz2!bnJ^@TJk#HI`5lR#Ml5`qyN6Pv5paU@0vW4X%DQ@90j3`h55T8m;ZJNE%w\nzRZUt&bPQ~wDgsmfs!$Qk>kvWI5}JBpm%>&ZBph^E-gfUmZdz1fQO)5#3+p(n$z?5d\nza7la>JcI*B;f3cPdHe|Derifw?eDw|5t<Zt4Y`>Cg`J1GkPHh$>VXoj@+~u%JDX9j\nzkDywAJ0m!rt%KB@!6ZYe#}jO53*5<Ssx?Otq#I_%AQU5r-Q9{4w{W({0tUu^kkA4-\nzhS3rQ`D7q)ArP@F2|>-BA+TMZesBlH+=I`kVD`ss4c@n)-Rz4N#0Nw?A7Zih%<;lI\nzkwC|_9ZSd7l$OWoSOEKs8%@}?etN8~LiwT0sHC#&*)hxricMt<xd@;-vmGxV*>LLl\nz=UqtawIr{Fuh5x4Y{%o1KNKNY<hlZbhHE8;v=J+Rf4#iYz8rVOjc{>ek$_y$s$6mI\nzd4=%#n0Ln7=V5T>V1r$TZS=9q_+_xMk279J!E>bZFmdU)UZH#zu)=pn(d6d)&QgzW\nz!x|hP6$Hw<7oJ{HS);I5FoGBrt}-h$^_%zzHci<S*jzTz;SJnY8-t7@P@epyR&w&m\nz!w2;5^ixl9{MRjjj=xss1mmNV8YeHfzE&Mw3!hDI|8<0M)X_6z?I?J7YXO2y?{>KW\nz(apRC2#?>DcT@^6+XpX#8kCO&Ny%J`i$SnuN-LybEu44bWeaOD{B;!rp_Gc{=2|;g\nzLzA=tTkW;JBfb_w1?%OtZYG;0nqUp~wXjUCwN+2El|!>ld4h~G30Kx)>|mrSS6T(u\nz+6~yCfC-GaT(I*qOl!p?5Oxl1RYHl@j*SWi9iE?zTWi)nf=r5c_YYJ-o#a?c#>8x4\nz1Zkv*A-)XrRv=EMda}$=@(81mKHuIjh?_6hnt7Hm2~I1<1o)I7%B{5~`p_K|R)k`t\nzgL4=Idv!%sU4UH%u4oZ$Oc!{MA$zyq(@#512&cW^MQ7OC>lWN}!KMob(liPG(qw&-\nzhXOQ7e)0YJ`#E|&Cpjv4c5=z9Ms8cg@SVSfpOM>M$oG-kUZOv{zA^tHzD!J<G<5WC\nzz9l1ojqKgN<bqT09@%@<{F~RGykY3gcR#u+#1DOJ)AFZAZaep>n}2X}d)>&)J)6$F\nzXZs@~dk-4fb9d*Qku&dYZXUU9t|-l1HGkyH&$M6onZe~C`>FY#96I`(WYd{<Z(9o@\nz^PWQ5kzEg^q~qz^s|a}XPU79XK575iL+hV<ig=H{XXLiSN%OA%$s$_mPrbXl>`b@e\nzs)?a*-Mw+<sSQ_dxMIWRD@JZx%Y>JY-13bx&~76$?KMkgHm{jKKC*Z4nBz%pX7`%o\nz5p(L@$Z}++w&oQ6T*9B}p%czuGt8fJ`188XRl6P-7}~QJ)!TI2_?qEOx7F61v*|X(\nzY?}F}O*7}OvDVx)^DUKZWbf-8vT^UrmTdg&%jUBrBWFG|wEMT`B*|xz<bqQlfB0K0\nz)!wVuED_0(nXg#dnfpN#Rd-75HK&jWx+Bm*w|rW(t{oJuk-fmVVCZAt+%)slrkO{S\nz?$pQe2099C+;!9ZWN7z7ppV>k^_p`=cD;Vh@yTb;U$c_M+Boy&q1|VrEJH`%%<u>z\nzM)b1xe6$7&{XxW{(8_4&WAn~FxwClUO+z2MFdf<Tne^<F+uz+d^Z4$&J4+w_(*cq(\nze!BUIliQ0n41Mg%bR)2K-`9C;)6929PWTQgiY!$y08V{;<awLdoDzyUf;>mSP(!<)\nz&DPoV{d8#ezpzldzCSRu`vj2Rxc90hXps3gzkcAUliTYz?tRh7p2yn<kDTzCkzG%w\nzox|@!x&$p@HFxBZ+oscvGu!8XW^mx-KmhOPbu@NBy=lqFZ6958Gm<MU3-PBRu<HzT\nz{{r;g<LK*jXwOZEux1?E^DihB%6}2Yj@Qb$;I`MVd7U5^?Rk7?_dov#9KF|AZhYi<\nz#)Ct9)`95AEuSKbZkqY_&%JiT)f-;B;hGJlPqHa4x%rHfhV~qcv2gQ_G#T3S)RRv=\nz71}pszX`C1Uk?=TzngDBAMCz_&|N6mM8HSZZ%3(*Nxq#VFG=2;B%MEIS5E?lo;`of\nzw7U9lt*a4UdD}?3Vdk%PeSdi9mtV>%lHE6=k|TTHyykb1Xw%GR$@(j;(oBIS`^5`@\nzN=BIm#}4hjS9oAc;=S|V&;sJUO~fABGY6SX3^hPk1vno=bS1)@)(nsA1yg7cS^|#M\nzVPKD71W%8E8X|YESpvw=37giuZfMViXx)dmq0(7>^Y;5+h(r6KCI3Wk18B+L#~ZtT\nzURI`|Jp-h%PECA1#KL_KUrKZ~=bkf>6UXd}5!*ASmm<=K$Ml_eC;R0sLt(J;)W;Q}\nzriz<j_m4o3m3`gFp8ML1S?0-+6CfU+NIOTOft{N}D=S`&H*(u0>86<nfx;%4B#CKq\nzw_b!s{#JeuzXN#~R~&=4N2k$5s9#`w^7%ia70B5bW2@O91vy*bt2ZP1QOp_VXe0pt\nz@h8|K;EJv^iRJhW<oM8aKfn*#CHZV}Jbpc=k0T|EyX3B60DICq)_?Cy-x{)z<-ZIa\nz^#o-7Z-7=o#FObUrOiC3G#h5_KK1SkFk>A?7WBbz4!ZcwcMpB+Zn8G<F+LB|9MPGN\nzu}PAjRO)EDd=vBAbKlTg?iu>ned&D<-+($s(G!YCH?F#G*8@-Px@XSAR~Hc!zhU#K\nz_i@&`0+a9YQK?b1Q}5pM_{hvZ`jm=nMrNKInfVrZe@S}Z&<TTU9$Em38)rTRaoJu3\nzIqH)SA=x|xLYb`TEW})V{HB?&LdNt|$I83m3YLbG=gjv|q~Y!&h0-ARjVK$-GP38X\nz_M(k5KUDir6?kcu`wS#L3T!hOXQVJYZdR$hg^xk0h9&l(CV(%&Hz&9M2+73WmgLdj\nz>~4N5@6GGic2?YcW14gh9hv#phtW^DynFb0kcm-`u)kb2piXcK25MBjpbB7m+l>LS\nz6R{&RKiW9+T}*GU8QEL13Er7><IJa3o{ck~VdF2`H1pWV%x49{XxeiRiV-TSsH_o2\nz_Fe$Z=nLClkw@DUjq3K98=e9o@E?nc#z4D<=|MFO^Yz{<me^$Yp^?28B_n(O7iYsy\nzjO_YBm<_WI0j5d-$v!f3k!HgYhf!KQJi!(V^94psC?zY!)`aG?W@I7c#L(^|8N_t?\nzCe`&{v$_ukv@>@rZfMVUB;k-~1RxHsp*>##Xw!@(+B8GX4P5f@mxyiSS~T?|zR>uV\nzj%rG#>4h8>pA`U<p<><JKANI9qA)_O4WM1Fhu(Zf(*DXr_kXv*979JZqz}G-k|Urm\nz@8^RN?5{F|{Z+nv@KK&|#5r%z6K~sK6aR5!{ixqyAEA!czI@}%*O~vFm_$(t6&$Js\nzN4o~wLo2?A=9&2xxIr1mYEv}O*K(k9lv7S~GKk_1Wt`{(;o;As8AJ)o8Q7annoL&P\nz8*f(N;qsq5<+Wie2P;pQXpTQ&c(k&!Q6C>R`&6>g{OgCg&>24NnAUL_#JBGac*#{5\nz+x)kAvN9}_?l5w~?!s`jH4N|I;qtKdC`5;NaH+<T{o!_F7^a?Kzu0w{#(E~QeRaCo\nzUxcOka2qDM;bX>!ak?6oxZ&V9Fx;p|<s#Lm{}<|S2Q{xfI!Wdx>3pVJ&!1=WC;oTR\nzA$jN!Lp)^QAi@qAv_JFhPdbl4QJQz`ij#;ipdL2R@kern_R_(*+!Qm=iObI>*8B+T\nz_EqO)MDAF{XhZ##=>5$R&RdVjao+Z<Jnh?8?aI==_Xxh9Gk@MA8R-9cb{_rFBlGur\nzo|V6UdNtqY9t-Joh}CTY-&LN2{(jlP;eGyJuQ-p0YXO+|a{MeqC|Ppw!k@>xn&#jo\nzhulw?1r9&_a3vMmn-(1L3JeCtEI4}6tr^;aHH$usfVJ&{=MQ1jCrb=%?czHTSZRTi\nz7rhmMBQ0>sqW2*%Y=LzLPb09#0;h@e@fJ99(S3+H#R4xm^q&zp!vZf|@*@P!vB1j@\nz-;9EeSl|^3yvhQb6qvNYt5>iFJCY$*>*w%#D4Sy-^y?v3g+rDM0-DUd9tiWM@v}h<\nzx$sD_g*DkBAN?>QMD>u5&HZ`2d*BZi{2l@W$%6leKSS(=PvS-SEK24QIFEp(%wfS_\nz;%zQ}=KX&e>}!PaXWpY3?0baqXWmm8?BF?o@n_yL{8*_LeeW8)t5l2rH7eDj?+={|\nz&b6_y=m&=#kARJcML%5j5NbO=S@3Mq<IlV?{G7}39l2;Qo&U!O9l_AN)F>)&P-+wv\nzn4d0QLW&9;oF4u`1m-KSz+zS=3#Le(KlARvk5&IK2;<MZ&u6f&62_l-k7Tg#62_l-\nzPiC<BDD_<a%v*{dRlmOY+2`S1)n9ycRQ<)n3qHx}Cku{bD*ntH!H<>VGQ#*X?`poW\nzU*}Em?LNLu^X);tUC*~C__mvGi&>sG@{Mgi@9lhJTg`hP-~O6!zs0wI<lD#i_5;4%\nz&9_DPnfGUWV}a-WE#I!<+x_?%qCEOOUc@v9*(e@bx$IJa#fU?z4ja$jk2q|5cwcnX\nzQg(ydVsO#X>~Uj-)k8<(-BU06`K5yhowsDsm*?)p%Q1}k%7X0ms|#lW^lJ;>f!Ab+\nzg&|M{8cK$ko-tm)A?C_HS9ng~#lK^lTLB(8_?39~@$feRb89kpJ;ujej(rt+W%}|V\nzNM@x;UvV%alasj@u}SaqPsTi#Tr__*;7gJPUj`iwu%nUY{Nw^=kY2LrFofnZ?kED5\nzJa1spd4LR3peC3>0J>#hF-g3JU<$$H6oL<3br7M)>U~h}ug@?9O`C$gjnL=uhc!tq\nzWP+s^Ec!!2NX~vJ>y7%UM7VwKy#Jjcu)>NvE?LLO|NaQ0L{fED$<xEqc?Y2>a`<2r\nzc|tmm;?g21qbyPtT=uqfh^Q|nf-0z7CSMT}SUaS5rE2<G09(P8iCW~aV-|e@HGCP1\nzc=*dwO|C5Z+nL~E*7R5LmdxekF^@ni_l9)doy1Um_?FCNuO5q+WZAn8A%!n7K5MH)\nzE%erbp>GE8abCi~0hMqNY%g-j2seJ`yk%f$B|)SB9fyPu|A(x2FJe?)ycaN9mEueC\nzZvBE&-u3GTBUx({aVN5<;otFmS)ZPzhI8P{L*$G6<us%n=KF^9Q1aTq?dP2E!$Un1\nze^4;|J2#z^0&(CN2^xWtfmLx}Q4|2C{aXiMnqD#Rdi-vl^Zs;mnqHc&OA?3=`}aPy\nz)6qaD(l#OiHOZ2*+bwyL^eNPZ>72Lif1yqcd3vExoGXf@S`skE$$V<<W32iJ{*k|>\nz?>Y_!aJKd_=}A4UeN4JOZtc@Z@wMpBVZNN04w1p;-2UDhJiN-nzjLGP=+8?R<h`3D\nzr_<Hp`6-8T_;>m=Kx+%2<$r%<hz*^^@Nx&9o(}%W0(9Kt5!S#XQ6TFI4#E!rl?{GF\nz)CnB9dG{bDSw0Zyt9j`z@+{9t2QONPELTNX14B_@MLh~+`6of;O&>Yv1x$Zqgq8CI\nzWlvU|6yt4{26&d2=CpM1Zc^L72KaTLlKPFaHUMHEvi%<gZ&m>c=WkegDl`5sd;1f#\nz;{w#t$dlD?h!UTI#Lw~A7*6T1A%l}&!996vFghbR=l0)0>6U*bYPY<1F!AZ%3F$$%\nzgWkZmBCO<un28{Q@$bdyz(O$kezx0}y@;<*k|0<TGR}_-9*woU@ifY^u};Z|nnW#^\nzJdfo#DvbxgF$CdX`mVQe6i!d<0KyC6A$K_M`#35+KZa#Rnm{YhAR#iMG)i7!)RKhM\nzEWd??{NC>f>AMyVd43Di=f<>^-@^2?7&gpQi_#@7Pc^s~r=|rs!CAOA4BHjyz_!Kv\nz-TFTVRC2+#K3sbPVm32oHpW1c=-<+G;fI)IfiW`frF6K*vq2|ka4HsGak#QdPst<2\nz0dXXydp3B~|LWtxLYu$N3zWX=9cXh+VuR_LxP3Q4`VPzs?R!a97|w%rq_MUz;eJJ4\nz9F}!&9F4LTOS76;|8P;9*JW90t_CjIB>CZSF~ajvm?u}Tt8?C6_}pl8*?1awYTz6Y\nz7&t4AIVB3LB<XB8>^dq*p2g^#=(Cs<MUJpo;jTfWDm*Injs*E{m;J$@sbOMQ6&@Xq\nzt6-oLryY-fp2MGSIs-qKfybn+@{Ru%#yW!6@Z0lF0R4-oBOHKkplRO(#HEWcDCZBa\nzIpw7JPaSdUnl3iG5X7^dMLT5OPBr10EV5sh{zIWX4znttJy;1<{vS?>r*Z>b*waK`\nz*W%t&C;L_?4nO#*Q{JCm%G#WO4dLa>4u0~8=c353Wb%P8s6Z)I5sVK4j%5M-{cPrJ\nz?_XS`Ub$FE7fajctN!`OP2ctRSfQ%S7oXfyjf*ensm3KkJw1IHdm8h{4eIyHEp)Gi\nzHe2Z1H;4_cD6oM*SI&#+Js+2=UbWa1n>XEf2}?TgiEJK{Mzj%P?hLMm_8zh>ivdsd\nz88yE&cqtZCvyU1u3I45!=R8656Gqd(`{wT<m4awnI1>#%E5*Pc4NibL2Hq3J47@c8\nzT>2XxSoOgOy6X3%z-6C60F(4h3opVD4*!gPx@+J#(%%-v3|t!ru89K4nK1<$W1z5~\nziP4;7i}24Y_<^~{9F78fFNzs>I0{GztxALPgw%yjF(qQ)tbqqvjafyRbxJlqIStG~\nzwj8`S;rCLgZJ}!tE*KFpc>8bMFb@(tJ;maYaj%v+@OyJV$l@QUW{FXzf6y#x;NQ1q\nznU&<!Nd9oa`AMsS;&b7%32pUvS><v#S2q75xYjgFya)-`s9DQU=~;`xP>|uAujdb=\nz83v*1&C6SgOU(jeSLe7C{_LDxp!js1v!YkyV+n`7m;<jHc!E^+Piy|NRiUfAVd0>~\nzpT!k<(hFQ37zW!N5KsOv8gN$Pfis3?R)EUFXaJqHA_{nB$3~$3?RVC|*GOnq=ALDq\nz2509Jbk@OagQq|)WBtO?%6Z?G$KrfOqgach0q7&QG3TpnrQ@QQfoDYl8@VrtAgf*)\nz1q#C$vL62ijve@IlAN`seTMO;k$`nUF}p`_s0Apm=pDMua6NzUZ{UW(`YQZ6&|!?V\nzmHuHEZ)W;^FAyndHgkcPbq4i>Hy|M^5bLmnzuV!cSONbJ4L*4L+c6Zg7!K~wdkW<<\nz(2COSK<u{^i`CkjZp;;u!q{i7he7oAE6wvA9#bX$1qPpU`?qh%3quL?T2F9OR1Dgn\nzI(^`jBX2f%u3YBi82x)a(V6_B)}D2JpGDh|?4p6w7p3H3(_v1RRm$JbqlTj4J8*{S\nz4VGf{qLdXetku$E{Qdkq#dD>6TuzVvfi<RxY*v1UO8w#M@A3!#pzMOMz=xh1Yemmx\nz?6SgQOuEQn1<=AiB4*jrZ=i$+C}Pfxl^P$*&z^nEX&7gG##O+JQ4OsGs3Yf1Pa`c@\nzC+|T`8~+p2Mh;?4SMz6qjE{Wdzj6D6CgLQZCR%V*tR+%~JH%DEdvDB2Lu12VAqBDx\nz3;Nsdjo4cYx+_RLJuN+K4u!y4ERGOR2dr)Jb%Qbj6<|Gd*c`UbVL*CF3ix4T$wOyI\nznKXnC95(0Gj_?7|IE-532hOIM>`IcTA~ve;5Vr#fll^{CvVf^yth|1CITKOmV|KrM\nz#+_jE#B#aiusNS2yqw%3zB_C*xn%=c<|;r@%v}SI;7`AICi86$YM{z>g=IK+<T6%-\nzY$QG&Jn|IP{3ND$JY^iGr?V}XM}1RK>kzeeESdAo^jI~AQr)j8DuqgQf2vfkB89m}\nzq%7kcGK{hV;2Qvh_YS7N@GcwUOJcUntt#I|`q`N?8~5Be=w`mW8^D7D^M5N%FUvvj\nz4vZI!P{#EyeHVFVAhsPBSB|m0dEe_TEFHDj3QNaVdlo3@#$;gSjhyM`CZ{eNSn&tv\nzVnUuXlHQQsv@AtQum`jef94J)3s=wQ+q@SEaL}S;&f>EczIfr83pXx11C!7E<q-gU\nzXCyGXjurmGXQ!twyDa^~bLU>M;#CV@z3{4qq<+YnWZ}Z~3+JHq7tLk*)dNP+3$j>1\nz&jq}crW;kNB_jz72&P&M>L(-nrOS}~Y|JammZftRFI=dit)9<J4g-<-XRS_+G7MD~\nz9(eIwmfdq&o|W&=bm>8_T0QXUxmLs##fYrvD;K6$ps7}!mN(lGYLnHAj4&JJSsRm^\nz(`9VlBTquHti6s~HLS`%`?Nxf9d%Or(pADixsF?P_9~YB=pu0AG6N4QDH_YF0Q##P\nz(Hii$RU4PF9_OsQUSysV@E4xBdI{=`1kcSuc`K}0n6OgEgo>zlv8R)j0szvsQXB^|\nz3HF$+-{RIhA!{`BcHWjJk|};6UB#YzUS8n2XRbb|yTs2&@z8039gx#nb=yL#a*~{+\nz23<V|;nmBSdU*95w%Exid*0jZgi}sRykWD_!#^=(PXegZe@nf^*M$i3%j$WdBVG`|\nzY;%I+<~@zPz|3D58Z~Z=(?eB|@ZgN$UX-;36P^)p)Z)&QXU45a##;?Rbyf^qJ?GV{\nzzdz@y)sQ_eju|X#jkB$H)JkV?_`c*MjKjF>>kmzjS-foFoTHz0G{H;I{V(-Vi5cx2\nzjC(ZUhGWsw=Vl`dwPT^rTao%eQ}BGwrWdFMe8j#KZHk>!Z#n^^mVQ|V2fg~@oUcX{\nzF(0F)*fkro1Zbr=!OIt>EIZ5e3Q7iNu}x}J=NR(*MU-){GR1VnIx7Fg#TJYk>5>K6\nzP(2hA<)sVJh#V-FY4n5g<(`$g4<1)BshH3e9-)ev7`T!xwsF~Mt5`zFoFsWwZ~0Es\nzFn%>T`RrBo#T1yyN_5Oza}_`+|2O!i6@R`0MuR_Jam&i|%E4P!?p`?v?dUy&yI20k\nzO2B_(<p&+`!Id8dMwSu@zpx_RJotqbO0n5fY(|O?GsWijV8e6pZ&!SA#lWe2#q996\nzA;lM01cU&+0(8E(BE6bvb|cFyjfz2{Du#$6O?Tn4QiYenH!b~}r6~U2EdBg4RO|E0\nzzPb#duP*!AGOOL!mfd+c;CCMWiNgW^#NnSg+~A)%{LcXoRI<NDZZpVzVOe_h;1@`4\nzb0CMRi`>;9_vym{|Fn?<T;#46nZeI3{q<$(<%W8>Qy#p3=>tpCO9mfc+-oiFwIS}o\nzrQc)R_ZWAL#a;9Nv-jrlQ59L=`0eyUXYD{%)-=*U0umBL42qIKz#9yT3K|DBU<d>W\nz2__wuaRE)Dv`rL8bZ|xy#|`&o+(5;E3#g;xHV*E{jGBlGZn(?udrqC|+!SQydEVcD\nz@8`Xc?mFK(b?VfqQ|rB5m+bRfpLJl4g-*jWES_)D9!+=qN3+c-j54?h{RO2b&KomO\nzUQW#+#&-01u@COtsO3D2dTZLD3nzte@EzKwhV4ANdw<;<#{IhY_q~;Izwg~bb<)zO\nzwGRVb=H1<Ue{UFWzhZ^qn02ORMYVTbp8He3NrjkiQh!WEUHq8(R}uf$-Y@qC@N)0h\nz6%b3JQp`k(dwZkO@9oVgkjr1eDz)wTmc-2f^kQ$<3^Lh|saH~@4za=i+Iy=`0E6A1\nz`C%p$`7ra-Oep_p=2~*=S>1GfC8L>GnlmpWmdi5NWhzsw%e;wzn==2R0Imhk8yUZ3\nz#1-7=SqB*3T_F9mMO`Y=K@0BL7<e;)oZbw46oBB50yn32DTBz@34L9m(uydh=bgaM\nz0m|~{zzt;08&Wrr6*i>a3`*tyj+XdwKuIJ=Ksw|z3;BE;&=y=3xSF7=1M7s5GhlS4\nzMx`b_s{)Y#w&fy<_hhHdC>1i;=Xy5|(%y}`)$OYE-0FVN4eCMnQ@ubv)vLXivSWL%\nzJ;?y}BzGnwx-)qnC?!BXm7JL@hi>>n(j#t|;t}_rWTy8df0+#WOC%+_TjK5nM7<gZ\nzrC*KvBF>Fn49^$P4QiZxqY`>Dgs$twG3%6qh-vS&BY~kE32!AR=C=|qM^;FGdGeLX\nz3c51+Jq5j&yhorttk8P86X;aK^JHABn=0&9_qRU!{?@my7rF<^he#4m-z1T~NesSY\nztsJuAbW3*1g~gwY`!J4@-0FV7L*Ea0KKHq?nM|_%9N6Li-0wQY^SS?ncx3rO{MYde\nze;xll(ci~YQNjOK!WBuNuSoh+64QT5dN+v#zMJ%`0)9=pJQ)mECSRQlaaTiCP+C)^\nzmFElpHSxGfgu6ce;4muJdkGHm$>d$hU8Hi<oBdDvDI3Zc-(8>wn>-5U5Hj$rioYrz\nzeV;4Nb9+1rgK<ZN6obbC{C&J4yoyj`(?8<hj*qjso26hEsCdy6zYTfBAwlfcu8a}P\nzPUS;!niJVJ&55@pa#{}=g&_1e%y3I09Gfjw$y-WDb7vyPMaF1+q+19qhzd=NROlGk\nzl^B}bnb?w~hX)EPZ81XJnYdYHudLPTzLlM8N5UKAO<f?Q5r)PEX}7wcb#q(cp5RvZ\nzeQpo#cirf@4>*d*=(Fz2J?KxKN7Z+ODix#}spmcST^`?s7Vc5r=piqWFcs_t_j_ok\nzl-&#Nx7>+gYn{tq6!I4h6RqBJf5EC!4lz{;gsPltB^wfw9`HQug(_e5y3CKS#}jrW\nzbkzgLovPwaRdJ`rHt>-0pWG7u>G_KneFRA$TeFCnY-(sq%0A%vj2S=k{NMrO50vBC\nzCO_>JgYz}!6j_*)35clyYj`RZ`D5=bK3!iFhTTzFAA7&>I=VMc!8Yt1c(%E=yHsbm\nz-SsvBZ@WHJ0I6nqrfzfjmMar)ckR|;t|ew*p0m-fojn&l|J?Zqt#RGtLii@vZFKKs\nzyK4t1Nb(dFQH{`dxB74?mz}?cxNmbotCKxDTrcAb5xV#CQ1mPn?NoZlA(h^jd`$|t\nzuSt0$h08`t#trrTL_6#>STI31_0`DX*`4w=@qeB2O^hE*jLy`k9(#7Dbf!SVPQ{C{\nz=WqyAeIgbyj?4Me0S9c|j56uDw5RA8&%~*g{+fT83q?eQ>_8=09%@hAa4Zis2+u1?\nzyOX%vC$E0N?RnY#s@wAxJpEAg%WluBaD6nAPPa4VHJ(3tJdeS}JU{eW>-V(7p)Js_\nzd6>35H~V+Qd;WoL$n#13XYuGEHYRyiC10M*V**7#=|>;AF^T%M2je}D#yi=203VIt\nzPBPzCGA++`N<>{9^+4ApdTyj{j4~nms{{$&nYbs>(}DiR^4u2K6!2^dJQwi1goz5K\nz5AOv$9|k%DmghyxZ#^BDkJAivN1Es5v^UZ`@1}L6@$4C^hKx5dJi9VJ&hT_%dgNJ;\nzxsm00IP0-2&l6eOvOGJne&J<?<yoD*KHGDB_D$KITd-WPwkD`*x(#*ba=Cs^Nv1FI\nzNBkj>L;IFJUU9CRxB%|P{fCQPn?Kllc#cN>uk!h>SiVVweLjg$u0|w>x;}i~bSpj<\nzi;ZEI*FDag?sG5qul2f5!Go_ZpZnvBzV^nYA=KMD@&u3Do91)>%RS8-m+nn-H@WCL\nz(dPndy!+M*CLli1{f>KD7(kp4h%3YE$20r+XvMA#-c0&h>-C-C&Ga4PjXT@p@}|2l\nzL$;6-0Nd~hUT*~w{?6<5rFjz?5j+7wsD&h{KG!r-$^Gp`E~H=M9p$U=W^Mt`?1SZ0\nzAjvJh4Zc%-;Vq;LevslQ>76TG5SlvL>nii6-sp8TUIHopdyrLMZ>oF61W=rx^E)jq\nz9V)n2xXw7k>pctNM|*uf*Mz&Fue-yl@Lh67^G2^bja4~|N|cV0qYz~f(kz9ziVAVJ\nzvdtqaUCjFi7vHyGLdBaNnCvbTF4;YcO)?6GWrJ^ZBbS)Lk<9ONZ@G{n6W!0nO#_hN\nz-hAPNOBmP@$996O7cWp*d}^^iX-+MmM9_WJN-AoFZ<_CZ-%g)9<YJC2pF8nx;O<E-\nzZ<hPG3V$Dz_IYUa;7XE{md<+rri6MEV97Y&Rb0)eJU4<U<OEg7RY;Kxh8$GY2>PDj\nzE%MFhV9_+7)4YAB`@%cDV-TN?_%RjUz5oaLrbFiZd%cH|@Cn|-^1X2tmq50AqKn+k\nz3-$!xA6RsPZzF%ZeYbl1BPws27ZN<aCf0H<Yw68&-^#jk;!zX4ITc>7`z>n%L@ogD\nz^WG$QG?Mj(fDCem6X55rEhq%?ylSQEUT-hT6_)V$TDYjaD!kdsoAd4gzk9+KUxqh+\nzJc8575y)v>>*7ZC@dk;@eaFh6cL0Un^k(_|{h^!NeVjk+^OJKX_}pi^yeUYMyoEGZ\nzPL$1+_8;u)@ww-r0U=qh4M^rrSj)^FpZ^6`*W-J|8-xpasLlR#5xdYpZmV8*n`^D_\nz5^z-_;oZXRj-Ssqn@Sl|&&9mya0ZVT4tC|r3h0{Ue%1OKY$$TZo51lPH!SPUpsXtt\nz{;}oiF@i<H!4?q<%6;F;OGIeJd}XTll%4!xuLt&u^KGQhW^WdKxtF@&AMU4C`YXc7\nz3w3kAa`|>b0@NAk^2Wm!UY~n*1)TK{T;a-Br2+KNAdy^}LWOVVnJ|X?8w)iZ=Wbg$\nzzk&?=4V;MT-|Jhz20D@qWcXBtcSuEdw@UK)2Scw7<W$JQ>$a((_I4M|_hwKhcNMu9\nz+B|7|JT+9ed-(>RKS;g6W+=}dcM0-umdx*Ao@XupG~d@MSq1e3@JpYH8jhF^R7sFn\nzMGXaB?yJ!(&>-HwK~uh+6{x#>7nSd-l@-2l*ytngr#_Op0srVUYBra6`&W1ekqcLN\nz`_tE2uj?M4`){te!>Kc+CIj<VY%s(mI3w@w9+{1F@$UNh=yUtzqc0|_d;=-&I&{wN\nzJ{5?>8)_y{m@+sc-P_AugAf`TQgR}2Ory4(K~4D#ZxU<rLJRUq^REs1+?jr~0B`C7\nzNZ-KH(Kq4SKiWGKfxc7@G<W)<L5II7zLM)19u=4F^TVP(ceU~^*Ny&Z<RMEpP_uGh\nzj@}xsfL1jhW`{q1k5==h*L9@NKZG+nLDe1giwmfUP=EVRHdJ?0WcplwbaJE^dm8cW\nz;w-+oP-j7-AF@~z=fbc8>28=Dqvjcn2pvly%H>!ZmAolbk_vAkecg>J#@fi6o~la&\nzwlp>&dOWx9cjyS>e5#?WpuCWc%NKW8Hqykof6t?5ZGOI@rcs|blEkKY`_WfdR||(B\nzTXgSg(aHahx>~R6acT;Fh>UY@Lwn1i&|Tha^tP1EN8ZEf>nrcTX732JD|B)NR3^^S\nz<@29GZV%&}=kig{5a&)I0MnP_H>i40eX1G-R0-YxKtF{B<i305G_RM7>3+ka)Cump\nzcwnRn0hyWS0y3h#i4G?W1P%sH<ap=GuYDUhFXs&7EwI7wn&EdevU~%Br((u)4}bbF\nzg&+@h-RN_V^FzTmiA6GNLX`VYuw`%e#~7gE5yrTLFg1ritqf0Kg0j8}&EZ-yI=2U^\nzd`v`K_dvB)IH}v$h<NS=ReN!{KeN7ujCGJlVUo9Q<pk;mKErkde%0)%#7io1)I9yd\nz+xZ@C_0#7{95_0zvdL<sBkjS1!$@&rT7y+t*@T}c7jZJ2R6CDfRLAeqpr3%#*`)d>\nz)XU~B!8_9EC*Jr;Gav0NF_2S5M{-x<r3Z@@3-jTKMVu6jA8=Cw$q)J92*kPieH|>O\nzva+#(-`0xX=2h~$&FdUzH0$@GSCV$DCJt=x%Gr@0Wg|J_P)B-4tU3^sj_{(g!UA&}\nzs5}VNqu_kRv{M$OS~2FXT;$EII?tszAsMN0@?BLOj=k5q;5fNjDh?gnx?myRP>wep\nz$1+~BoD4mVO@71}>-ZCA1t%9C6)Y^wKO(;%IBIdYsjm81oRN%k->X2<D|U`uUNmmh\nzxUs=e3xcCg8WS8fpU)($X{fKOZ)(KZWb}TNQG9$_BO-B_C5~*vX?t`$ARR1+x2vJ5\nzbVL=Mny#a9h9V-W<~wL;hw};9GjI$p9m|K81vZ4a<{GNQ_$@zq%s4vSK5UW06pm9K\nz!>=x@Y=m!A&aGSm`_XZJs9}1?8@+G7z5y>lrDsQCwpc#q$Sz_oQ%yM6b}mkgT|q{I\nz@FQ@Po5QU0=&WT6zKt^r*l~Yf-B6D=uU6AJr*w23pDl}O<(G@l0mP6Jd!x5{k01^p\nza5y78kbIx2j9+aaZccjAyIAmknJVR1-BPKuSaI;3)(t`oS5{W*mWqzHB!A{(AnW;L\nzS@EQp#}uO6^zOVxC^mj*#z$aMgW-3Jg!#;Ob$&Y?aEe>LC?Hi<ml<)mCfS{i6rWd*\nzKRQaC&UA%==p1`GshAqP7&*MO5-;V!n<luL*k9<VSbp&wxcSZQRM}nZ#0?Kw(O88O\nz0O>FZoX#7wf-VL)=&gRRDqhC36sJhbDf5+;GftT@bLJV9Q)itxd1l#3CstO170pL?\nzMY@&HJD;W0RwLfnrd<LjBH~;^&}esLO@4g_P9qFM%mN(oNN;E6llxHTq&ME?u>`MY\nzB@a+$?W%m$FX#+$NTDt_s*-*g%ud9LK{mUsdT9kHX}yKx97*UrZskGh4U}99%26u|\nzA&X9)R8>xA_0vn!=yh}!em%v)Nm+J8)qvy(4l?6Xm^aoEP$9}CAh7{)$~EWJH{nDL\nzyla(uI<79fWP^{{RE>yRC@PIQ2Au1;NZBt|jv^F^ovQ1oa60drT7o*_nxs&FTi3L>\nz>(w3IJ8nJ$Rrec}Xi4)5x_q)4hmSX+WlI-N?TUOx*K5pwEGazq9<g2m1&WDMwk5xh\nzRUA&c7Ejfq*ZkVKcrOtww3r4VqjSJ3lB)35E<RCv9=|_AOPa^8`=)^>_8y42^n$Iq\nzB#LZJ<7Pc68>=i>l-{(B<4%@TqFZ&=GWr@E-cDVAtWn6gN5d*vBEQNST~oifdi1&V\nzHFZ^U7ml8xUjN!S8V&eAMm04yjK<rlYMbU&kH*kYId1GIbQw*{M=hvp8jZ6$aeAtQ\nzMG<HmqZd?F9n4=?sAY9abuc3d9!;-0=`MbB9o|5OzyFdNJ%*#;s*Ay?G+nkpp>c*M\nzUgr`Xg|}|hI^y^pAFw3VS$N_6h1K&A$%^0`Cv)O-e+2M}HxzQ9p$VrR>)yKyp)Qjs\nzsc;G6M9&)Zu=r@A4}MhuRKVCHBrFG9PESQh^+C)^$J`*mjfVlwz&d{N<fDVRv+yRO\nzaFYz|qY9gtEWBvUnEZmVc>>d39&P-k;*U1_FdLw~y>`O%om>3OgD=<bPqAFfQ(gU&\nzdimF4j}XsssD~%<J(M^~Qc_D&{AZ^?7{wJ4hKrxZElo*{J3S%AKPAyB2gXnAQY39I\nzPD)9=GOjEo`wI7@lwg}@QcCU`Z%InQr9L~QsJYkiDf{BwH^(KU6qTkFl%(W>XHrTw\nz(o9P6m*CkD&g&MEg=-#toRD(AEACWeR+32NY9|aA9*N<Lus0;E%a#keL$GH0o|=-n\nzChqu@>`UFHDaCQ~6H>BK0+nL{qSJYg)Us|C-nO`@DcNh>B`Lv6J;x)#!i1DyiPmyz\nzBHP!NG;AxRE5_fMg7GiQk>?e0C|euZVT}i6y_D?G>^nYXcU;_E2`L4~r{p4wSn<mf\nz$<7-^2LDRYPDwpqnb`^=?g@#TgRnIvCH2y{6H*G|$`ZJyU_Gj%-NLhhc(~lq{8Bd+\nz;~bP5wTg02Nt}r=VmVBlJzgZvV|{htPz-Lh!+cPbo4v0)Om!RQ;MaBw0(W&i1g)NF\nz1vXCjseb6vPk~d|&5lN)uImH@N&Y?!@kTeEqX+F$$98ZG*;rq02d**tc02Uxj$<qT\nz5SKglOZV=PZuKa3cMz1@>U|JKfLopVa!{Px(w^Nt%5CB2NXB&z)71LAUkjM@9#pbg\nz!TG^yN0Re6>{Gwib>K^d|7ZtB!Sk8+Su+fL71LhsC!A5OOh_d;A}$yHxekniSK=?#\nzz=*t|2mJ0H@W1weZ|?zrz6YH8oI~lerw9Ct9`Ij!z&&VqhmudHLmdjIb1e>qAJGGT\nzY!7%z5BMp-`%wFmD&xKxy8qgP{*}T%NA7Ov{<>c9Rf22JjtIU{aPGGu`&!_KD%UN-\nzUm*8Nx$g%5LxS%XT=z3?^dRS5;ZK!E;koaIobP(z|Fs7k2O}O*&%_?^PbA-0q)Xxc\nzo@@zzvU34-n7HQfr)AM&w1lq}ocni*>zeb(N=qHUmrv`M`~plf4_YMU7an?&De3hL\nzvl49QKtg``Wd10m&=~p{OCLwl$2j^piaw5@51RWs7gbs#bx5FIx5e^NFJlDB3nH~n\nz#Il97QxoUKc+;e&c>hLXWKmTs%hrPy95DfN)e>K5nc35lNiBQn#GZpzGKX5dYMW?f\nzH0{`vA;`JrrxM5pkFjX@uZsx1Ug|2Xu^XV*C@2sw!PUMTubR3oq#V0!Fqvafspf~|\nzK5#3GT<RB`$VrzTnFyygt8qPU5>9Pa<AV{Vi{_X#hG<-k6G}dwkBH$fAWRp@q0vk8\nzzeyl2GvD_V%<}P5mKZ-B3QZUBJLOaVLKo?igFh{QSr7QdJ>Y+J;6aC+Z4P{}1OKrH\nz+(!!HB7F|SpVsF_2kw;ffCG2(V{*V3$r<91Gtz;F9QXtWPJN)xx6FYLbKp%5+-bK9\nzd%!R20Y8@%#6@4j@u%}`ktqq`&hlR4z@6oN#eolT$nnbfLvlh6JmkP>{;%^rPH-}7\nzrURei;Lmg54Gw-hEFY7zq6hx94t$t{|3QZwYCBq=%?|z%4*WF-KYo7@<A2M+@6_{s\nz2R_ol|B*uue)AcV^O=L+nQtE%Z^@pc9Q-pJxKsY~f|EU+?e1F#f1yLp0SE5%s~j1h\nzDPO1j(*-x>FLCe(9r7>i0gpQHZvN)LoqFzc;7<O(J8-9-Gi1I%`j2zybGqQ9KYm*p\nzvwx+7|0oCE;J|79rv2m+2Of0bYaO^#&zl_hcnAL-4%{gxMdlr(zq5TE@4%h@P}c)~\nzvjca^f53q|^?XurvX9e0w>$VpAWqu>50&v{`pG*EITTD%Y}OtJ?)1;k9JmBI#Q_7?\nz`FawSK+5+>{ArwiSwt7<Pf2yYr#WzEz6*MgbDjft`r#S}J`(bEzRw75wu{{k{*Z&e\nz!+|^7-3U?GwC6VtKOgIm^Pa<hob{;Z<Sy`1dG#e?*f#t_WQovWvKh@W?xcjc^hq9s\nz>oDQeSJS0&`lgF~hAv7@w$RrI2@s#wjUciuU4&D<{bXFBwnmr6n`JzksNfhrQ1Gb+\nzexl&h4V>0(bm{rLmQOxJ*Bt)r%6GaHqT0ay(qAt(a5|uuu1nQdOwTHzqXw=|J^!PD\nzpD6NgHt_d_zR$pCNk9I$f#*wkcNqBNVxQLyTuAE!1OKz=^R<EBMUIN=H}w@OZ>{8;\nzpuZ7M^*cfAlWE{*i<~?I|4#gY*2#3~`dTXbOf>MJip`p3;8Uc$a}Au1&ZVo)z;gw^\nzz`#FN?AB@nKT+&|je!pr`Y#6FTgr8xfu{<s_Y!q^{i6T#2ET3(ZyNYTVxNB*_=l43\nzJ_GL*`LuqfOXoXT_!FewH2#~=Sq6Td&>;hNi+u_W{34Z|b)12JE%ra#!1oJ(wSiwM\nzc&&kVivAZE_$^|e)dv2G;Oh+hZ=%ml20m5F^|FCa5j*ZN@H>UxZ{Q<Ej{eD(wsWiK\nzGf3)3;~xq>!oUZLo<|w@(}I^8_~Bx=lMVbM(XY<HpO$<tFz^#Ze#F3a{atI|KS{mZ\nzY~W{!9qu=9xA4DY;Mrp54-Nb(!M`(bI=-B)c+pqe^HHI-{WSiSq|Y<>9~1kGGw?r%\nzeNHv-8-)Ky1OHC=@e~_hI^P=M*ZqXX|1Nw34gMQcax2fkuMvA5Y2ey#V(lC0segW1\nz%3ERZ>-AfefuAXKoq=x<``>Bc4+#B;f$KTS`v!i$*ymFNw*?Q%cg#Lwhe88CPv}wu\nz&y@O@ZQ!2^y}-bWg~s7TeCd2omh!GQ@Ha)iURP@VwSvEC@NX6U_ZoOW>P5X~psRo0\nzEBr%s{{fon@i^h1VBkjyU2fpI|5|L|qeYJu27aN`$HfM&*TXj(xc0wx1K0D>cMN=&\nz=>LU*A1ik2D+#qdKNdR#4SbKtDKhXH(f>HXsrsnN>HXVE2S5KXUgTF9xL#k>IB>Fm\nzt?)NGaFTPf;L8lWOz;Z?*ZMpx>x8Qu{3QP}vBNC}{~N-8uY(^auv(Xhe{OZ)q|Z{x\nzce{ay1%J`Nn+4bFZn8hgSt<A~ga10g-!<@S1piQQUEa4u|2SFKX#C%T2MwIgf2M1^\nzf%~OmCJRn_k{$jib~x36lm2(&k1oAGpv$#M!PXpu|53r`893d)qHD2%zocO6JOh7T\nz@TG$5^5%*D>kVB0*z7ik9P)>A#n10H`1O60mmK_5-Y+HJR}Eax``>inPJjN;fs-6Q\nz+X&wu8Mt0|eCoi-{?o<&-#BoRPj3sL%T0#IMPGzJE9FWva6La8<iJTEy<dEofnO;3\nz78*F+zoP3%1E*&$=qfev2L-nc{BFTd7Mw`xPcD*j&h7zUX2^L#<eYEdI|XksaJp|s\nz*J=ZQP4G6si6nh46@6|s@O6SeW8k`;UhV<^RB-wt`@b*weqrErACIo@4g6EVe>U(A\nz!Sy~5k)*%YCq>%5iH{Im>+`M1$v5z?1s`k3=_7iaV&FFler6B&azp-aBL4yd|3&at\nz1NT$ma77GU-=DZba7s?Bw~Icv8TiA3Z!_?jQok=7c$MJ)a^TeD=Hid8&mB1BtNW=$\nz>7TSdbTBquLk#=`(Pxr@Hwb=?fgdk&YJ0#}3r@+&-};E%))+Y5r={y!Lyp!HziZ`-\nz<WRp<A@y><11I^1iJXTFyr1At8u&E9w;A{(!JiXc+wC4H@B0R>``O<N{6(=_l5E&%\nzInN0`(1FX;iOZQQII&T`nkbQD9Q>rBzAr!1!B2K*5dA9*{9M6n3|y~wY7P7v;XhAs\nzt^fBj55P}@`O>&o?6ck>hxGqK<ow0p*UuX~<KQR#Ul9JC2Hr0CE(8BX@OKUTTfskc\nz;G|D2Yi(Kk44mF=MAy#_ob(CGxOTw62MF#bCS2MME5ts1dcgAqr~0K}p~x9y;G+dU\nz#=wsee4>Gm7raz(t<S}x&zS~(rQqiq_+x^%_JH3cxYl3q*WGI1lSQAq3^`$u|FnT$\nzC-`my|C`{y8TjjhCsC(>OShM)inKBX*LKj)fs8WvwLcU&aLVdb(SL%0PZxZKA%Btd\nzzx4**B={Nw*Xx%*IpmXnR>?Z<7K2|u-}1P@ul0Y{fs_7AMbGCAyjJkH9P-I_`uf;`\nzQxkeaBKJAuP;fCBmM*zTp#9+%k?%3^je;i|_-4U-8~DS5XF70azWoK)^?R7uIp2Xh\nz%T?mQsa$^HKgEGN`OgxZFsc{bP8T@%NsfNb>LP<**UM@LPW7@|%C*M8-xmBT2Tu83\nzFa6S=9XQGPRrqf-aC!k9UAH)JlCws}kp~R?bm=D_ci<#HOV+JV8F)bOoq}uo>wSUO\nz9Q;&Y`hLJC4xHqV7dd+k{7AvSHSm)J|G~iZe&(-&YkfYJ@{XXw<I?yKf*)_-Zs|`d\nz4Sa~;iv`#Ipr3<TX7H~P`BxbHdLLlD11CG2Bjvi@!1aBWn;bX=wO`%kz)8+>k#nDc\nzhXsGgfm2ZX)m8^ia_DV`bZs~A%LU&dxVGmyDetciehSh%73oTmn~~aX+7A5;T$gK@\nzfonaFFz`FX&yN#a>$6W~Yt1tFb-tAjoXUH@=vigp8wIa%;8ZTHXM+PLIrRQSx|SOF\nzXM&&az)8-p($BX#aFV0<c_Rj{_lvJ^;3Ve~vH$f3{sQ9Yy3@dCN`La0f$M%?y8|bE\nzb_)M<2EIk`7ach1bDEUv9}b-4947c%2Cg4L|IC4toH<gz-w3YjH!S!s4u0xqHsFu0\nzfIJ{e{zm!ged#m<zf<%XAh?!4MCxmpgP-I-i9fo=IdGD{N8}uB;QG0u$p-$t@E>pB\nz-w0mrz@7P?Cb-sfmFPLA2mAtu9MUsI{A87ZCkcMJA?J3Hzs|u=`s~CXUAH)JlAkSd\nzHW_%P;13x1VS+zw;6cH+I&jMOJ<1f<4hK&8ju!qG4SbZ~Zy31VXWwPuM+^U_f@?ef\nzL+tRagP-*Inv}uikq57}zv=soegiKR`MnMNWWh5G{3O8#8Tf3$4>RyH1V3DGt^eDi\nz|2PLf=^sZ7xJn#2*;Bnm89$3L@cAPDL<4UW{1gK}Pw?3WuE)np1HVZ47YVNQKSTPN\nzCI>(1pDg;fI&jke3Xu~r@YRC<!NBhm{8|IQOYlECaA&@^IB?2$yYO!^@U4PBAh=ns\nz#~u76f1s4>MF&pu|0#0*Zs4yAzRSQr6Z~BR?-2Y$2ky-G6T!8ftHu5vddL`;#`&$m\nzphp<EzK=LoaB3GMKUd0C>cFX7zluJ#f&VP{$p#)T^RZb5-b?Va1=o6NeQJ8ZTMRjw\nzB4@RMrwe|CA?FRT&z%NdC++ST1HV@AcMUvV`u}eYe4XGfd5}w&>q)^g9XOe62L9;E\nzci=R|e^2-)I&d0F%ZVA+i4L6jTcy4#1lRSL$K2>A95~hEP_a*~fe#kE$-s{me1(CJ\nz6Z|3vPX43wT`jn_!>yv{A9}#=b;uz-PZ0SJ8hDxDj~n<If<I;8vjl%eaIMdyqR;yV\nz{;c2!dcfo9A!%IN&SMp6^>yH+f4$^8(7+c7KFq)`5qyM!UnKZw2Tpd@`4%~F%J&-K\nzpJ3qne&-aywH@^Rk&_(!B)=4YbX7WVl7GL*uQG6bf3&s-`AZ%AB!4Ce$F<Udll(0r\nzzuCa`e%BR-{P(23);st~{yY+nYm);f`LBrlyA53LUp;K#9|`|v1K0Oiw>ofVzE2CT\nz?R=%Q>pcdppAX|70z*H|pCIe~q4Y4l11}PMwBXtg^>ben9XOTuC((bhfqyG_xq)ZO\nz{_qR~*Y`bVIdCek&i8BwPWjSXx#>E`zz-LEk%6Bjc)fw^`^w7&*Y?qNxWvIv`drPq\nzTGk&NIO%hl$iLRWn+3noz^@nlW&_vvk2g7RXTJ9euJycG>gzcJe^~I34E$rkzw7}|\nzq#sM*qI#!t>H8f41HVi3&o=PQf)6n8M+F}$xYl3mGr9--1Vhf#BIhIn-zNAhLykw*\nziS-8FNDAP(%)sfjoOIo2;CdX~Y~Xr-{+|Y3Ecxy;aJ_H*tAVc&{tS5_TifSi!ABW*\nzRPd<=K0@XpXB&8~^bbo7yiD+@1E={zE?WWpy#puL(a%xc>A*>qqlNz=2TuHYUA)b}\nz_es95IdGZkv849|CqJZpfPc$;=~DyO`#Jj!T<?d((T_%OX*utU{|5|QKkqoez+X_w\nzty}}w^2ZwZ0x86F1J}=K%@kbMZ-K~PWbo_#r6vbX?eTT-^A!gEqTm-faI%{&?`j85\nza()#4H3t5j;D0vofn-2jHyU_v!8Zx6%T=V<tp^?a)Q=?zzTJV7KKi+h=L~$3$p3o}\nz^51gslYCj8TYDTh$uAc<9~<~I!M`%(&lf#^cJPyYaWl&&Kk%pIB>x<dlVIRy3Z7=*\nz7Ym+c;QINJ0S?@m?_j~Towtjg6Ab)A!KXWL=`uKGj)4nlEtUYONB&bF?QWTapPG<v\nzzgHOi+Hco8aI(+6Qr_zg{7%8|Gvw?2qQ4vXOle>5IpmO@N0C8rx#huBt^aunwn7F@\nzHl=H-f&Wp;J40|1E4PT4zuw@d-{sSFxq+XqVCzl;Um^X^BL@Dc^oQFGT<@>$Ht^d;\nz{yqcO_W#wun`K-`8l)0x`)K}b18)^Qk1%k3ziE<zYdI$x_*9WoY2bR_a*=^QCgoaY\nz;3tays|6>si)c=9vxA@fZM*o@?FQa1`27a{cflVr@RtPNEV#~hsOb5E1E=;S-KX_W\nz0~dDdQwQ$!s~;UWm1~apd3ugYNor8J-WPqc4g77v2OIdef)6$DeS+s3c!DT3#=w1o\nzA0@c9gWmV6cJNbsOcQ@z*aO}!oe{|qRS?4ZsRvxdF>excst>u{7hBipsKX>cvgsCq\nzuCHMRUM%zo1FsS~-@um$J;uPV6MCG1Zx{M#1OKPcr3U_^&}9a$f1iJ%fhUmxah<BZ\nz*gjNV{d=tn1K0a+XBqeyk#mlLPZ4~9f$Qf&b-UMgK27*_zpHWGPcAj&oG1L}8~94W\nzR~h)_g0~v@)q-Dc;Ohmy(!g&Je4T;o=R$RTYW*J;{tX8IQ-a@Y;QIN`O$Pp|@ZV$L\nzZwdaW;6zeCps$-GUgP^D;#p}JF<fYUKS$$wzdcX-6^(BcdaSJ1HLlm=`uSds>*r^J\nzl0WI_)N_J?>-nwrL(Q-C*Y=6wqW?379Ni!8GH_k4&kS6bOaI<T%h%7Fl~aLmX<R=?\nzH^;!W9q4=<C%=9Ur`^D{eg19W`Z*sfzj4K4oCb^UaD)1;(IK2{I5$5`N9yMD$%gso\nzG&WlK4fRA2dm&Dm=|&cTq%_QckdD=G^*K!oa4h2ddI;q3+;h%pz*&isilN&2s#+Y<\nzM;Wmw#n&*mZUK%Glw=KcIKI>5!J&rLngPn`Ai+4y5;V>WTwIN#e)H>a*lj)z&%<H2\nzIO9@ioQ9Z>V{n(?#LyLzcQwxBZJ4{bT3P!4-)9iXsS3oMV#10gq@T;z5ve*L-!$!~\nzsbI0t`m5+{6)KkYLVT2ukb0ZV8YZ|5XDSgs>zspE3{^55B)`0dWd5I~FGO0>OOI1p\nzw$9%)vbZa!A>LyA9V-1U(f{|v<hXSCwH(@irLd|09C>~++mV)nru|O>b}0KVpRW??\nz^kjeP!gT%`r)r}7seL=I<&r<mrJR>eudzi4=(1>xzAu&ZbuzEfaV9URc_{tYivGJ~\nzqCoo77^Cyo`Y!`!$^>M6dpLbs*5h9Ftv^j(8V5~`c<&R37~q_I9)g#~*F))Fa|21i\nzx=?-bnH*#iQ~w)*9V-79k5vhEdJ%IF@1GEHsQlL-B7a)Tnfc!f>`?jtEcxGVL>i>^\nzbPwtOG7%BD^!h?k2j{gF5r@)$r|3UN8V1!r&DTu*{|=0FGVL^P8bDk($hfVjuKaa5\nz-bTcs(z{MkDRyf{5ui!^{b>*BKa`24xS^yzIR9@XeT+c@$@<2O5ux+dFwJ+Vh-Uju\nzmGnW)DBs$C8t#wuB-2b^AnCJ>2s1s+pAS`kxi_gCibyyvsz2Jw)#-KnJyhPrZ=Xh=\nzmi3slU)si?KQle8Bh9`O5DrD<Pivf^zo?@k@kwj2L#3bd7sWEvNMMlG=z?Ik%So!R\nz`W!cQEc1;iIO2#g49!VcIi-ARoU2Qs%Q}whBBq=Kiqg6?EM}}2w&-tt6BzW99oc6`\nzUbb7G5BIjC%TqfkI*`-CTz0e})d5;1r%jJMS2C+C@~hp(&AVh~S>$iCPPHT7*pWBw\nz=Fd{+*-_8XTqL$5r6GS|dk4v}BhN-B`&-+aMwdM234#1l!BMcxvq!1~P33m;GpV!B\nzDmk;{tdg^z4&;<l!aa86i*n&_Z4YN|IRWy@Bm2uEpRkO*4+e6IEjv0PR37=55oGiB\nz-s?HI)^6P&o;|Cu-H!ZvDzx+4tp~!#lCo__l3vVI7HKbRFB`wBAryFImbL1qQQ`i9\nzM_v$){hpM#ro_j{!glk|u5c!F^v^yE+N~l1h3!huRX>dgT(hmPebrAB1J|?<-nn<z\nzeAb`rTXOpRz?bc1ksnJ=E16X?6UJ)(tRi|+Qa4N4h3$d7(onGV`KFOJ%wosP5@@{_\nzxg*;OZJLrwWGeL&`Mxaj54$ZK3YJG+up{A6>XgF$s#tAP3ham{WVe-u5P+p2HrU#}\nza%Ja<5UBLCqo-!uZIgm_^LBqpGv1up6i@XS*-lOo4To}9*{Lo&IyT>qUX*J`ittqs\nzcw}kNjx6^V?|&{X9N0f8)zjoHYn~Exf!EXgv5T=d#<B^ED{FqvRXQFj2CjI6><B$_\nzr?nma9T{+1)U&TVI>)c8lQQ+I+S~)3i%KFp>>Vfo@p7^3$kTRfd!Tg^PW&s`KPA=G\nzv~hZLR_@j!Fz^boJTfzstyrTMgtFlkNW%2ipysh76@FzTB&FO+Q67@K101B`Bv9|$\nz(LVOJ-5wY)4#q$`C<c0JsvViE<aciU?Z5$T#|uKKEV1)AfE*&f<oZXYm$of%amAx-\nzll<k;5q31!Zv8ymM|rm$d9mZ<Uk@CB>y9D^E01)RM)q)VW{V@9RoG4qgInkPd|m%#\nzZKb2E>5<NoNCy(k5MEAL*nXf9xh1kL5Sp#r=jr)fspqdPIjt=6Cbj49bVH7op^-cv\nz?rXO#OR}Tf#_cwKLPpwh;X7r`IJ&H9Xy;`xm9&GWXkukIKkee&xVe;#Kg+*#mK}M!\nz4E3E_7A+5DN8Yoy?eRoDD09!U3inS(+w_z~$8I?AN=Y;+WJkG4woP#%`}?l@{>RqW\nz!keC=&N(KRn(0~oWp|+;NYRZ!`U#bIHtQihh%!}IX{kPDRM>4it=w`q30A#;bY;{(\nzu=)-Q#hPq%klp%DxIZ<v$ahqz$S>uQFUle>a|$Rl)S*x@t87QkvdYJQvn;)(eR*oh\nz(WL_qG`&+2c*HZHrM>9`d&d+gU|F$LUHt{RhSui;SJ1Fga(c;W<x0s|CH*q1@N@3V\nzI-^K0_P3*HHhNh52(Bsn2p;n6_*a_xqlLqBCubiN6<$ylZ7s&wHl^_SDbz#0ZAVW)\nzV|Z*1GFDC#d5)S|%k{`dc(>3nVmCjFKB0@RWPEKX>7s>YQFJy@Plp}N4m{d8V}9%Y\nzK<hlTQb}q@8@ox5va03L^K;RgqpkzI|6ZutjvaZfJo1zHG3Cb!aYifusJdV^OrS4(\nzI;u(=U6d;|iRwVZ`mMXb9cXIe!d*T=?Q@phR)4zobaoC55=j4Y_w?IzYlwW&y+J6~\nz6TgB_|A(ZiA$2LDY@n0A_P<K13az|Z75IOku-Si5`Aef*XqbV&F;q@L3;YkIXnywe\nzm<3Q4u9{M*1SMn2e^%%qGe|e{f4TA5P=)PhJ>BJh)a$;1PV!fDKG}gsPD|at-P1I!\nzd5^1Us2&k{0NYL-IHpbL+Kl<xiRj~LQj!h9(x1h6iY-+uTYS`NRX>87`D=H_M#I45\nzK(%-teN|SN1nAtl^i}>c5aO(E{_@WM-d|KtrTyi9<@@5X;;{e4TTN&Cf1cXC`VZBw\nzscs^WqvkKCmqfm&fe?dV$;|S$p<Mfz^1nz<Ye!2e%A*Z_dq>F(iilhg@|2I?9cVcj\nz!^m@RyXfR4_KwLl6vsFnW2f+3;K3MPsPM9A3g#b8Q}<6^?xG=Tv4xp~r!3OZyv<e8\nze8AQBwdOtho41eP2BBP9h6z2CmQ+d;!TN#H)8Zylj#(vE5ubf?;D8N*Sc?Q&zeL`Y\nzP16m9pUY?@-RWzA)(1)7$O~m{nC!NlKd0jq9A~LoQ@Jo<kSXszNR&mkf!_~)8%aBI\nzkOY&wK+DIFg~4?R#^MT;1cPn#2r#KxBo(hbIyu)UUuS;|ooh>0O$b?mmcP@SviN(<\nzcols+=)GT{euUmZ^!uO>R;cqR$id`7ujeKg!|F6yMu%{I0cs>X8?`}pBFndxCS!QV\nzIw^XpADYf6kDib!9fypaXV}q2#b=Y*0xgs+6|nUT1UhHngXDDfMvgKsVg16JIwvwz\nzj0p{`g<{U67LLuIEsvg?Yey!8x-E%n3fm(cv?!X<ygLqE6jm~7%tLq%{9(5XfncC@\nz15m6>W=tvkw{&9X`?q>fKt)9+&nShBL+B=&;+sEm1zLCb*e(6`_{jx<mVdD+7UdT1\nzCkJ7}M9+t_{9teEm=I`fA?9tLcq9f>>d0j1+E|3Y0$N^Txt3;c``BYQxBG3^n|eKv\nzU`JB1s={A8Rt$EBJ^t&a&R7o3=NDMvTC|N^EZ52-^Fsdew&nimkzb}qzNdNW^yt_S\nzX1mckw5utkleKpM;ao>ETy_Kt)d?;uaK&s)$n3}~C`!e$J=0qc1X_Owq^x;|tNfVr\nz3j&wCg9%=F6!J@H^(Vu&7!sqj9hicp9_Ht?D4RnotqQh)THM>?e+aZZ4+-!PyZL;-\nz6~-*{)ER1dhQhqx@dURgPpB+9T?;SAViYVgq~HG+$kV$3GE>5`Os$oKi%nY|`JTU<\nze>f0m!JBfC;RR48(6R;s%8_JF$*PGHn+BEO4a`<k7U@uOU{(R^-8q@v3+-J>RvxJh\nzWtT<XE06rlgPU4aMn2#i%CMxwLaTPwF;<}Ub+S)nZ+R36V1f{aM_*a<F9({?vB4s%\nzibe!lKZ0YgS`KTszJrifl;Ud~t91H#Ejp#;<&oW8J(1og2t49`68)PsVN_E};E~C$\nzvgR*cw5%!oybOI>pye4vN;^BTE$Nv39$#Fb^?2x3vTD2)_Ln^8;yT?zGRoR6gaf|M\nzWx>+dKRr67AhLb>`0asKnx3O)TiryZs@fT7{TBkw+g*0mYvqW)BpdP5$L|bWx(<TM\nzqEm9qwteV<ta9{^xznN()GUDJ{PfT!F_fd}<enHU_4}ufoMHu5&nA4^4<5w%%i3nR\nzrbo7yL2~nC;9$l6MR-VATd}Jw@_{z1J^qzID;;_?J@QQFdRP$sls$gC9XS3KD0NYO\nzS@gmg&A+<rzWeRwmtE7^JeS#R>3>x1Xnbzi8_6wmeT!z~L87KF%3VKqj)D*sUlyH7\nz+XW}g!927KyGLcw<2vlGQAzClkDvqY{0$$m{%=(gJgN{YZJ9e9Vj0MGjrEt(`lw~K\nz+(!L5@}f*TC_`lS&R58yO=SW9n*eti3+>1}Qwm?hx@r|3bH!9D(DDz!&%sO-Rq_<-\nz#UjI9LVal0{K{cAy{zDQ60N1kfv~>98jIUjdE`gC?f%apN19jX1e8m!2jN?tJ_n6P\nzX>Z|0I#o<L?FeCahs#<XJu_reJr|U>%|HQxL*eP;Uz{F!C7fKc>X=dXj_qh*2f~xP\nzd*k%h*8-~-A`>c7=XVIK{r)w(YCCP3l)1@wiv69>Qv8l*D1B%6CxqM1cg0p37ldrA\nzh$p-DdtC5$T9TK+q07eq7-)4P-QFu@Q-GKCtSmZ$kiDZFMmx}Ypgb^TcV{h(j~=X`\nzJhGGaY;@k_(b&1%Cq)E>S}UMopIi`af|`xAi{=i<C~GT0zp9#omSRVXI6Wnsi)56B\nzTSO<h7Tc4yn~LZ|8PkS>FeXT4QFIa*DYkd!LSdeF>CsfLa}fo>O3TQr(m`*fdlHx?\nzsBV}e?Z{7CQx8Vf>~`xY@(snU*SNg@SaSO2;Yg%5Apfa$Gs+_0(u(6$`{K{gsacLO\nzw<S~qps>BXtu|CZBX25pUca&LiVeJ9Qg0g6CRsfn+*|R79#n0{7Va-=yFe^a220G4\nza(!8bk%gy+sw_%t8u|2y`!MY~V9Bo$*ljHJLk~bY?O>)BzQaBF-Ym5*T!nb*K<)9n\nz0+-SdLEUk&9etAJL?`T;-nI;zOIg@k5Ou>Z5=&6~9u(pm2sXOImR1PB7zci;KWx9D\nzE0Vn|8hV0VyNgnwPs$^|l|`NtYKh-weW1%_VN|pYBd8Hh7l)>N>)5&&G17T|yy;B)\nz;%BG=9HYfru{3v6b&%9?!spyy>WzXUp{R9;%@RBEz0~_-NOfTERjk?kwY>j`O(dGU\nzzeJ18Ur_b`up?h%`u>HQzE8BHXJk8^0Bb>rdK%3S_Fr9wj>@L}zCeo&U1Q_xr$~=l\nzFN;hGPANRF>V)O4j^KU_lU2)MmuG2wop4awCHr@6_Xk>kAc0tHmPUSX*nsP|48wa_\nz<l`+EQ>~Jxs7PHEx%@U!h#nLvi>8MP-`U&S(eK%`@mOp}cG=M_<PE%s>z;y11h%iI\nz%!rO%k6GKBg|DFs#Wez}pFln&O1TvF7*SuG7}@fm8{_;5oN66FodTz$!AtKXsu^lv\nz%D&Rbr?M{Lq%czFUNm&kQ%{dneI97a5?-(|d*@TkYspeg!_0-fG2P=|$6Oe9)E183\nz{^H#mbNdU$#TGK#Qe|-_5{up?e2)yf&V@jDz+o2T)HxQm?;4-9AMywUKRm=XTlY-9\nzr|uty?YtYgsoXoi1;+BR{|w(Oi~J_;Nxn(l5<U448|Bb*m$y9;YKPtF_C`7NKn{0p\nz3GD>87zE=j*A|bBY+F0BLlp&0a?WOOVleh#YHeek>POdB7Tp@#?<ALiQ>%F>IX|6L\nzhbg=2;@WNr?L%^whP47FVM;J&FA96U@HLq8&VR$IJEm}FXScP4)^e8EW4SxDnu8ds\nzm>-P+ORI8pT9~Y2jCcvNaqxF=p6Hwc*OZ2`3g3zB3Oq71ltn!_P0v|w^F9|Q$Ek7D\nzMHdIAJU#er7-df2k<!qT=H0)=zhXCI)wmi|pk)Zel}D7hseB)!eAJN^E9E1d<&iyw\nz`}MACoA-o|4jkCg68an65Kg7iw}c+^Q*EH>644G~I&NGfQ%8xLD{A)-+RVW$mY&!{\nzVtP;v*<y=dj|=)6chH)!>bW3P01INutwvWH6ObTnuVW@x8d`2g+_Xf;{gLOxiFOq7\nzAj^(ma8`qb>PxBCV|{6$mF`8LKPAs`^d)N_Cp|hJgYT*NVz<$%vzmNcjVH2w8GURC\nzQm}10UqY(?k-sxL_q(0vKq8aU&bj}cg&lTuzi>|Of$hjwh5KjO(TVW(j-N4)Xl-9!\nzz+GAx-rWf=;;yx0&c`&}WH0WT|6rGoHol)$-TXJs{+(~(aR1JGGZ%mM7}-SiG~F7^\nzCg3#4KNMPp5UUH_$|GNK+d+$wUV&q%Csua|pqm}}bSuwX(W**V^T6uGFqm}6G|7+6\nz72a0Gz;YQQ#OFIE=TgFspTC5EP0mHoqI(NhJdOZObkG_%(}O}?vki7s%y!|d**yK;\nzhiIiz<lpC7<!UnkTP`|BwJifz!)-9`!$>Zhk5jRZ<&l4fiw`wkU=@#{!LuIgzr7eb\nzAccnly8VZt!;Y#pOGC@De`s$m!9Zu$5BcjRC>mQBHdVkasU}Jz9S+ab<CP;lti+1$\nzeY~r`Rrgd@kyBzaJEQX#>P4S~lO5Q54Kq9LRmJW%@_3IM%{<AAypCahIeQzny~@$y\nzV0QmiIi^%WZVV33z<L%YLnjl2x)ud;DbR5`rtQ=n*3n#mmj`sKi8^CDk?!iYV0Fs1\nz*^&VcY{Q@=vGOHOk9=8%{gY{J>Emgi5cB=1*_%8~XCtt*0QZnRO{d21+Y}dQp?+8v\nzJ<$ZILX6bG?$c)4%2OL>)JbGxZY?fuw>|7w4C!v%j=Hg~RsBpE?jx0tU*r#5Mh(9_\nzQstlC`fru5^l$H@kAePrju^3nkl%4U=3wlsy`dp>#NvCrB|>JJLuR6ZsUXlB^L^g4\nz3bY&vZV2Pa^xjliuQope6{`G8;ct^?Op1Co!r?x}mH{S;Siic|Tm}7~@;73IzoA#e\nz+6>z&TZ)m<*7G^H??p>?13P*l6!@y}HM#i@aV3#wI7(Y$?`gb0xci$xeS*#^&^yW1\nzN!uH-^)5|nzKnHzQqb1dnof_6$J-0rQ7ZNw$=bOO(lnFyKuV205Ofe2udMJLYM!FS\nzJ|DiLJo21#I~vbo?7fC9)|rSpDtUrkT|La<^l#jFl^dclFGqjJ{>f7lhgYLL0;m2C\nz6Z!JCd9o<s9`DCP^>~}r6DFUa*RvxuR{$&Sj#AIWR_^33u%iUqvD7NOv;#+*V}X_w\nzQb6@f<&m#xHHun|Obt@Yj@yfg5Z_R3nsn%11Bqk3Mxb>w$wJS8FSF;se2<ny*rB@6\nz;u$jLX}mb%`XHT>C^1a}0xf@n7wQQBIdRKy#K8xOJ>;fAgzWS{9v1)6;!s)JMYN|{\nzOa-Uy&tvgS3-&We*tSpHb|fhzHQtELVNCM(hcU@NADewiuo91>rBTmibn`Eh+9mGw\nz+ivU__9=_Zd<pt&!<JV&R&4v4cHy}NAUoj5v@O(8_&m+1o(Khz)s{)XR6cFq&vsKo\nz#eY1+(Gsd4O`=n1j!}zZ(F6s-5Q0Pz$69c3TJ+IW*uQC6dLgDZw=c9dQ;NdZ&P5BQ\nzyWd^=#lJfP-8z!Co=&ZRr}I-H-x9DBDax9EJLFtnJ*%Oo<pYpZ&nvpdZ{5Flrf`E>\nz1#w&&J1YHq@eI^PY9MbWS4#y#XHvBUJLkpZ>9WbUUOm$Yh396JH#_dkL+wZcwId!f\nzI$JRD7QNKKsOSA(9X#)+4U5=)Hf~dLpUqrXNTK)sSu!cmvwPaH@S}`046^`My4!#y\nz_m@;1ltp426o11I#XXE_-4}nhlWjGzTeGG?6`60w7BtGa`fyZzS@TM2hdxwptR3#b\nz!iU=-yuIUsPtcXa#qo>_yyJaHpnkQhC3USb1FJuV6nfYNBB|R5HjV3~0fzm&`G@rI\nz@5mK-&ER|(0+YE4nmUvnQ|S*h)B2EBqP#2Bt2~-p7Cl~8pl|bJT-6|2%!6#5sMY*K\nzT+>Y?8FTCIa#w6JR(XNeuc-jB#~M^`*?9vi*@92<FQ@<goAaP43fa!l*<_KyE`Elr\nz+`a22McAuoOQgGFtzH9ey%KJkN<F;)5N(4tXk&|8tw5JjtWoDeIGfDF=|-K?IS=y8\nzz4sjaXh-Mw)L1j15bB+Mt*5oA%I`I>i?zN$&}k(Fcd>B@jYip%=i9M+pm-DrQ|+J8\nzryTUyqa8U4&n|MmrK)%<jb!9>@$l0~qq0eP+s!Y-^qhy?c0!UGG9r^PPvf3PFUDKn\nzgpzG1oUY=H$Qq7}{)Gz9Lyi$|t9bI=L&oPK9(TO9VjR<&M4QPWWc)(&Wy^LP_y;u}\nz8q~@o9~znbi{ezh>FF^QmVWy~vONyjePMuuWZ#VR#7M;!b42GIit+cvi0P-wi=PIy\nz+a51MKD2&TRtuEwQ!=8D)A%W2_6vJQGeLCOZC6vU+ZrMIc>BQ#2$BR8?4CeLZM*t@\nzBPPlSW=>;yZW(KAP4h89;-_43ZwT#kES_6co2S@p`8WDbX$LG<W^;R=(EdjzLQz$b\nzPzwjyarPV7XTKai&4uRuKX%dRQw~cw3fV@tI^RMU-TcW9_6~9Z49m^266gJR@wS~P\nz*|ttM=07_o`^k%EKi$1OoWA)CB-1x`)h^?ycH6)M``{DUWJaafk+Haa`$T9XTWKck\nzeB2#sN2+ps7obG68Vw?{TMtifqM^Ch^&wh3LgGt5k_TQNDpKSZ-w`=8gopZ6+eehG\nzqTHBn5od)WkrQ-S7n;Ll#<S3jSDMKx;`-1Miilu;yPR}WaN9r?OUn#_5N#tol$sR6\nzSZRuca@;*_OTOnVg)fQWYq(SnvVb*^RBJ-T-N_k>JQBCC?8ur>jWc##XgQM^$G?p=\nzG^T0PsPJ7wwMN{l5WSgxY{Er*BD4v1-AupOppvggByh}wv@+UeYeE~rXt&8X1g)nu\nzZOMUml@|AdjLF4>Yc)jC^;}D67rtCJuxyCHe>hJ|D2M>*M%nHp(fHmi-@NAwIu$a&\nzx(aM`QL@!4$l;9=2E0kbsOSP@N!!qz<!TBblG4&UNmQ2C^BfSqQt}>Y50Y5gu4mWd\nzDKD)f_*M!JOL#armD@^Lbm=~xC+sMTPW_=Qa=f}3T8<}!%f`Ro^b+^wA24ev_VPEO\nz08?-Sto05AY>aZL)XuYMIuWD-lks&YMZFSlXS9Uw2VCx$4#^Y?bE`n>N|K~~PdRk-\nzA+DUl_UVxy^g@pEDJY9Rfh{-iW7128W4&}wLenAoRS!*eWul8I7R`0lL|60u?hMRU\nz!m1C#hW-aM%_*kM)>TN1J=Bh4`R+q05%e5BSUQe=A7(|eYI}T3XeaoV{!1-du{Q{c\nzACks&=4Bn2ti=CV9-$l#yt4NpvcIhJWvs@{&0|m&J$+t;K1S~!H2?5h(<QPwr@DL;\nzuJt?QB$Em*IQNNqim#Ru6%fdAHY~L&Mxbzyk=e-i@J*NELc}Xht_~+*p=Ov(*8yh;\nzZ(&enNI@kE8K%ZkgQ!6L$71Gm5iKF=;9?^~p!F+=z%-0H%))lZW>MFEkaMj}yYn>f\nzA$uM?CDO(m1dguscH6qpBwDbxq3zN)8WkQ-f#Y^g!q~GGb7f~1rONVnVgif0KuaZ9\nz3cKCL<YLLqjL0@TH#^kat-)Md%Fd5q;dUp4NPpcq0AY@;s;{kY$RFBh1>=(w4!43s\nz$ILrANTdXY=8tF`ihmaV;}@^zG|kViu?DM9Wn*pq5+Jh+&a&wDuaq#jurb(F7jD3h\nzV5{c^>*|-~Cs;EY>K88w2WzTpmmF<1R@YWng@bd0bxn)Uscrz%!f^FsE4LafEAoO8\nz4RJLK>lRprT|dwnMQY8juh$6En!q>HjWzYlf=lLxYZ`;g7KUqrRW<5IzW7ycxT#Td\nzGi%cl{G_<L8-(8t<EOgaAjqn!(TK`p-op9wV~B$0&YR~bHH$xIVcpz@71qe1wN0Z(\nz;iIeIjVM@cwJLVZ8vJAAVEufCVQOWi#Z9&0g-gIJzg2FklZeJ8)m01UFBI!FT2(dm\nz^^MiRxwW+-K-+Wv!n%cxHDXq>=n<oi)XKA-V@4fu__$Hy31fOxety0%Fg-$ZOT4a`\nzraEQYdGL%bC#ll@V>i_VbB8wOO|(>T!}WE+hU)X07B*DFNARQRc?)5E3x*rDur6E;\nze+e&KTAg2I9T&8Y!(ZdV-&a?LgY~G8`L*@S;99j!!4dRnRn<4ul52$_a4y`ZZeI0r\nzYt*Rf<yEy!^QwdOOTr85>#P&&9W^q4VQqCIJh3Y&9AZIraQM*1;SO+F1AI{gLNi!*\nz=se|338ZNkonVzXYuvJ@l$2VhR4-jvy(~!X0d=b8R@GF`vqmkk7+A0{4A5G*psv0F\nz)d1ZVS2rxER*mhXy4n>%<uE~3Rs41yR7N?(iK!*AH!9D?`ROr3EScMY+9xf}K0n-0\nzU45aYT)9i*#)N~Q1kxD(ZYg=r!Wu||HH#aI)qnP4n2UN0N2LKRTx>aj{2J6tbpzqY\nz9C1)o?GhC+wtE`<P98l#H!;->4fPFdzI^;<et|Wg-1{8*c|DmFzrBa!;2;4emekH&\nzSf_&ZwewV<u6kKFdBh0w!rN5*+}Z`GjBrhNMU=lTs$PNq4n8u^LZefGF7Iimo)15+\nz5m%YCq8fEWy^b~8I?Ea{VnlE<&IOoTH?J`W!aBWXZkW145{O<%>@D>{j@9L<B&Djx\nzLOTgt)L&Xd3&%7D)dxCdx-eAXT0D1AbtU^)CC(pcSP`5*7d}2OIKRGuJyyB4r8^Sp\nzV_~{RaG)VJ)h#@)sXDj>#aOsp$s;Y6)i*36-y{zTlCIUkaD6ab!vrjWUIZ<2zV=5>\nzC|#zqkio!prA3f)2H|dv)Hw0ZgoRa$f;CNbiyDKlQ&2ga?xvPj*RD`%S+OP+Jf}Lm\nzth&06y`0mihA(`iKRZNSxRG@18iQ1W`fmkMwx}dKRnj>Ss9OAo#6}RXu-GG)x}l}0\nzk=mv_$@%~6OOK${;o9mt>&ZJT%WJv(Bx??R45Sa|wR%h!HBvEV<pUZShkL&G@~AKM\nzD%O!MJUfeX!|5Y&nDAk4qoLdZM<YDf<3*#j?4}q#BC`bHk$wm3sQz{=y37&2s&5zm\nzhrX0d<#x3ryw1UMZNDy_KRV>B@7oqjdtLvo@Spm2skN~m;pg}>Xv0}$bKk%&)`tdk\nzg||CIJUf_hZ#5ES%*KaUC5r%-lJssGJw3_c<X5w(K>W-1B##TXXK0Rw4=*Ln_%l9m\nzha2yNOeypqj`<trr8unWh+d?n5aZ&B)vscXVuBW1U@KxGTM^@#2rA-eCUO;V3=_0Y\nzMVbjr6e;3ZCW;kN%!I9o5+-Q%iZqj$s8B>{CcUp}jv}U}PXke-2%EKDqKGmk!it!d\nz_$}ltSH$!_<Rz;Vabn;k5SJ+8B>zc})~tw=1C=0FE8>h~S{bfY#O$nvh*__QGy67z\nz*r<rJSe;FZI6I!|^?pTECR_;OF-6Q_-P#p#j(<4>Jfo^B(5vsQ;H!d8R?5f}J`vGd\nzjCe1>{iupbtASLf0E-Y-Jo929dW$$SuGWlcmY42sWDvm3E%nNj4G4Rw!fgs=(1(gz\nz%TX$P6^GeBQhO)*KL-=*+&eWX8v=#M$T$gvU-{A6KK*!ej`{lJB;QSXDk7Bp3c`Lx\nz93JQZk*bJMDer>FR>bIJ+Djgwh=Sy2Km-*rCZ4=fz3slwSQeeDV#X&^{T3+V*xn<d\nzPmv-frqbzx#fq4gL9aNq6>$O+6^bZlqDB#CWYPBGa;qPe>tzJl+;O@C87ZAnDq>*7\nz&+(P<FMQ172A5XU)eEHA91ap+aoP<o|0n2y;)zPT$(8;Ybw`T2#g+aAB={9|yQ0+b\nzMQL}sQh!2Rwu-yY#cd&|sE1uyUqMQ)q8@XxlNDrg4qIJGB?!3M)v@zw&nr4^o6s*w\nz{L@0eD)ci#|3m0!h2ACfb3(r(^bVJ}AQjF_eK&VDY45uZ^8sO_qz~YpS$R^%L;j=C\nzkF%{a9`U-VPglgF2@^OXD}XQd;c^7n`pK4;zzhP|<Fn{3HD3D2m=nX!C5%2Y!ZGY3\nz!ssJobqu37$9w4`<9d83wKBi+cYt6`GQW4ImH9)U(~k%h^JDtUAUulrC2ctfzm;_x\nz38asV&+!pNiL3#c9+$ry!xvXhrq88BDyo-D$yAizm2xWyRaCqy;}nFHGh`;HxNIwn\nzUOVHZj|_U@h%y4bO2kVa8PzeYo-q2zpcjcNzGlMcBcm;b{gE*G$hZj~Y=pY3fqr@$\nz1(z->$6<u5V8RM06=!A9TQ$7&k+BOOO8g$e=p*AZ3Q_fD?57aD>OBJnf<hEZpinb~\nz=v@rnKT>EAg~;+5xfCLcWsITF912aKP?$nfDMYUT$(TW*>nZd*3X#GY^C<KQh3XLM\nzM{c+p0rs6<$_cZx)93(?EW+6<v-_qm1fatG(l4e+ss{!1PhY1aGY9n{oK57(%<;23\nzAkxYl9N3NsNs@VfpX)%KocW&jFxct{=J+6?E4({#Obq`paT3B-KhlO!)-+)CBMB5E\nzn)joO$sL$>YhQiGPcOYzPPixjJMf4OedlLxB(XG7M0B!6mX}5!FLj^XINguC(nvtR\nzBZ1tn*$!A)8xiKdzhBw_!u!#f@izocv5o?(wKJ~2?^-<dpMq6TuM96)gq7&;_mObb\nzx%ZFnm4Fy}W&nq*Bru`gP1Qe<iNC0rBqlyjXSQS}id>3HVX9fE08=jumC97#IK|nU\nzsd+-Bu^RUamF}mR%VU~4jHvcFRgz7v0W(N{R%O6x%qhf~OsKL9nA^V>o(fO{)qryc\nzeh)$oR0GaScj2U#pc1ew^*y*vt|BgELX9Q^F6nz6w#+xFnAI$Lw<4}!qC*kunAoR?\nzKQr+ImvF!hS(m54M5^=yZq1m8TxSTisb3kW3Zd@J+|mbABcUG1dInUDP!A1iMO$4W\nz)T2x-7ivqt`N(0FP*1WATZC$7YPC>Lvtnz7dS>vIkhxx{9n87WMK=tr0WTz$kkUbP\nz+~hFqko{n9_Ty>lOwV4#(tnU|8gO&~xcF1e^5ZznqXTy0!9lgK(%+!#EUqPc8KG>k\nzxXS`03q3K(^3n&l;<y{|><WN3e2gUzy$b<1jn-}s#YoFbg7KfG5x4nsky;79z3(WJ\nzq=-9vUjP=rBJN5dIm$EQ?&bWIXT&|igqp&{J;p>(rP<6xh)optI1{d7mz71YLiSQ|\nzycEKJ2p(AKuheP`oWh1zY7Cs}r<tW+6>(r$U=i57OYp%(Y(c<H?Up~3u-t*C`(KX<\nztLV?K;7zG(um+wHPhEp5(!k#_k(x{S51g&kYfq_Kyu=!KW(Fw}w6aLN_b7a@mc@g5\nz`P1P%DU0VWu?G2j^E;intb^jy`XWLdsyHY?gz3owr5Q@uun!FA?VAMPU>|VuWckQT\nz|1-}(AGMW3@UXHo1`P3EiN?tK4G6Kn3NefcHLMR9&V;hbfLtb2XEq>@3F!?+Fp;jL\nzjbuW)hQpaq4lrO86UqSw<TIh>umeUjk*fq0F+mTVp!FO*a2@n4P{ag|DN@9-OiWP3\nzaXEuf++sx(b4;lsN(PfbZADDxm~u5(d&vT9j-mlm{c-5e6w~nz4;x@JAr>fOLJB>N\nz2`T3ZOi0nnnUK;<XQDu|q+B@5B{}ha>OwiooP<7`2cWcyNMt2dmN|(5YOKoWIVqVt\nz!KU)h2{57Z&q-xM<)71=36+0NA10Imb275yu<@V_n3Ku*6st@#(<vWivz%;>u~kgp\nz>?EX_p@@E5nhHe>V757m7|6stMdV~=B2A6uO+pdTGoqpVf>4k`cEX!3KXu(0OmS@B\nzKV7P+C~B9B#S|#&Emw9gbp1t^*9U$jrxYO`fh||?HtOX$$KdT*$#jaDA~tawQx*)~\nz!GyA4@Q%JE;8GS0-Z6{_<+i~)GqWH-nKO7-#$XUZCGGCaksy>ggZHH0j+4?<TMpi<\nzy7qR}(+BVKkUZBmA@5h@b|D{7<kLbvsK{r8{Hr3Lb*Vfb>f6~5zj;)|!)&2qMLfd9\nzl9c*|^Q_>bX+LG?HFxl_e(yrhor-NUSJW$t*pf+a4A`ZJ$GJD!t%xVm_93Q25l`|w\nzW}hOqW}ORP`@!;_7&HA-ur@nyjsGeCDpUt^`kzUmK30ewi8N1BruV;~dQrvp5);b6\nz{#Td?s+iZ)>akK&2KK+1z7|A*ig_#J5fDX+csKoB5XFl4Ap2Jkwj%cQ8<M46)c+9^\nz6)L8Ki8)r*^U&Q(Ix8=tH$;ws($;{N`_tqnNa5myc9;Jx#N^S5uL;{+Jce3%v{jt2\nz-NhDFYte+KT^ZE<XRCy%3D3FwG`Y&Fwi0%@2J$>hx$sWq(0<Fi5rR3J)Pz^j0Kly{\nzUULm1!pg%Sl<>Msxvq+O-IYcjm1KEIEAIoaEHbsM!J)t`B=P<ZAH!GR!~F=N+@%!i\nz{$W+mi61;X{%Cj!8)R^9BC%R23u~5IgYyz8LRHq_5vkKasIGdj>cr1fX;ddZM-i$M\nzSM7YT>cneQjOxT|6;aT?4B9MF#2C(Jxgw5WVol28LTm8Y#NUzs&R;yn8hj*&cdI$n\nz;BkrPA|~jzc-~K%@qEdnRy34~>4_?yc$q#)(W_##q*7)(%1y>n{qJEu|I6TFoet}j\nzNMRxTY@(owiD!S#O~GAI>#&4`_rZ3!%7cO|y_Z_Me4*)ys*(;%&RGM9bHk|^{=?v}\nzEYp8!>TraGxQshIOecN<GcVVULL>{$u@->MniKE;Yp=5b9zm4<p%f~e3P0SNa#i{H\nzA00p`vxt+6>))JuKEmEr_!u6=hnqeuZx_Rs)a!}iCSrI%Gq@>)%>#TYF^{KiN7%aq\nzAH%5yvKTdWq#2WNJ(1c$T%QvcHBC3|$EX~Ym?u-?(MY{1_!vG2A8!6oDpA?JWFWTI\nzoFRGs^lUgO^>IT+a380vHDn|=Le*6aIh<#Is;d|>iV4+K49QQmp;$4Sdx-K&)m02B\nzU~`wNn8Mz)0Xl;xp+m-~&U|g0B9Bt!RYDdi@()6eXEN?;At$KVYlJ*jk=F`2F}VrZ\nz#QjlioD3=M_aX{cp~|`{l<p^z6$)iIy3$Z)*7%@qouMp_$yRLHY=xjA`f`bsNkaYl\nzdyqz%B-EeNsDg(EaGDt^%|MP(ePn156LVBd4ztxLBA9s&q^U+68qE1Dx4cv}Tu<3U\nz&h=MdG)$?ltG0$L%BHZD5?)qs4XI_q&tirw&LA_VDx$6zt;qZ20<nhFD?_bU)DlHq\nzr>OH3^(RF&DC*COYE;zqmNyrk#LA=&xz>Lb6i~VRu`h*%SkIdKX_i0aIu4^py%zD_\nzS5Ool26_dPsE$~Ye`uor?}$xltgf<#CUFO#Bn?ewLKb16p{f2NjMALr(B3>T5TXwg\nzs`x|GxJy^XADYgDnsW@zU_w>u&`c&&|2s5`iJ(>}$A1bkN@>Ks_+UB(p*yL_`Ys7(\nz`roE#8nuF1YS3b(g4t=rrLqq8Wtn4DOg|=6a|!lmLS`ESm?&0k1DPmQvyDOA5|uv%\nzb9zypwQ4;}la+Ft)aqKw1h4ebl<W{o5N{vg-qVrBOM@teHiYP%RVp+LAud?Qu&4Yq\nzrD0WuwfC_mgHaLNm{84l*mic{^(sa!%r`3HnbbN|?<Pe&&rZ{>h!+O!oTMj9!~Vuj\nz@rsIhiHSE9@iG&;6!CW^-sS#b*sE+A7tZ(f7Q|HlFc#XY3$be0*?yWyk@pR&WC>D+\nzIZSv`8XKytVO3lP<uSvmvv*+JSJgIbF{`bdWLO;&%1MTWc`6uG%B^5xhUNWE=bW2!\nzz5gNP%uOce2GwMQ+Q5|CrQ&W>QaxPFIUBi}Jyupd5_`AO2ZdDSJdF@nPVVqdKP@IW\nz&G1hho%Ha%T(A)9HT<)*rw5S^-d<q#zC_Zf(I{!Xfw8n;&ZzjaKyaFz{63Vc5J&Pp\nzzp_k@x&@~!lXDdB>t`zosW~J3SCKxjbIwSv91(Ch6CNeH$V*I^j`hbEJ1cJn=2ZIr\nz4WNcxapl1-%ZTj2aM;J6z4+75pYfu`@ZNrUJ&`JWpWd?(79uTk4hXqDWDoD}r#Qto\nzAeAgE#K4rRG5yO`F@rc!fg*+m{)8l|(GDNR#VW=c3z(O*XG<34CisbqQ{*N(1m`C4\nz5UB*`Ci4(kfZL~F?rOEe|LLRp;v%U}*@UwC(IEXA;#5QDK|QZG4{a*k#}Q6*gwwmi\nzBL)Uia-eM*K6r~}I09-SKr?tL!H6RQHvs1nj2N5t7leg4GVN{<$`?i)86qMz1rIq`\nzBgXN#rCP~|qa5Soh@!MOu&Gjy7|*V$%sJv{CdP^{QkKdqZ$~JIJgtHeaW4P6pm;hy\nz!msA?LZzrBfYfL4NWY(kURHW!d^#0Ohy>QANEI$S6z`{Do%uou-0Fo$WIk26P!j8w\nzDozy&_-Q1@2Gl$&l*)XnA%}XaW(_wWJ-g~LFUNNWQXE{5j5uA{%ZNC%Q^IK9Tiqpe\nz^9LnI>9;X&s(;sDDOBF^X%tq4%Cl9!mQq)5<&~*2anbXpWiEhpH4x^h?GsgddF76^\nzVczt<R18&nc_$|9_v+bA-bpF%A)6&i+Klu)AeJlQ<i4MPSfz+l`hEstwIWXK{S}C{\nzikQiR`Fifo^JXbK?)E71G(~<W<mrmsBV>glvFqt26M3msc;BZFdNY=HKYgt8cdL%s\nzzF~*`x9V^jzsh&of9GGAns=W2_ux|nYRJ3?VIdls5bw;+TjZxW#aElTA6BqZYVZtF\nzo*G^}DNR;hljlM3pl>9RC+F40eSq&Hz-i^xr&FD(@RAG?rNUt^si`((mbmkl4}%BB\nzaf%gAFZg{rMJU(KJD+1x725?IBQ<|vI!O+yn9F%LLTY}Equu7UsdlT_u3(}_5mz#y\nzCNg<znJ88<S20nlh(9o4E8=P<$`!GWi5ZHxhKZSqxR!|uMf{P8GZpb?Cgv#OdM4EJ\nzIPV4~YE;YyCTbONBNO7h8<_~Jn46doPyP!N7pRz<nOLQWTbO83#H~!MR>W;gtWm`6\nzeaY>_;Wu&2Iu&zAuaT&d^;i$1dhcY1p5Rv0T}%}VbvIL`LfykMY@zODs$8i1n3^Hf\nz{Y=di>H!{mDunuL{A^@CN2rH5uEuS7$;tQzNeQBP4eaO7Y1Z)5fVlaCZ(8um(@PHO\nzC0-tZ4j;^SCsjC<HV62*RJ_BF%~*%9|CS}kCj9f}j)^1vxLtvjavQ)Pg>nxscexUV\nzNk30SEuvIEuPJp;T2tztw5F1Hd?1R1s4XI*XoagDS0L&Na0M+dsWp*uCG0v7YC1J4\nz!+#VKW6^=<NHYTggq<BoeuA$RkdM$q^uvsM__JGo&PewON`97q%P?uB`PrG2sl_gl\nzuU3+3qLklHb=;0VX>_tLW%wafIK*A5|DuQ*W=YslRGe253s$rhh!zFs^NdHSRB%Bi\nz%?kajU%`dkBdETjU=_y%RZMfgAWT}Ih{#a-@k6m9)?}Z7nDvUdlFPI^Wgcb>1#6k;\nzP%&5Wn7U69f9UgLA+|obF%+l;W2)Mg`u~`F6Y#2vq<{GIIel(!5<&tuKtfoO03mE4\nzB!Cct1lhwHKnRX(g1C$e0wN*;0xFIRATB6K;sOGK;^2a~p}63V%OD^sI=IZZq2jJH\nz-><6roO|vK2(R<K|99^5<le68>gww1>gwv{oD|9+PB+l)^{e3OGYoVm2V{+8L$`1Z\nzL&{3z38iqY?C&ZA%BHlk4Y)ya9RuDYpf=z}0bK)b5-?=Idj(7|pxJ~D8_;Y*CmPUf\nzLMIu}Y(gg+&}>52GT;NkImLhv3Rv5K4+)rRz=s7)GvHPM>lpA60qYuYn}87mJ}O|k\nz0Ur~vo&g_c(5`R5CnPt+fKLjTX~69QHZ<T<0%jTTX#pD<aEE}64fu?JO$_*~fK3hf\nzoPgN|d|tpD1MU<s*MKhw*vx=03fSC$y98`uz&8ZUGvJ#7wlv^d0_Gd=ZvwV5;70<s\nzHsGfMwlUymVuWoC__^e^GvF5j78vkL0oxn!D*+1)cu2qw2K-vUA_IOaV6g!Y3)s<s\nz-wD{sfZq$)*?>O?c!B|c6tIf{e-f~(0e=>-#DKpD*ey{8>%aIuVZIrH|CZKINW{h>\nzyo05Lc%p%oflo8AZQw};b__h(z}mp48`w4Q6a$A0e1?G&41A`6!v;Rfz=;Mv+rUW%\nz{<DFT4SbG)YZ>@l1E(1HJOkG@@c9N#HSkmer^(rZy1>A74Lr@j5ko)S!085_k%&+h\nz`m3)ZGzAqZ0UIb*c9{V)1nh0VhQhqR0kc#ZO*(@N*hoc|!z~X}f5vLPu(1@aG?|T6\nzGVR5kYQQFn9rXkQHWlzp17=IvsRqoE+*t<9l}m#24cJW8yB_n*Vgoi;eCD^)fGvd8\nzE(7KXt33v6Dc}JE<_q|#0b5DgLk4Uu;9&!{5%5O?wv~D<TNK$|)ulKlY``Lwej9W%\nz%az<tvgn*|z|I0LGT;e{HwzXUu#1384cJw{6$UJkvegFcCg5ELELGu$Q13bec30uo\nz0B$zmiHd`?tp@C=>i+{fYugQYl7Jauk-4|ZiePe|O1Io#Fnv_Iiy3*A0s9KL)PVg2\nzTxY;?m34npa5msz#V2@&3^+u<9}PHEdcjJTiiQgqHsA;W(+oIL+M8j(lO;FXfR&P)\nzZ@@7Ewl&}>0u~x@tjOHOfD=^4Ug&C=0Z&sL!c-b?l7JHoI9cjF(|}V{)_W*B)qrQJ\nz%ufN%GT=EX{TqPu4S24IvDkpqRrasQU24FYibM4k2E16+3zgw?&46=MS|bd>b;*{S\nzfzIKmv#diX97e3eaZiT?9%u##Ga!*yheQU_giJOqBn<12%sJVTQ;UIo0a6%{n5;u>\nz2D${I$)fg&MW~r0#Uli?X5*u%UD7F@d_@IGbZ<@ME9w{`!Oi-%OHqr&fBJNJykltS\nzS_ZZci}HELFs(K{l2O!({g>=O6t&|0e`!=vYtE5f)}l5HNDGVFGSHk`Skx&*bxL!K\nzI@do80Q+gwDhY7ELW<R#QPd<n8N-G4CX1T#y2#3>p;44AQ&hG<IRfPflq*oKRMw39\nzR{EnzZtT>OoD<x$z&p)qKvAnp>XJ%B<>5P#!9<~fys2Vw%R{om66QnAkX%qnlXcg<\nzC@@@(L_)(-sJKfz=)9yV9-R6TA$H-5H}4K2;qcc0isN1K2prH?+QnZGimNXElKWm(\nzQ^m>*QC=|>+hWhMVk&k7N|(H3p_KJgaV@d!Y{^SiwVo+~>IF(u+&H;3Qk<q5(&Dg-\nz<kb}}WdcP6>hD3BbaP>tK<ScKDNsG(IYFQ-l|Hizwuc33B6Hhe4{Fd8t^ZM=Y-z)<\nz?2w9^31o@mFK!_qu0vDj7q=ELY(PA|!e>whY$srv0Sg37H(+}KGYnWHU?T&bAYiru\nzy9n6afMy=ZH=vmZ+8VG_hzkwaUBHe8JW;?d2J9&y<_>OAZvo2;*jGRk6BG}WKJ0ID\nz2Z_Rm8E~)=R~m4L<W4Z)P{}>hfWrhl$ABYL;!5=SR0EEb&YR_f^~fUT8*r4AU2MS7\nz0$yW4GY>2^pqU45FyJX7)d~atNi`S<JFGU~sjBgX0Piy3I92CWfa?r6Q7YPOz{vtW\nzV8Am};(H+8YQVEpm>xyhZospJc&7o+R|$Uy@yiChK=F!omjS1#x=&&#ermw!s`i~2\nzjE4+3L)HBp;Ex8pP$qU0j1<pQkvv$s2}X)9lH4?jO^Ro!NCk2;40y5RW*hJl5i;L^\nzm#U^eLdZe`E>ijyfL#oDwHQOG0k2iOxGyu{b*j#9AntF#rNVibjq6B|J)4ZJOYwdc\nzriRJDdsj7LFC@@=a$85XX^P*M0h`u}E)*0WP<&Wr+|0*HzfcNp#>WjyyALeg2k_OB\nz)Fl3m2DrmtbWGv!7mZbizxax&PhuEVru|5aej`StQDMaNQAV-FP04X-MWA<2z*oyb\nzRFc2g&(dvI%N>g|UGc~h8;&K?)9}@C8@imFlvKo&JP%w`JS$8_D$aN=Pa_7H$AE13\nz6fX!&FvSZQkO`*vDh6csFTREWnKg^AXFz7n;u{!{S+n>?2C}8n6%5F%S$r!4GHVuB\nzGtgGZ)-oUwL-8gCI!ewK2D%9FAOocWJj6hm01q?JTY#+$^cUa}1_lYRjR6=FKE;nR\nzFj9cW7^oEBaRyEm;0XpM2=F8WlLgq$z?lL(#lSfNJk7vV0d_DjLx5)(m?glo49pSW\nzIR@qn@H_*H1lY;I;y?&hygx+l=BObQ?P1Eb;^M!DXzbObv<8zg7SB~Qoz~1|jCb?g\nzeE~Esoxr#hNVX(*#m0swPmtt&+i#KJ9b4PPK!kAViGXYprc3edDsfFWZ_M5y%QG{A\nz?-a<4*}DWXp}`uJN~0`;SMtSc%@bFaJb_hww}F*`*BRJ0@OlF~O1#4cl|m1F<a<y$\nzL4_h>TJdTXeitIreZ1l-aXd!CYJp@cxcD9wB08Lxe25>{#@7gHBy03uwE$k__chA7\nzN8PUF+$8=^=I>hkox<O>`I{aDL*&Qbb@;n3e@FN`oxkhxcYSGG|Kbl+BDp(h`G+b@\nzmvIdAca=t>Yw?l?RXQE`n%?+G)uA}B&}vA{+Jiqi1!fPE)-fe)VS&eX+7TDLkTyUn\nzuNt8ux`-fQX~zcPzCLjyi4CQsgui@Gr(;VFe#HTGY?nnP(r`Y2ilbKDDJ4WZz1%?g\nzKCZ23k)yIxlW>z0jhvnG`J#vj-KijVAlPPb6yB*=qVNMOVy6<`C(ah28y}&IC+k!y\nz=joEuJ#tfHn(CkjtJ6swot7D(4uvB9Yfr!MG^<muJdyx+HmDg;uVr<vm;My`Ml{vA\nzNq8diYtOVgH%+A!FCaQ+GrutN>zu;?R71l<iebII&TAOb)Th!g186R30AXW_fDMIF\nzBdJK?;P89kay-iQ>Mc*CU3lR>FmQ#Va1ak(Q`Ja!6Zpz(Qg|{i$kK&FT4BHNNN}KK\nzQel7AyWuu~0ga>nnO5N_mxy3fBp)}qf8m($b$-?3_-d{xIXSI8sHBey|IByK%8YBG\nz60%TRffTQ3XamHdYZ;ErwDgbCIfJ%B9J-WZG9CpiW#2-|oq{?9{JWp=g`fJtPpLBF\nz2r~*FRN?agwc@jgha{|&fmrykO1v0ZVNB-ehpiI4%opep*_69Xplt#z;Ne{OsDxDM\nzxD$-x4jrjr`GzDbDeZ)N!)pO>|D14N-aSZrKsy4$R{y#9afwLO+GR*M3AVr`x(sbW\nz8CLBnldUepQs*F<R(r}+t4l?lJION((eOGq!GN*_7{P-|bl+tpkDM~$9PT<R+`{AB\nz_2LMnQS;_9Q?t%13=ap6m#cXl0;Z5x#P`n36}<esk}zGBsy+1_E3XINSQlyYdh%LI\nzOfK&vSy-`DdA-=>i2ddD<{S||uMf|#62RmQ<Q!>9-e9h@x#hl$%3P9+6_k;;ARIZ#\nzC@61X2Bl5?i-PrEF7?;GaMENe?+U(ohN1Sl$7X8Y<}lqx6Z!6M+Nqb%=C8c2G0oT#\nzxXqXM04qh}qr3;Q!OQrYya!qlAn{S&gG^Q?ch=-_ER`+yQuE}2ER|zGc_d5a$~D!z\nzM+3M0@*Xp{{oD-5Ddv=SRhTa1@x8Xca05*P{*pvtt>!+tn)}4;(hSPGE=+Bcb}r%8\nz$o;XrrCeEa$&s`A{+3HhVP}-LKjCr|WM>rg@p9rR=bJJOW;0D0f6qS|a^Qgs`LS_X\nz5udQiJ3%ED_BOL#URT+hm7$kcDv-?Zc|%lVB9u8WZ;Z;M4wj9Dyi-&L8ABNly}Uok\nz{McWhaVkQpnIO=3fi?;>L1GcvF36iCkZc#^O%}*fR>N0NQyJ<u!4y^zs9ELhecTs3\nzQ|S^^!f{GoqhMr`*Hj=Qcdn{Or6iKd%NHm^q-mr0p^<EXI*A*~7wB}QN$G`_`!tHX\nztvz#{Rnj&b>T9~Oq=X$TT|S*@l?-AaqxMv+vq}bsuTm(^eOfY<Ekw+<WEkJDm+7&j\nzg2!W-kPT;`e{H<#r(_Bj8CLuJ3ujm*XD~3bHeMNIm7K{yW$npl0XUC~OkfKyF;|Go\nz90AQ8;+_UHmxxa?pt(id%Yc{g@K?PJC`%yK$ADK$ZeIglD_}nZUMFCG11=G8fFrG1\nznphwDnrgMIgCB>!aGjoXN^0cMbf!8ld^P~4SLX+2Fg29{@uKR21iD2qOvtA3++S$`\nz-s6}c?6TG0!yA2e2U%T)_eZQQ@hIx!#OFXIzEFM2v08@Jl5n!JrGf0wBa&v?Bc8ls\nzP_@)Sq(jKJybFTa1awhh6>ihdj4qX^>Ql31bSbl?C)TELKJ^mv#M%@#@w%Z{q1Cc8\nzejNIOyG3JN;+72v2km#N@Qr|4;blOUx=YofxSgiZa|o(KkW89tjZB3yX#(QsXk^j^\nz)D)&{EfA(%6!vFc1yf>Wsr9mTWFWk9q6}Fwkkkg%fS_zCn60pNlh7aa)4gkjH&D>S\nzwx*z&&}Gc2hgEtl5aQJZRFO+f5H0Rht$}AP8eIzS3F>(jUWqIbYNu*f2Y`WIlu>G0\nz`m$-MP`)DK%jj0Gs7#7BvnB6UId(GoeodacD~zsLRI>d<oHQ(%Ei%nlQ|)k%0iF~W\nz*lb8frVH%G6o48<U0}B$D6JJeHKV5490wSgrrGs)B_T3Rv$F{5??Jf)P2g3Ynr_P|\nz+V04G8C9rL2cdqq0$&`JosR@tio>ZH1YV3U%cb3RHw)I~l9^@$Wu>W(I=mjai3F)m\nznn#a;I_p~0w6I6oRfpg5NlSFFsU^BTH`U4_K6*SK92^31bTg>6<aH~qO$Qcf<;bHV\nz@<n6HLL`ZP-)QsY<F+vbQnvAC&Kg8n{KX8otV_=?w<iXT=bl0N^xz^_E=5ZpY)Hm(\nzC1qVp)mB4@Kz{c`W_=sw)25M>O8b}_vW2j;^C%*wEwLH>n$K(<<#E$byo~uA@=8S8\nz*jftrxLKu={Ur<pPm<p{7k^gY7AfS!&ZBgnev17cHLRG(Sl}*5;ZY)#s7FYytw$LP\nzGM0$=23YhO7%MaTGR5M|B?5Xb)S;&gq}k_BKI?SLxzSF&o-#=i(?i*N>Jimbewm)A\nzShn|kee=GbG$?zq)bXxQ&#h{XLRRraJ9LQfv{7dXs;3=t2F0RIvqSZL6boK_rC31`\nzp?PPKIdG%P+yq*P^rtM+q^KglNo~5}J<cm2*lq*Z+7=U*g^zxbIfy1$uDpFJw35i^\nz%W^5qV0@^R3O!DEvWmb1UZUUIr0wr90qNJ*kSHf_i4gqT<1D>EBhwJPg2@29vIm>0\nzStKzGk?VUED)uss#*2mNNJ4Y3a*Ddia%pWMvaJxR**;aAY>jLoSV;u*yr;u#csQ}5\nz^;ov9$0&at>_bE&V{9!$t!UvZlt*8dO9yQ{06S0kJ7MX|a%rK-%(C*>5>tjCiz}no\nzJ&3wk8(g$#S`p<lS89%IFSFdd)aQn!<;n0HLZl>ZU})MyRRela!ugcPUx9Zx&}$o5\nzr^U7G(3M0%UzSUIZ;ZFGS$`Mdi$Lk{`y*I(dwOk>W*cRZFosK#9eSHkybI0zXj9sF\nzp?`i#S>%NTVZZY)pYsLE<5BpG3e_13LSC1OaF^MkRvt>mncy$CLp@{hqO%2~3ClW*\nz+EwA>(z%yX9xI6y$kjN6v)tq|(~iOoDpW;e+$|)CG?JAao}^N!$qx|$y(7f5=B?d?\nzU_H@GFX9J=bBm1MFNuoE8{g71nXRDqFrc|Qo});)VkIT-b3XmwISC0_|DD^j3_S?T\nzw#A*$o=SD@S>a(#6({8;&;)Y^q51g<X3?uJvsgx0dNGSw9xH|)xg_T+<EGboCqfkK\nzh?HbRjEYb1J}EB{hN_k?lA2T21w`O1b3>o_6wFx~&U)<8LfpPn;T7jLuxuwTltxn)\nz%`(wC%s303*@^OaUSeBtR@$Kf9w#%gWWOyvK9}&UTNaSNSQ=I}sYZlmu^K5UbfZ^D\nzOgkGFY}Rp=@M(eyU8X`$F^c@4w2Y;1yuTp@!}}?ZC*5en%97br|3F#fsl{D$#YxwR\nzfn*E^nx&;;PP7}6&J}{Lu>`agC#G`ZOxD^+%IC7wH0i?72Agf*951i6v>~m(N?Am>\nzbyU{`qGxrMwy{%gCOmI&v3$-#Crl!5CA6=!z<kqV6+6c_y($7qE#4_(<}1o$)qm2>\nzm-^2vb<zkgi}Fo_PUox^l*J9AFKJLxg(#yh<wdo{K5-f`P-8R~rZj!}OZaT5Rga!x\nzSxu%{V{|UtvSeFLrcMW{l>LQ4wVQ7JN!O#rg|qC?#W{pkr|KLE4xMEOW(Z=e&Y{@R\nzS+?}T>1k@Bwm*VIG;}O=n&u5n15MH?5<5z{$y$>j;5<tZ=jnzNiGtBgK}^+6D9{GQ\nzMS_^&RkiCvLCn$|GK0bhbFs%`{zVyQS+jK#`&AMKpA5XJ*1AN?Do;>W0sTHX(z2RT\nzVy@132{L(~1TR6Bya7Z?ovb=2HByyXNnRd}0O0MJKrpv=Pd41DV!5UMYn4|9B{-?p\nzX+0R^I{CI}R-GVS6rEv`2?d2Q<h~#jTa$o=N>!*%pib*q6)i3m5={P!KB)T!s(V;~\nz%4bGVJ+~HNsgUC>W7om>QG!}K9p59-X4GZRv8+)Zji0BN?V1sy+)F_-+@1%5)Kh9I\nzV41eNqOhJ3$kJy90AHf&K~nQvsyUIy0e?(mW0cD)eM?=h?c0fWP`N{DDmNzIuP&g?\nzk&xcgX-qw)6H!mo(Q);}bYfKZd?*9CkEauBHqwfz-L&#n?c8>pwbwN|`=hl_y2&uW\nzkLIMhU)!}S0Zk2L`36%_Zdo5fHZlq_gORF3)S4(0Pxn)%vuxc(lv`+d5?bVwt+Zf;\nzQ6;wGsx9kbZU5zW>mDcU*-UHHJ;$qi>&zq8eQBUY(pajtp{aYTw)aroe+f{<2p<E)\nzc3jkK`i+S*n?GcpH3mae$u~m0(@}{(ENQU%{X_HlLX%6ws*;AOFE|ANJ}HF|>kMg-\nz1%(`YeLN|$BMlY!pyA{xD=9Sw9qTjdGarE_e5@}~O-JF=Qi#)BXrpb6vTBa(?vm{+\nzTRbZ^W0aRs9hY&wm$5Z2W3iX9D=wp2GVHkl<&bE;rZ%i6%Xk9w9?c%S6^+N;=fZ{3\nzBySD&&F6ap@lmT@8jCr2I<h+P4xXT85*li@Q4B6E=&_=Mpqa@YrtMXKinF2^=VR#b\nz<H`F6hyO7IsnB+dQ~w(T8KLca|0@JJS=%R|n`7pe|DCS!M+~hcPDPy<h%z}JY1|Oe\nzWyeFb_9#SMJ)0s<sLH)lo!o3R#(khRG5zko=`S~B)T-v=VftrT-F5Q|JwEu&q;z-P\nzrUvdr-JD-OXlR+PhpxkMxxr;jwtDJZ;_H2yQsN}tAQ;W1)(nSKU+vsG4qX(Cf&A9_\nzF%X&<Z5f)$?Zr@x;b^Ag{@O`|ATb>MpyH?;;g-q$Qam*VQzhQ_=C$O~%f(mn{0Rbh\nzPl~_Uu{83v`-O1~YSrVD*|9Xz9fOV~CU6j1)kNF7Nz!0=^uJ@CNAVn9FqEzB@e}?V\nz1j*I*r~eg#G}rb86aOzY;>|93+Wz^!LXdoIFFftPK_jiTU2D>RgCK3SedGTdL1Jc?\nzZK(5@v&;L(L!{xUj>)Oj@emC;9wNLH>e$t-I0}(JC;Z-wS4ciPta%fNlJuGBJLaOZ\nz*fEE7tDs}1U6-)#72I{<87@(0&w!ivK8#D!E&0^WAdlqJYiWDK>HnA3>G|~9+Af~*\nze<?^aqop)$KlWcCNL_9BIpe=UBk9_H^}j-p`r00S=Km9o#CWhdsPmY9=l0_vdhU3L\nzK06+wG&qMN$>fKD#_!Y!>a7`M=juHt#_P!2ae-ge`fSS@J>6oTqfQ+SZ^OPujm74L\nzWxemPmr<h_I^eK>Q6t*XM(KwRZ<MOBB}DmmhqqGOorP2#+EfJ<Jtgvy!#C2fX*-YU\nzK9*9v5&9t-)s9}p^n;T@*LXlQ*GjvxiulRLI7a|=3`S!=2_l!RAgVDnX}@$N3m0JU\nzxjnYo`y~cPvwuC8o$c*T>v(5-yVJXdv%SN~so`wzbn=7FmiLa=NaKvCvRYp&it%vR\nzbzUn9@-b%vlOEiM&Y>)Ix5F1Juy;MzLp0_Sk!3&5W%YgVXS0udpHrW%#dx0>zb{Dj\nzkmKF~@}tM{QB7wXK7Vi*AZ92%iaKGo&P=R7{0!Q<dy_Lxj@dHdEj@pE_k<B+^Es9!\nz?SI*+Lr25Tvib7_@ro0n6J%#u^*o<B9Rn7kh-@iFE2Tr^i3ZO*#CG@+tkmpq8Fr$g\nzi??WjPX}Y~iwj`i(c7{jdHt&10L98^RsK+<!*8k{v`5_6d)Co8Fu&vJizferzK}ir\nz)NwV2k3xl~QH2)=vdYc{;EPP>`RFHXzgkCGi+SU3hof(b7e1<zW>?@{kjQ3Uq+U7(\nz81CE&)~b>$8Ov7(_8TohX9iz#2|6Jm7e_@Z^s+tp4?Et5l*JopJfhEy9nq`(5&h#d\nz9?|DIMe!s0TxU>?5q+MMTVq6@@3e{;(UYwUoTkLq`|uc_7CXi>aE*JK!!MWj$eL1O\nzx{O{Ahhab6N#m<01|=pu!->%C3uoEpdDt1WtW}Ozf`|B{=bIsZjUy*zCif_v<i#{g\nzoTQ~Fd2|c&D*2E1{QSW%1{Smlby5$?X-HtRo(}$x<=Ag?Y<ntXX2)*i^X-$acwk5=\nzOd+YStcpr+_Ec_hoad?Rw}CAENf3A^0MrR`i1K3d0+`Sx<v1Dn;?WHv5)XbNb|Wb2\nzSm=z4wrDDU@8r!J?r2Z?1!zxj*U7Ieut!9PXK_BpXk@nITtpm#dpG~nvxDHN))BVG\nzP{rHvLi*-FLhe8=X@w3%ql$<+9ls%QPR9&sw9K>To1DZ67>6;f`QO=z@*D6Q>YIl@\nzvS&WUBqtW@w(jKYlX+{-JL*J#_$=ra)po;zrko1ZF`7yDv)+x#>=1Q#G+yd@mdU=)\nzrGsv^&>^u7@Lx*k)T)cI_lHyaAx?4d)SefHL!IV9Z%1p&VNPz)DYm04;KQACy2FME\nz_EPw(5wRYu9o<14>6r8M19R9vJ%;EqgRbq4ck0pQcJGrqKQP`zLUo#>ZIJ5~fh>J(\nz0O&xaeKS8$jb|??8&koYP$`wdF%e891v5s?54%&KCp-E|swF=_rLzJ+Zl?g?_Z1!B\nzpM!Fqz1p}H?2F=^;L{!~dAC3x(>1>;E;o|qd%uV|jAq%X5XS;FPb)DS+HDc?9Q}Ay\nzAs0f4k;Na6Ht{m^QAf?w(cr;QbWmj*<&Acd9;B*+F5)PID%BMEPeVdFBz(ol3~TkZ\nzPd6DqGWg&KqAQT8AS4CI`7lLd0bk;Cpxcz~0+bchO@1yN1oo9&+)J4g&7e!3<NRXL\nzF;{Z{^4R-9ZV?)7SWlbDTCM5{sc~BOgWV=R`1rx@6C7te9DlTH1|L7!vB3weuzs;)\nzuA)$=@rzwE)cDnw8`wrH4BcPtm{23*Y+xe6;DeWD|FX@}Z1ZdmS^gbc9gisGcmc{f\nzA<~XKL1`-Eg092wQ})y%1w#(M*$Dcc&5_LjKe9Q-3a{L;lV`y$j}-`{O}@>m5f<Vn\nz8<<ox$5~En<^`zqv;gp@lq$cF<qKz}8>H?S$kzEmpiuyTfd=J}!m5$uq+NX6l}E>B\nz<bPcG9jl{_5GANQ$EN=Zt)C2J=?4OU@1^LDH^x?UK#?2iLUH?C@QR7FOvCy*PKVjx\nz{U1eIc}C>_y-15MEBs!h)zFB5_ROXB96QpQgA%F1{RR_h)pDF|#Nn9cdSq|x?T2PN\nzNxd%to8$1tUSx1AZ!9h|*txPq^vYXwv(@*Jboq5YB!CIT7D4z%*R%MpMwFaZdYgn?\nz6_Lg8O3#G2@pn3Ck@q?i$1L(<R?`$M9TJ9m*^1e8H7pn}(bfGh`hcc_c>%HMwtueR\nz^;}ilJSrir_$wp_%PXurWgTyaPeOwzRIjAy*>68RO>n+n0jM$MMsw-$gDXvL5Kns+\nzRR$mAM%P|mWc<-Cy!gF94?Fl$&=V0~9i^TGR3I~9l%B%KJjRdowf4J#WH&PW1HQ+Z\nzVjQPhbq}=K<N{=M;T!2@d^9<K>I~}xy9qx^VQ@T$ePFkWIbp}XU+naOSry{`-A=^3\nzZaEzY%Ao&m^0A%C|KEfV_+(5v-TK6CKu?c&pCj#GeP-)FA%;4h;qgBTR$zi;Xq`}Z\nzTE=aj1i@d*qR&6<21`hS)<LS61AgOvA?oWycx;yfjmK^faYdFoWV=I=cRY>ttms(2\nzpytw)+w9vNJ<xLj>hwl(&3jq&z|dl$P{q+mi5~fhn@?yhgbyoD-7O)L>N6jP3LkN|\nzgh+W<f*{SYQCp%`>m(==V7){`Jt+!O_lRNjMEHX=$3G=hWTV7AJ<qb#MhSQry~*Y+\nzl>rPqYxBNI&*^xw@Hsn`9)&XNs9R%Wxe1hkk6N|$GLGeLtr^SRdW2YR<q=}JRk5*L\nz+6gxbZ|3hOy+Gx5+wO}h^^^dWJ|zeY2?D(XK=)|?axV#B{H|D2MV%S5I3*jPO$eBJ\nz&3TN(s$*ok!?v#_iH<d;`IXUR;QLovEqhyjR3+W+lj|rmeYYbo5F%~U^%Y$9nQ7--\nzXlkb)b}=*U{3GB7*0}6*kzG5+6-}}(w)r_xk0GxA%(i28@|sfCCFaRXLl(1Um3UBH\nzYTFMkAWf|DcmX($HLEjyrxjhY#&9-a!(7`w^t+sC%M9)zxR5qQ=h=3fg}*11DH`0f\nz5%JYEwlk8727OcPEhR&U|FLyjJYiSKvn+q(CMH&h^JR*u)iT@8T7(*p8rKLN5odD=\nzOoqpCfjurp>4c)k*b}|pw(t5~K}_xV`463HOrHr?wa9kfr`nHdNYZD%Kc->vZxo;*\nz%-iC6*;f2N9Y6mcG;HvPd}sOr8hrNL?AYw?UiMDO4o9=;UhkhI+n%05kq|t#Kbk2w\nzre_U->_1J2^_vKN`J+~mNIY&Q*!lbzipep!6N2kczb<<E$!}vc?!?_ZDy>G?DXIya\nzOCCP}J;H8H&okvs#6&RCPNxi+E=JnTxki^BD~Gp%D~pwKuM8ddn{Tgz;-(?LsKzc?\nzUAqN6D(-z)?ugwie&;OR&Z)7YuV>e#|Bdc_xM=-YTn=Tb41dji2K%7Q*q{jy)HJfQ\nz=vj7W*{&&A$v2M8FCZq#i?P>1Z}7>tBlHGZEV0jMM{!y!yK!<E!JDV}hC+|Jm0c-H\nzo)-u-7r@{q8N8f_(e4&5W=E}ro)NrSNH~0;FM61RW)awnUj;p3c#qKOWs9dEavvEJ\nzS<}OcJ55!*g%+%Yo^U+iXGWRQ<BY%gc(BCYmp3jgdi2mrJ;HWcGuyrd+By1m+A!q$\nz_7=aLcCMHCKiN)eMqPqWj-8}oTSs?vLPp<SJN}@f^NQD8zm-9NxRF~y+wal!n_o8O\nz@;*IsIhD)OsipK^oH0BElG}wuFRSKGjt*C*MK!^WrDs{U#})`?(^If}OqDPuU#^-v\nzZ@gl8!=EO8H7T{K$F&&B7g%qolHiJk$KIPNyT*#;Efsqwc)GP)H6k9~M@Hz|DxDtg\nzr3(uff9C%vdn7#mzPiR7${moG>3Nwvpg%CL!7)h2eW)7t4%EZAzpHw|GkXqJ530K4\nz(>VX2%A&OQN&O_S?9hx=AFJfMu7<@$0$V#e6a;<>6yg=wuxw=0d3kC<fG&ag*{3Ue\nzF7fLZ$kL?&AUZ|RbJQ3{8Yj9m+%=AL`B^TkTrm-!94O=Wn>^%)Y>534RWl<%rOyZe\nzR%*>He)YN1XF%^q-`D5%9es0u01885K8!lj<~}^vJoa4Ngc$Wm6Vz8q-$oJ~T|J^l\nzG?5+%e^4rn*+rmJhBsma$&TvunpmA;LnYv2={fQSupu--PSc_D`6O@!z>}kHa|Y--\nz2ptnd2bLTo(bVG7%Tsuk+@@k~1+_zs^iiwA*O|F|n`%Svhwwg4&OE(?^{C3DC*-{k\nza7ET*u{a)tkE{B@vKc7)q-sj6y-x;8J{5~P)yt!&Xn*FGj6@TMTNed0@Lv$o5Qz~s\nzsT4&UOl^rkZBp&&iDC~piQ)ntT=&VlW2E7YRa)@E&Do~s)GAu4VI#k>in$%n&1s@y\nz4$&CbRJFNyfG3z4xjFLEC=bh{IX4z3o~F4nhiTRG_+~*174tM|0dbg&$09POT1Dms\nzpN1)Cja!DS>8DS%2CL*?Y{eB0QQ_d)iE+bJtze@wW}J_I9MK?%V!rn;vCM^=$tsy2\nzV_vo*dcTHVlyVy=XcDC@KY#4wY~GLRh=}F{C_eQXXw>_73m8?adMQTI`aqVxEda<^\nzelUQ^-5vn^aYiqE$p<GA=2Dup<?={yUZ<DFlrafqMh6PvE02Po8pS7hqSJ%?s3th)\nzjkLqBp_Ne-Xk+%SjN`aMxlPblM~@7mKGNF-`-72zuNVrePeh%8UZVRnerwEa!GvYI\nz=7ySmp(H|p^ug7pnPoaEr|$KT{-`S#?yNe&lAg}+Zd;QK-IX4*Y>wgPOGU3wh}Usc\nzyHK?q-Uv~nDB>QoyJEt8pc|T+J1ggQ690c?cLk3o^8CkUcU)U5-Ie~7wOM84!;jzo\nzz%3WQC+USjb>ReH+|pZjptpiH=Tp)fhuShF=H&yy+f($0BA<+2XH+3%wEsTJlLLz9\nz=D-SG4vaNp!|j#*#0^m6-awX&(vJd|Ucu8SVZ64%H>m87o<)^eR{58vg1M+a_p3l{\nzxjzR1_a?6;D3fM@o>ZnzASbGairaA^5ZUB4W?H4KK}7mU^0-ibTwb6sl(>=$o8>t|\nz+qzy!I+F0&P@GGna3<yYBy?=x_XtG=ABrTw6AwDH{@K(4!Tho`k^AhA<d&SIc5yah\nz^`_d@XDRARsH`*m_Gfu?P|a%>^;vhCF-^KZy-q{YpJx*FiDy|~@-cKD;_)SK=i|TH\nz_r?EKVWuzeOsdFcq}U6*`ZwtTw0h=}FGZQWoW*;1BGhdusxfpg^tW{*dQ@4(N7@6p\nz<X;;RIVZPp@<jT#BM&6gihIC`ldP?Y{PJbIZ-oU~kfLa1*m<g@7IdSM!g^s{3I$BM\nzB~6&j=JF(u&DHV_XT#-^6h#ks3;iYCc@yAb=07T==&5Pa;;6QK+&`P~EkpD}pZomX\nzhWaaU@nE{uGUi%9-)UCMp26LRu~euPiDxex)@xfJXctE1c9)xJ>;*FP%K^Z*26{6J\nzY&Pm3;VPWzTV2aK0@oq-b^i(1?ZoxkfD|HYg?*5?ZVY7TssP~2N^f|nDeGo%^#=yM\nz)+D^b8$UD{d5;20iqg;vQ<@4*aM~xukBuox!Aihy(v&y77IwCx%8D|j(yNY9+L`_~\nzI3Bh5JI5?ej{K;_8{QIZc1_ux=`?E}u{gb6rUMrriGvznnbf99$K<-ui7j#aF-mZc\nz98nC4-=8z3dDrJiiY8g#HL?aS$C0e5w;oFax9F&>#3+wTjKslKOrtB0$>?B!5xvvr\nzA}N89V{_0kFzS5Cao45cN}m`nPOs-#Z>qu?(ieeVD74*37T8=Pf!{Xhz)LTv<zf8E\nzltCt6v+rq1>C3>&x=TnJ)d0RuKKGelwTj-T0)Nw>P0-)KBQ-cFcu{E_(P!`$swvrb\nzGEU4g3i$m<2E|1DkA4ion)Bz=FSZo^|GESTj2=thjl`Fg`AVQSF1;nqikbmhhm~DL\nzR8^$U&;7<n@#F{6&=69J_n0$v%(Aj54fR_`L&N4KC%bldV3da53pI#o_;A0j*ACX<\nzNd$#Ds&t1!*}Une5zvA6o2OH<C##327(}zqRuFY2qPv);GfhdMyGm(Zxs*8VM1HiX\nzR>O0UK{$T-LyFaa%8#!YZ*}2!jM3c?o@x@hu<klfJ?BDPL~c)Yc0LcOld#-Hf$>&B\nzA>rt#TIdT-WVt#~c6h9cT!>$1D6;eD=^J29pck6uaQ1lBcsz1~Vo^E5u~<#522_$Y\nz5zdDu$i3&0B>-wi?>x(!K5Y^K<@}a3t~BXuTPme_D~~J!m|_x&*WduU^BcN^_+3Lx\nz+gU>VuH7k0{I1<|B^eVF+v8OWdZC^}dsTVoPMm7l6I3I5LmzXtC(7Gs1vpLBrOk$(\nzB!E5HyhD~-Vz)p`XiF;ZbPMV3#8S%Ssf?ba7_QB!AF4;kh|U5cojPNh1<VPAVPXKi\nzc$F>0Z@JQF3V0>|Ew|l;QD$E{^@-YfiI`2aoG+ag1m~Sb$@a`>E>SywH44EoI(nun\nz)kpWzxN{S`DuTT<vG>x<LCQ2F8anHfyoM^zFVj$c3Y~cPXc>JT@uDY1I8UFKEpKRK\nzhWZT3q!VJvJR@tJ<EKl7a2_b|{&u>YYB_Y&+<E-?NkHJgpW`!M1y8&`AQV1o)q!e6\nz2Ep@d9doiBbLJgfujSG)xA%!T?vA;Tg=XWUETsolqoQM-UiS(ff=k(7_2tJb*%eb$\nz&5|mloJUdiGDX!Ufk-}qC7mDn1RoJb1QG~JEURB|9o@n(QLAV%60>HGSxx(#|G)ye\nz9|hmu=WM^i52(V9fh=7X0CEQf08L9L?^8xV`DlaL4lcQsf$ZqQ<$?9$&&5}hSEnmv\nzPyihxdY`o>p;o<lC*=7dkfn8CcU-3hfFr#{>{Q!Xdj~ii^(|ulOhs?uoeEN#Yv$lx\nzDV`{Fq5CSq^Ny?E!{(+pA!$NeR*7XmYOoQ)fsQgCrbZl9?wIDq9A?{|5LT{9jkcW&\nzh}lt3)%_Cw+uZ)(meQD-?_?WoA6<{WDUu$cL(zxjYpcfDGJ2eDo_U|UO<UEf3>b)h\nzJdmY#27$MNzy|?ff%=l5?!Vx>d%}EtMd+&uzEXoVfd(JCpR|7+wg`#24)W14H3S8b\nzeGjfhm{_?~nfJ-1O1)1mRqlO;kr2+Z6?4m5BSD`uSa@!m`JCpjVJ85<0nOYrnud=4\nzdC|^lyap2A5TrWN=Ho6qX(bUJ)l$UsQB9cN`SS-Y#UDcSDA-oiNzp40?BKay1ar)8\nz&h%nAj50qGqc>dpeCTS~FFv2B>!2e-;eBLRyv=q7L9fT00AlVpi`}WcwiCG<W&fl5\nz%`H4d{%<`=hQlh_cl_OF$s$Gwv}h8wD0t<^AEj?$w*{k=PQ@x*Fueic!Z9v~?YHd>\nz#P3+s>rp&dGb7e+JFyt!?&x-D=<wrN#~-xIBhA*^ZRdQd{aB6gZIKR`mZJns3-XvM\nzKjcVLgikXYcE6cv=y@M#G`O2b7j<8W$qd|QAd3z#qU&@?JU@=)p23A@Y*%20p{HoQ\nzD|Mb$<k{GM!M72PHo8-*Xk`=g3c`hIZ@^<XhS0p26p%W_UP5K8DnHB8hXY0Qrvbq4\nz8eR(f645%&TI4&H%l%Y8R4~A@Gv;Pst1HEFYL_H;OYWLHAkrlnUeC1#z-YB=b%@vv\nz9zF@~$W679bHaoT<%7Brs1o|COVzxH0xoPgxXi&t_#A@(agq?@%1p4bl;l5yxK>0t\nzwUd)Y0%Dg^KOhkP9}kLzgYu;|RvjY4)z*{TlN(efk8wvQQ>io`TSwJRsLWAbMxEG<\nz<T1&kAyM7_7KxAlauq>srJ0tM9u%z$1gm!f>!E(IF(Pt<JkH7JNRs8KZrpIAs!W%p\nzk3%+8Y5=P$t3dV0^wixlb3mjtlZ0>NqrobQZk&U9+C$nVU|OT5rl`I~P1(LS!HHPs\nzFjcaV5&fOpG1{-qSXk5dc!guE7$RE>js7_?IXOoUh(tRnk0ml}alTYfwd9uIJ?&oe\nz21KAO2;a(dpqK{`ts#Zgrn!}zd}6Xw8|yYB1ry*(RjgV;T#&3zZa|G`?+cjRH7C?E\nzQzR@bfP_Znq&zZ!vW(d*PX{WB|3zoCz((E!<?#Ovf|6p-f?6P*)QS0V+X$7-dhBc(\nz%pCA<p;^x^D<mgOvUQ2ElN?1&?@D&RKxLAlmBe%xZsJCz&Pi#R85Fv70G4hM8l2s!\nzv#>+%sl?RY!weClu`(K}SbH*+-zO&pn<0(p<&Omn9Sji+1roitp#=AqnL^pelh)MO\nzmzxi>X4u$zzXFWJpy2&G@xU063{O*@j7;gafx&KLHD~8I9l3u7k%`lrH`R$b37(C)\nzU2_sht|2kvCXC4`7@bpSSwoX8>eFFt$WT&61C^YU7PZacIk2x0Y_>5xL&S4rOigGF\nzAx~znhA}^iIt(vj@mibnUIIBa8?{ujmHGo4m@zTpk;BP>BR?g{AC@_)4w(JPClk*U\nz9+R`d9-V_g=TzT3NQkjfmFLu!I>&i+!rbcvCEj>Ex(nVQf%<|CG{>Rx6Y8iIwIj(+\nz)2yacQ5sY<(G0S%Wt|2W4vU-=b*{M7kOxJb9#P3+$E=DeX0&oYlN&sv0r}?u#hI)u\nz>~Wrjk^#ScHp_3ENh5?de~uaWV0Df^XpD0@x4?>bhn97oZ!MrYuQs(%#`*c2L305z\nzT4r9U%=n+`7hr|>_zQe|Ed8`te5}KmZW?7IoDm#E9_1W1-3yb^y>;18XPTy?(0~Zd\nzju+ANVg~-K;OO$)$;G}5EVB%{*|Esr$hsuRB$zP=Rr}MUF_241oB@%JnPj(kM-6*q\nz)&W(I=jmhX@no8>qT^Ybh<`x?&q57afEY?r3stN=^Mp$Fw@6WMmS&z;o1FUP0f>es\nzEbZ*ph$QeYiE4iI_R7PRIQKqWxqJd%T)%w6;Rzb+_$qyP!YvblxMkuqlLYb1q=lyg\nzvGDZ8r!#_iQSq_30dsil;?r?ocZPY2RPP#lc&uGmr5~E`!UQ!8T-Huh!z@~1&>ynz\nzoIu%B3H?4laqT4feP+_))A4J>)Hja1WgL|r_v<({UVl7k$z(NNs{Px9_dLEtkFjp)\nzwG$tmnB>QEReJ5DXC?(;CYkhPJnGSj&rQT@4V0z78+Y0GAU!kvZruFwP|y7FmyK8B\nzMEJ|bFALJ?C6m`r4wi!`HBmq=8($Su?$yZ)Pme42(d2JpSh2DWPq;RwUC&I~7vG3@\nzlvYsbqSMq^OWAtsX&;=XMq%4Ue{k9_r>PO7i1m|Sjj0Hzzt%vpsx3Xg_LACA!IIiv\nzr|OyO=T+&iQ@=~qGbr_4>i4NpV*rz@K%_=71+0RyL;T`f>LO%rtR2_jTjNlmdZzX#\nz@l=0{LxJkwweLuc<Fzz376qzpsqe;9y;K8bnt32}WdfRcWx{<4&K$JuzJv!8oC}b6\nzFyY&TXe0H3(4qviZINI{im?KFT>{?ObDdx-JQF6~k~bWA%M;WHy*%L|VmBOvBjF1|\nzd?96qiy0ef4idlPDPvpuVCdtJeL<L1Ow5C7LGD8dpT?l10v2p@`rp#g<iDkVnvPEU\nzG<`*ebnuFdRT<L3t1@oOkhX*Q1L^Ok2brU3FU6ri^;7!ldT~_O)Qd%d>Y;k?#8bTx\nzhXU2N^;Xo6<8?*-SQMx>*MBpf>Zv#ss6MNIU4uAYzs8|JwYI?v@l+4Tp+NOPgGCu}\nzyuPV{GCeszZA}`Kye4gH8kD>>?Yp|7<nQW!UpHV@^V3$R!K_xNG1fDy`Du5i!L05S\nztT8J+KW%v$jAOZA*>Lotv`uMoBCU)=LGTySzKo~ZABO_f6?N9viQ{#1912uV)j1eX\nz^+p^DRKM1#svF1a+PbkQP(56CUp&>$8YrXCT|GYQ0fm0nV}EZbbbs%Udb1k!N4+=p\nzfuHlK7L-As3(D4&K~?L@HueFPQ7e(?T|JOfft+`GV-UV0Y$~dR4LM1s`LPE||JY+=\nz9|y1F;(3O1EPZ|1d%bANdau`qy)Z|8*z1d4m>s|9wWBv-Kk9vVA8#Vl>reXUNg%ng\nzPgNgGg7hK3j*p@#2GzV+wzrH*?JZk;k{YXbfu6vBp0t#BF70&#)o??vs$T4vs(NjZ\nzsuuSKF>&>3viSe)#<C-sjA*~0ysFZ_^g=<|)z{xpjpIN9)Ho95mY&b_jO(t4dp;F|\nzLU-NLdqeLys>}K;?-PgG(EI7$s*>E&q28CpWpcye8rv@_L|-l{yru(MdQFGr9i%Up\nzclcLFBO`=5(Ehjf=*!>QuPQ{3tt$Li$GE;c(Eg|P$oZ-LUpl}f{vvG9m(0d938|9V\nzfzNR8dAkq_e7o@LBCvx${<>&KF%Ub7za;)ZeA)4*jzIj>kt+;1XuYCve<Atu4$pVM\nz4;LJvKO*uG)VZdAsYWKH-rQgKMIoY?<sE)0Ch(Wy`5m3ae^=@G9S?LQ#DR_<34+*o\nzJ*xlO;e`(9{Es?*+0obzGku%t9|mUkQ||p8zAiF?W6JkF`XQ7h&M$PhwFpw~K#lkz\nzRvvri^+Jbz9U$0OL^U2%-xuTO`{JLAB`n%e{8@2a$L@_op@*q;c1e{)NDme5BYEa`\nzTnqI@Q2{QT7l4nC2-=+A@pj^AQb7(!M(r#5v<U6sK<ewFtAZ`jw-rAego$ZQ6sZUq\nzR~6q3edwEuR|Jdbhl?L6Mh84n{5WX~v+dfBZ+486>Zuwi!}CC!JKMte?`(TTdsyui\nz?U%F{<6qMLJs^aL>ORosk+!J&k+zH5V~{Ksx{+0y>HOn4pRxj!TiT%yx3pVB95D{o\nzwBOqvh`nIU2ytZMEpBPIr5#zxmUg!lz&vg%*jeCAN7%EoU^l@_+OKKPF{2TBOS>0|\nz_r7*_7vSgaf+q`{xpPPskc}5Tf6?x`0^&$GvNR5)2?-xMhq06(dGAJL9MVh5IHe~G\nzb`(IVJ1BD;oTPrb?bmJL4WQmN?RU11Q|}`+P)5?tefIQ$diV6%&=2a}&~HmWQSX+1\nz-wX<<*Qfre50v~<pMUg)>HeedzH(4Q$@|K`DhJ}L@|On*;^jea3<BbfLEi{M%2R7L\nz_W=udp+4*TL2>J)LTH~Wlo`b*Hq^sG{dHe>;IE}ZIGugvKa~UVlT--A%Y)t?1jO4?\nzp?D!1YLUsq=cqsH^L<}Z`}cjX><0n2^!vvE0{=1K>jCU&ZZ2O_4z;c+-$xDFSN_RB\nz%Kl{FHv>8Qn}MsTU8_+W;rF9D{4#s}X1_1`q3BQLiw24p@*Nxm|GqD>xYBW`^l>75\nzydUb2HsFU?QAd)F9_#;7e`5bq|KIw96>!{+0Df<O_~yO+zv}Ny!({ap(a~ml^rP?W\nzyQXh=s#Vx3{O^XaZ3vLGZ0YQffw%PA+&>8KE8j3M2vY-tFi97HO+73STJlo=n@L+6\nz27WToxK{mTzw0166!qjFZUMKQd>`E456E+-YCjF*b_jcQe<z$><)?|l;Jp>?l7VZW\nzTfJuBhJlGQtx&T=cBmNz3wjAKJhG6wV<5A^K%g{g_fq3olOnsmssG0QF#L`EH}`ku\nzLWlbYeK82|7lXbY1oQkF?IkoT9<-bL+g(g|cQM_)uKYRbKDG#o3Lpic0t1ip0`Tz?\nzq1-KG3*bnpSPn-*Jy-r#xp>xn<%i2<hJosL#23B428u<Zik2ong{^4)RPy5~aG#H-\nzJd+}R;F*+XQ-FUq<$K^gYQMlp6nHWPUH_yMfGgkvBc(uKnq~eKAZNxH?@U+0bf^hI\nzyFXfRS`A^y{+~*Iq!zr=%eB_0;D<^O_Suxz02*09^KvaXlDBJZOTiDz8TBH%y4L1e\nzFqqA?o~Z@D^=!&ZDP*oG@1{UqX!YeOD^udsdrb`#=u9O(cfB%YlVR~%%IEPc_SHa%\nzu=+sBZzWLXZzT_PgOVTW_DDBT@*~~01L3vkK*>)f<YY@0b;BTEggo}CCL7WmpqvWi\nzJkSklc|h1erOd`t4AcEk0uDcvZ0&|F+A4JLl}v|S4@}tIs*&ZT$dh@<QGV)F8iZGM\nz+tQ7)F_fyi-QSH&EdHabGpaMuy6Vh#GM!})%+v2=ens$CnN?W~S7qIk1^Aw<%>r-E\nzdWGOuvOaG_`SJV!3(JvUxjPf{=x%UkRe<#;nNZOuU=2Jo9?6UWG24;M*0_yW&cd_;\nzOy9_aTHX+*P~SV5-)2Is-xAZY!n8t|juoaA!Zd2t9%Hb)F%z1;G4qv77~w0z5}JO8\nzc#RNV!-dxf;Wb=%nI+VV8E<96m%Nktc_T9ic&zDHzxc=5M@JR&sm`Pk^iJkg4e7TE\nzJwU&oWIf!7ejjeMs}U?}Z==r%#OW@V`7nd>HfKFfv@iyP)YEoag65QDe3<bwQ&X1^\nzHHVah)YA@tn$VmQ>Yp>NXL%kMIfR;!&a{jwO;}1`rJ%QEZp(}tsJCWSWd%_@b6(YO\nzb;AG>O8z8<2(rJD^<fMO7JqNU*Mp^~g-^zznEU)jOIS~yf<S0#Lc)v*hbL^KAALYA\nzw2`sU#`SRQY1oh0X0+Qo2*1PL2Yi&?LV<tdzKZ_0`l}72`KuIwOMQe2jFbWa-!{L~\nz?VZ5q_D=h|QvA^M{jS3Q{jPgUc=jOSI=$KnMPKc-w*;?iof4>xl9FA4>}yVdh}WF(\nzP*?m5#VPtB;e|2re%ERg1gg5^trC#DRkF7PwFI{AgvW63*w+=qW}g&=?Xws%R)nU~\nzh_O_}5abwxTw#zubo!}NG;H|^awjc2bh-&!;FBa0g6O|=zT*V4%R5f^stdIBRhPeX\nzb*5t;f4}QTlK3Y?M@){$_>Ru+b%v(Nca`iY377||;QksY(hPm{0sBS=3ck_V>WF5y\nzIy(rl!`bKHzvAw5_J<fR<bg6Hy)x*$t<Fmhdf+80bFx<^u*KrlQ{k0?*0(yZI`BlV\nzI&X)d(ziog4|GmOC?9=|1KEzVj4WZ^aej74VLv+`Y1qq0`X8DDpTqj;kY_GGJBKx9\nzrmI|_{P~EH<Mmzc{VpcY`zdd{Cx<2MM(8KpB_ZOzBy?*CRJVpeWt`h0eT{~w*Pu$g\nzMFu7HDkO2CUt3`Mpo^N=)A$ttHQvi~E`=9KAi_<k-AnPi;lb!Z_X(HWj7fq3sXgv5\nz#FIWq?|0QHdOuM3*N!sB=uh3xsU@Ei9Sj6<V(2Dnlb4e1CoXSA&}k9b-PIZS0P@?_\nz=yNLx9h}qvEE^CdIz6K;fVM;#=xJ>=fEt(teGHNcAqfs9kPH_Rj3AH<7ZR*zq92{`\nz`}KKNq7#l?-=Rh?H%6mgZv1gRPNwGSkMqBwMt+mOuMNS`N`E({4>fwTF?8@|;}3H%\nz7C+3nHWzk#ZSLE-fZopiAXl{VLGHokz#nY>U31{SYrd@oplvN)%megd-pZDMR<?Y-\nzC7{<^ew+`8r5OQfs#^i7ZuNXC<UQZ&i`Ia?Xnk!PK-ad}&<4<kHv0e_QAiQ40>WLF\nz4a)1Xx3z#c=z(o5J|O`<X|W<t5G(Q^%2<f<alRn9{tDE;p^YH88j6>^kFIL`L}PcR\nz)d6d)CmKTu!%z?D@{rNxFr&*uqD#H0@dHHkKx0zy;Ug(n?`-^WV;V}=W$(+yVB81&\nzp~MHdhnfRot)0q310qrJ^G*KKt?=`FE9im^pGUkWWAs;llCzk)<b&M9^m90Oelzx&\nz^P9a-J@P(v%y_ASdgLbRikqlM#!HWwt}uOoLz&i#+aQnoz*m0El3V{kwm{N<Mn9kB\nzK0`IUnD<p4e!j~4Ezd5h0`Cu65)F0wc<Jr&(#?i94NcGS2U<hC?G9Dk9Qr++yPz2<\nzZb36x)+p2h$wx7FrXu#Eg#9S6hv=h3bebA`_A%m9W!wZ_{C|*pUo%eJ)BL{XiL<Or\nztx%(~EF6M0f26rP%cA5n&2Md?DpB>GJf_@3O@v6l<z3Md_}5!j=QF-K|Gs>{_vOEq\nz5BKy<{*A2wJ>Gg(Yy9kL{Y7hba3oc<xsp19G*2~$QY%pBKcvoo<o%Ebb^btAR-nrJ\nzq)MuU>wdiTr>!~hDJr7nv8hDg*X$k|pReWf;CsH+<224>fW;Aw5F#=J5SdZvTY!;S\nzzu4^CW)S4H{J-Vn=Wk%EFR-$4klpIlRzSSk>f=@r@Z(ljqq+0vp{CVs$b&;1eNS_U\nzQmH>6QD}1<sFf`@w+zhPY<vNjNWN&juuTw!I~^8=(S~g50vhM|mAQtH8t=CeG^bFD\nz{)v16p*?^KAa2-@{S17Eq;_OG(|6JCwP0y0n^WvBX(B_N8{lN9P8y%|OCH3qs%~|E\nzE7=EOQq)O)X@q#A5t@C_2>7$@<j?Ssics;lezM6MO^DqOO>SsPzc(~}rzu9vJ54`o\nz>dZr1wzb&Pf)jhlwT%~Mn5&tIzNN|9Ch+YW+C16@KaaL~vW-0*w;f2`lx3GyakcpM\nzYefxUJ!clN-qnH=yTIC+b7mDYCyWtLuWI_wrid%ptB#YZ$9Z{oP~IrX8zp%X`RYfT\nz?riE#v!+_PK(EV_WU$SfhkrC2;(j#zr%}+-PosVvrRV$=d#S&U`fU`PGA?2KHtPM+\nz0pG7T5C3qu8mT`V{_`l*`LobrQf4|H>)@|{J$d0Mjc1;#^ukfsje;FsH)@F>s6&4}\nzdC91tCCM^MZyNOgXttx!1EZd#LQjs`E(j{L3BVBwZ6Eb2Xf~tJtE2W(p}nK_34#i3\nz2M{dewOtqXM6-LYP#A+N)Ji37U8&v&!lSWt;SjWR$Z`eMEEgg)l!;96RX7C|PI;e-\nz2jdK&hwCXfDa;x-NjbzDT+R#opdt`e>M6G>^y;lbRB4F(jy?Na4CHffP*60N_SQ3c\nzet1n7@~;X1HSEloQKkPH{veT?;LDB*=7(2@A^+;|_C&ODd*TivK?8Oq?jyv$L@pBu\nzp}5S(Fq*V6{B$DZdRoe0Hs6uBpAh?{OrWh?=Eg8B&%;k7qQOr{88moD;vPcmkuqM8\nzB{KlN^_K8cVH#&og<lUt!>@<m38SI!gg*#7GqKe8KD<5===F)46M^2G_)sFD(Lk~m\nz`tup=MoF53s3;V6FG>*K&5#5h4>dg%-W@i(qt%J`CfZ$zjs7O_#-z~C^hT8cNUs(3\nz1|5hjU7hqu5;XEi(o0ED+Dl1qC2?o#x00?*2I9)(za+=@K9_ke2^x8h%8c{MKqGG@\nzU6l;PRZ<2TF@|5A^dtqHPZB*=fk_LKv7mz7)k%Lz4*g6IbBRdEI+TPKeg{1H@*{lo\nz{K#sGs#izukAT<xk%tL-II=au_Mx{%-XX+0k^Kg-Kk^$Pev4Gm1&pfnHFO<gP5Rn&\nzrjMxsyzhuW&O3w~OlfQ6Z-n@pa06n0<QqbK6XEhPwnePKVOa#)To&09foW_JMzF7~\nzk+%u)wlD%>f8_RbAZ`~ycy*>%M%IG}iUFgQUNeCrT>(|2Zi9_u1XBKh{&!mr@3B8}\nzL;P)%?;{K1Q8z$Fds(H&_J;J|*QB05_`bo=@qL4D9tMryJgj<{bWQcJyNCN*7NDvg\nz3{6%Ker_<C(%`#?gDRj<5Fn=lIaR|j8C3}zXpY&8H_`-uP+}$VS~+;*5U6(JkUc}e\nz5@xw)=vPC5_-g1cxaL8KUn(ve4#Z`{ub@hSxMKJULaZ3hQg}mItk=@};u%&CyTWj~\nzy29h>v$#Wel4Q&P#rF(F3#br&s04nl7=FiaSqKM+MhVd<A;Nhj5qVA#7Vyf@Jwqh`\nz9QNHXasgLYJXk@$FM}z5SsQxAkS#+nh^`pEYPdIuq>i5k-%J@dLory+&gIHDK{9cI\nzDx?H4LNKDM!HW2A8S=_d_^JmhUapY2k}|gpIXDC!;%mwqD|wh(Y<>OE>xZ&m0?oZc\nzcMJ{8PfQhnshS5Xp05a^;1~7`Jv>y-A&|d)*oVW6ln=6$;v5MbD8{M?z{f`f_E%SI\nz5w0d3<Z)!whr<pJlk<}A(4`_Ldf=;=R-ov+aVRwGis82nrvmcP2S$H28YAVa(GOKZ\nzyAM@9TnTeLna{1}SKeExlXluZK;4V2bi$(x=xJ~<&)6HMi;E2JxSzG?Fz<G%e$(0Q\nz=y#ki96cXfDf+P98N$^`_jZ>zRB%Es$xSXUGr4cN*arE+)jwdr!_tdG*MxY(!@@nd\nz<q7)cggbE4E@4B0z9(T*g1$dtJ9b;P<6A$AJ8_oY8Ga><nQwO(icY*SQCBCfNyL<Q\nzZz8f1UrW@x691OSvo1OvzF!|ox-8k!cP4L0);p6Qtfe2R^=vJi;H*i}>r?Jc;R70z\nz{Y$OOQuqW0zB0w+TYN^N=}^VOZLO=*^fkD~rEkI|E%K=ABYIP0a|CXAdql5DUzyJC\nz7dv%ugL-B9>U2vlNcWQuq(7RjA4}hnuAjpVJY3$)cqBtVo$*`-Hq_t9(7Q7}%)p-f\nz_AE>D4s|s)r?H=f?Pt9`YZsF1GVjUcoo7owk@<2a&L0kB>MOIZ&eFGLRU@A^oAs`&\nzLr5OV`ZWtX!HXN|1K0<qp#G|Cy}iYu7P>lbS02aJ6lHH{Vv;MGa{kLL^e)8gOoYR3\nz#KK6f%LD7|>$0(O*^;Y2&E4KYA8JvZr+3l5#5ehi+whvqr@=zzshsC>n8v~i|5{VV\nzkXN_TFJY}~$}Deob2I&E%eDD>6IP(S7{;>mi`Et|{`7-b$?9FSP<sgrJ5z=hUcB0}\nzaL3@Iw))eyU$@02gLWI*>5c8Sw$m@RyQP3{MChgM*R{tg43`*8a$kp~MS5rPFU7da\nzi0dx6n6kN}rGLZ~6J1?=cd_13d|$DC05?qFsN&$OikBAa<+w?r?<;<w7<WjX0MQ+t\nzU+S!PV>_4jf2&X6&0l>88@)Kn>%RR&UESk>9vERguIZtd^tb`Z17%<I)Q5U4?Tr)8\nzo;UU6n_F@-OJ9aNVOXj4eyF#8r1uUGT;Knu{x~w;Jka6;Up|qybQLZH@WHPB5oiD4\nzSpIoAE;<}8r&;CjP`F^sALMm$QDex)A$seO-9z+2cvSY3;y+FDz|hZ!Vh%ez6ax&t\nzPcMb<Cy#RdaLik`fx$md{`zDrJ$}WZ0Tv@L_)&L^!m45u4*9UOK&esBkHR8iACf<g\nzT`*2xF>dWROTRvD_c;CDxG%=xa`t!Q^sl&~P4~2a9jECMwq829YO-F7>(@|0G)ecY\nz^|O;-nyl%DHEeytj}vtD#OEjK&69Rcl6&GN`6I4Y>z%kyZQ;K3p^5rOT$+YnCa;~0\nz8`95C)-T~sG~JB$k{{%Yr&@>T1{W}X!4q=$p-@K<O%vl>+Yv!qHMLXwA2CZfnPqJp\nz1yv&-PO*pO>+ZZV=P#K`i6~0KDgL5811l7pOVBYs{B&omCqG7s|G%@jSu&&etm8l*\nzZ*c~<Qb=57CHln9;||_a;o6~rt_sz`Z;yINIJ1?TcoL!mT}fZ%_)<IRYXN;#f+EOb\nz_Z(tTyUJD5cb0?2w{Gnai0n}Jbk_~3Qr7|ZB(7yFiY^S7XBQL{xCx<&ZZfb*yFoC>\nz)x<g!9_@CZ#3QcybI5s2PjT&tTQAhmRnA3~ZapV4+fP-x&iom`o#-}kW)-;3c(>gE\nzSD)h6?dH~d!Bv~5xb^0`s>n^B?ACjW8ui)S)u=B0Ojq@H-G8|11d=u4rn6*YSXMA^\nzUv9UlTZ$}aWNE0f)J=90(H7^T($Fbxnu5fcZkls(IC}x4cIt0*Q&5~5m>H_)*6&~L\nzW>&lPOMvO&W`!bd+Gx(q0#Rx?k{7zENG1$)QwMNH2#^k)0c9xY>I@b}hsL-Oz@!z)\nzALHlOXZkTvi7Iy+K~s?P6y>H-N-;>aY;v<fm%0<lh140^b`zb;=PhuPoRhX`^p*1n\nziaVk1kqG{?yW7I~X)bJ_0d(P%AyF?v-L;f-&>e<=&Megqs&ugUb?tPwIWoZo?ca3~\nz#E-CaI&=|Q?DQ&kwbOky)Z+An-qL|XnN!@X`CxZqsFHG(oA2~m4MOH0fnxO_h>_$x\nzG`Adlwey@R4|NA79T;Dp8I%=ro>$7vAuSAYb4uK_ZQar7P=6XLW?<+WlDfV^e}5Em\nz9@a~#_RzpcIuNyCB%RU2v&!A%v)!zLE}q_UOWg#rw=wip%3p34{al9T4bmFq>t>;;\nz>8Kng^iF~TF3DLliv(4GHySwGz%%0Df&zmmI0y=;Y!9<g&RWCP!z7`iO1oKI!v_Nh\nzDy+UZT;SRbDGBnVa6{LnejDR9M!THy88guCizs&nY{02iKnh9>7ibr<y#duZ>C}^8\nznTAKjD}hdO-kn=s2?Pi?L6fz>r*X)cSxL6-kRf8YR)%(l>roaL*vp*~a_&~E-Dc%(\nzgHqBr*RcCoHLQ=;FuQ<iu$|gd$S1gJP&r(H6FQw4y&PnuoGoew*Zj&{(drf$AhjvU\nzd1Y>a4q=cuyR0w-?M%s8;iaxK98H26Mxp!br6ZN%CR|CKo4T=did$;|)RA89rZ}^9\nzx=H134(ael8e22STBf1p5jRX44NWj3ZXlUG8oCg@o>5R<0K3yOfPpQgQ$ti}y-t8Y\nzug?}kxX(pb+~=w`I_yTsenQSKbHa69o6_m@g)zl=8l@_{l)qO~M=;j8*1<><0)w)f\nzrHgH{Aj?Cjz?n|tC#8Iw+c1RF9PYCV-IgH8q$XXM&ixspk+m#*1_X2=_iXBa?L6X6\nz0irPE?3fKFolb@kaoujf^mXkFYVJW;D&#JSF`Mu7YBu1jFJZGmz2AWyYrsjHfqtn(\nzC0RNl<UBoFO~I3{Pq<3zc_LWP^gunOG!k6rF_(wbdv>@~6pPC1xV3Xg$Hc*T56*=I\nzC3{Ia!*zo^!ekk?vnq@!<3gr>_t@085%o-_e&^WKRZ;4_$ELnLjMjt;UAsyA^!U&`\nzGsAMlcVHZwMxh1D*_$u}cpCiK<lq$h2Xvfs_pDOrY^3R%(#nDb++w&7w-L;?JQPl6\nzhSgDqZqkLKC9jmx(!K=0-K&GtN7m{7DD|piQ@<CbzV+DD2cpy~j!pd`QC|eJh?It$\nzN9Sy0Gg-!F0*?<*n1HE+0t+W}D!Bz`&!wc?P-!I$5vsh~RzTa%-b-bW-ffp=8$`iQ\nzP{14CX@f8{%XRuvsNghm71FKAmCS}$sm~gI`x3v)+@wvhb~vMw87{C@I2+C=4b@ZC\nz@Rl{|p5oU{{x>#+`UEg4F^0c1sv2&`XU0ZunkD}5pA5UsjWH&&S`6f$@dk2Tl-tn^\nz<nw5^Tyt#dFQe3dIX3m7DD~nX^^uM5n<(`a$EH3UrCxMw>hGh}3yw|wBlLLW0sS(^\nzyXY)*S{-!1>)bzQH+R%)&J4g|z!V>)JG&f;hY@`Mo9^5_N9;&K;e~7j&T9_YD6t?9\nzzKr6SQsiJ-dW&<?owcS|82&nG0CE<xM~o%@n;~9vJj8o2*KokeVJ^a3^03Ysn0<6P\nzIeSVt2QQ&P<8XSFE~UAF(jn)=OAZQ}rZvsc1?M>H@RY4rdJmWO@VkjJo4$BG!66Yr\nz&YnvO=$GcfhDa!9IZ`1?@tT7JvIP>5jV7HW?qpeOJ5#YRK%7^=1N64w042MUk?=nF\nzojb#cl!wMJ*{XQ5z?@_}<$Ead=W?fBd1w*I6{2ZcJAeL$f9jD;I`k*6ks)U<x02>~\nz?cB|}Gdg-ZR!38GDCCr?(8f?@=$nuVeM9nuoCWjH(LD8rv&n!cpoR`%K_Q1aGHC!I\nzo&C-NvL8f)uo281n6}yHjUi(JMJ?xDr_{|L`zf)T)kAJQH?=YJGuRMrk}xFn9@wCc\nz6?48pDdiltAd8z;<f^`I{cw(px5wC_aQ6s@Kxu_;XcXX?R0)MiW85NH)m2lpR21sx\nzIz522!_BxBl<a^2>r0B)&75tA_U>^TKt#u_A98jgEWvVs7BqI~C0hAGhz8D<i_6`P\nzr?~a{13QRAnYuJ)261c?Ug&lPeUt8PT8W#z5W)|1o25~fJ$4cOB!)Hu86FdH8?j0#\nzY^&!cw*hjHiRc!ZNbU@`4oI>odR;`;zZ$_|C>82WoWepmq2){&Dql@LJ?u;g?<PkL\nzGh2)>)-i+lkZGU{;$=p|-+JQ~>b(ZkDb9n`w+KbiRTQ71{T6JTgv7M9*>y&`4QIH{\nzjL?PQ$YVShL$sj0*@*Hux?8#7N;fpcM1vQ?$kaj-j1nQ|gSi~m5#Ute-UNQbq>EE&\nzJw`3np>NR-vaTFMy4Z#VGr~cLL4Ck6>D$7s(k-U)OXzDg8r*=Q-bi>O>B@Oz-fk-G\nz%)m;?sYSkGV1yRU_1thjH#ESlMeDC(t|&QlJFPa|h*N6@)|fMRg_pV72yq7IA^fK0\nznv12e^CIh#(QPZ;+U0JY%iZSXZtZ@Mp}oX?HsW-$_5^fVE;+z%NS?(FOqzn^a-RQN\nzEpv0hx7=;^Z?tg{_dKi*<q!Z@qd(99@O2K%ol=h0JGTRsj}|2Mb2A4+o>FGm7VWo}\nzx>*ZXyOGMJSow#paCHNeg{&9{wPEdU2uh}vLI`ajlM98~vjh!8UCAExO{Cn?jik6u\nzXkA*!Id>a^?@0LqP9vV78N$K(B;A<>yJ#4)Thfvba;9Ryv&69T`osoImW9H*-8$4S\nz=wzZ=7{OSAI-G{(2pUhPKFKO2V`W`81k5Z%*QDtDPzDGw$aLsjYGt^97GS5aLtMw<\nzQXs%y07;rUZy_c^aMg6R>&^(xbOvu@VbJebT{s!rNY<HQ{BvqqJ!0PncA7id4I>}l\nz-Kme<P<K{SQm7EI6pi!owEW7M!7J2cGyPz>N#<fqf+WwsiEMP&+||5+5w3*I7CEo8\nz$vUrC+gL$~X!$l5vsMDkjWia*SjX~(mEM=utjf6&x|g+Yn6!)D_$Snt2&1lB>9%uj\nzo(FxDy6s@#JKcIq+&Wn9HY44^1WBM$H+LDCQ!Z$*;#%Ogyv%KS`EGbx+|dBpL0)I2\nzp6b>LcPXtDXZ|QDQ=EAv2YAjG&?8!N@7&5zxb8NM<Q?$+kbuVTW7uL-&Rsfu5EZ7k\nzchgRBRlhJf+HiXw{6M6Sq6r!f87|l*Ph0}<6zL7xU%MPCy#svg^cNmgtFb!)j%#L@\nzhL)ll0>*?R;aoP$(35WB2v-+x<GIv^`PCz12V2_gu(A4Q5L3u9+FEiG;E|_6_(8BA\nzKo~Tn-GMOObXw=Ji>GnnR=P>kA&KV){rH6(2iA94p}So@6axoaMif-PFekbv^s$>Y\nz8AVS-6_w?*b+id#3C0lBpGM7dl9pD9_g3x08)@MW6+Sh40gWLv@E%!cI&WVr@{pT|\nzUnbH@Gs(FVIoJRQ*9~2aR46<S(Ckt-lxKd2xlK=S6@^ycMzA9mR4_5ML-+HpUD8Z9\nz^*TTULBOkTCx!Y)_BPYTNN|SUk}^&f?YAiBL5LSHMKtS05(lQZ4O=@QXUaAhlzNO*\nzA%R_5Xecc8U;%Wt)J;Q|oFRLLC%UQBC7aj*z*2eN>OzT|ZUgaFBDQ5Zi@3>Qn$54k\nzyan@2ajIBJESeK~8=I9XTuC8a$SL;3J7_kj{(_mAmfsJ=>y=_d6e#ryK(~ltLbBua\nzuZuAd*xs);<+ohCzzhf`d;)|C*oJ)iVu~e`93D4`PH*fj#%?<lMESsTrmtpUME-!Q\nzijUoroOi?pjNu-uPfNEH?4QAq>XUZ}e`A`r&xp4ozIkyRoe!DOi`cSEa>g%3Pv&n7\nzIX}*!U7+;v^{$%cren;~wq|$}?;=;aS>few`buC1)3zsd@51y)#hi8mpz*qg1N88~\nzO=@Y#S?efgAJ(-CXuz()PCO>Kd#F@34TMOjA$E|k-&24Yb^1=|ZWc}9?IUh8%w2Ul\nzxQ(6Jgm@8f#BDs!ZT2U(P7ffauoo-3-K}#npg{=MB5p?-;8R>@k()dZ$Ulww*lkLs\nzrUTf7Bz4_F9;U=lW}h*x<0bEN3qYblN-F~UcDFwLIHzG+qXZ2SC%ZDVjiyL!UD6gM\nzZDD&h?S!gWCOdTBBI*rSwYQtsEhvX`4LRp+1Pdr&dUysU-~=(w&le-S)~siaG`Klt\nzPr}JKjqXB>Zs%od8&@ia8JL<8(qbl}?=hvWYUhS>3<{2mdMU+ukt#588m}q-ij@?N\nz+s#-l#Ex6U=0<j$U%)74<17N(UiJ+5>+lb*Iv*^<?IVcKDR{%gULS_i7s#^X@+jxi\nzzI+|>C>QdyMj<y%j|5ZmX~CC4zu{Bd3_4-B9@;WXl#t!6KF0|VF)6g#Z9$y^pG~2I\nzjk)d&io?l|yI@BBj*Y(-C2mu!5H53Dgyy?-!1ru!9lD6y|0<Tq(thwn@7|vPV<Zbj\nz=bUM`7bP7G5IHLowrSV-=>OyEJm90OvcLZ%Ljs6KP(e`9hz(InXo8{=NPs{{Fa!nL\nzFeH;?Ak9odQ&%aXyEa_cRoA-qf_-=GWz}`<eJ$&v{#|?5wb%D|%AGkmFz@sEBs24!\nz``qW2bI&>V-1|JUoaV1cbU{yyoI;uq<;S+XOXOw-nyuqYwC;|p3u70bz>&YgUMpxV\nzrtm04Y0t-%po6&}gJ}Wc_t~af$ChC?tbO2lp^%sVK|S^;e5_z^)NJI%1p~;%5vLy)\nz<`_QW{Dn8MOcxYhN+HUhmcwa|t?j9i(C-jGp~(tILemAkD-mqRw2bT<8}f^(CIzw8\nzhy?7?NzTx+H9S%ZCao{nn_HOT?rce+rel5KH=-<I-j!c?o|ugVP?JYA6l@*aojUgh\nz?cD4v9xlgC1=}84(C<t%8`h!v<zZg3?Sg`S2yQiKSAMy<uB6gryAqv?PSw6FTwFN6\nz*Av{1vHunHJ^(o%xS)_`&#`)n_#<N6Sul8JFPdv@&*Igi@DHqMKk%UuRr}+z;t<<d\nzco$~8m#>&a6ZgE>|Dawwi>c3H%tUpp;k-WDBrmjYQE-!rN6_h8#J)vo@?s?<5x;@!\nzf<d#%U>XpI<FR7?e9TiZMOupw%cw1@V6Md+jw%=+&IDb)fCBH(wql6Ycw^=5Oi(u7\nzi|MihC<o~Ui1!4s)~BHJyN`O5g~UF8$Tr1DAFFtY%r$9`Uaafz=48H545CKfD5+5@\nzL=5fO3k5xiHCT_{sN&~v5o7%+Rj*0-4!NBH&57>kh)?WCXr5m1F;6;<A}{#%$Jk7o\nzJI5Y{)2UPEKE1F6lV3O!Ml3IO8@${hn1WY8$8AU6_=1Aow5)i8cEVW&d!is%2JADx\nzU?|J$44(HvBlIjh0@=)`X*gb&_F9LzDJK5Q3wBsku=U!4fiwk!RU5`%-@tO5k9OyZ\nzq244<YjEZ5*V0^t6na6guM2wbgR>6S)*uOhw0*ULRs}FRPGh?ZAMnc+H0naC&ATES\nz=#;|Pg>dmm7eA8e71a990#Y;oTp9cg@-wC3V_V<Fs&|)})bf~#AGZNl@=ZUYThkZh\nz9jF&O9jkx^`D@p*((QvuJ4{m@mQ1lI(Sz1fQ1o+GB13g2$V)+rx77<hL%m`)R8ZKo\nzSP{bTZ&Uwn5yPEmvDEqo{C_B#kB&tJugs&l0cF)a9(?EV6b~+3QjnJ@D7+u0Yc5`7\nz#Tpi7Qx_Ezvn~`Z2CsqEm$44O!VaI5JMa>2ZJJBdBr7AjeIdHkcYU!Ke>CO*r1=Iu\nzfOC%GHrNW<0X4)j&hA^WBYFvE9xHroJ2ofqL1UPeP?j(?CGg>?R@)ZFepd+B2R0DZ\nz8b|_wTsQ(z&=U%_M`1PVhSzO_g`nLQv5V20Jqj=3Vh-p}2DdLYRJ|^0o|m!8kc9Vo\nzkR+UcY><TaxE*7=<zX2WzGq=<S+RB|&8todzVI7-Wfj0nSOCd~g)Ptc!nhibz>g7*\nzBLVydr*u~fzePFGb|M$Atwh*_<pNh`8-g{(5ZP0A_A(WeSA4y_--(2n=wekL-dbU-\nzujr-U+j@V(^*;O92F>~t6c!zgg{RnH)Z+1#FHx63c-rnlz5gdsAew1m_%=)`D7d(w\nz?;3nDnO(BoW6%!$VqKjD!w$!?Qo+`&M==SdnIA1Ptr0EIS=e"},{"id":"502600","messageId":"xmqqed5rdw61.fsf@gitster.g","threadId":"62067","inReplyTo":"9aaf966254493678d3e25b93cb11017c814d3087.1726001961.git.gitgitgadget@gmail.com","subject":"Re: [PATCH v2 1/3] builtin: add a repository parameter for builtin functions","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2024-09-10T21:40:54Z","receivedAt":"2024-09-10T21:40:57Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"John Cai via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n\n>  git.c                              |  12 +-\n>  help.c                             |   3 +-\n>  stkOs5Qh                           | Bin 0 -> 10485768 bytes\n\nWTH is this file?\n"},{"id":"502637","messageId":"xmqqikv26oq4.fsf@gitster.g","threadId":"62067","inReplyTo":"434c8babbb140b7e66321deec0cd8e8a0d706475.1726001963.git.gitgitgadget@gmail.com","subject":"Re: [PATCH v2 2/3] builtin: remove USE_THE_REPOSITORY_VARIABLE from builtin.h","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2024-09-11T18:15:47Z","receivedAt":"2024-09-11T18:15:50Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"John Cai via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n\n> From: John Cai <johncai86@gmail.com>\n>\n> Instead of including USE_THE_REPOSITORY_VARIABLE by default on every\n> builtin, remove it from builtin.h and add it to all the builtins that\n> reference the_repository.\n>\n> Also, remove the include statement for repository.h since it gets\n> brought in through builtin.h.\n\nCan we have _all_ builtin/*.c files that include \"builtin.h\" to gain\n\"#define USE_THE_REPOSITORY_VARIABLE\" in this step to make it more\nmechanical?  That way we do not have to go through this large patch\nmanually to review it.\n\nThen another patch can immediately remove the \"#define\" (and doing\nnothing else) from some of the files in builtin/*.c with its commit\nmessage saying \"These do not need implicit or explicit accesses to\nthe_repository as-is\", which would make it trivially reviewable,\nbecause such a claim in its commit message can trivially be verified\nby simply compiling these files.\n\nAfter that, manual work to remove implicit or explicit accesses to\nthe_repository, which would remove the \"#define\" that becomes\nunnecessary, one-patch-per-file can build on top.  Each of them\nwould be reviewable again.\n\n> The next step will be to migrate each builtin\n> from having to use the_repository.\n\nI am not sure what this \"to migrate\" refers to.  Is it referring\nexactly the same thing as what I called \"manual work\" above?\n\nThanks.\n"},{"id":"502638","messageId":"xmqqed5q6od2.fsf@gitster.g","threadId":"62067","inReplyTo":"6956d3fe8971475dde87909bb6b9760be6964488.1726001963.git.gitgitgadget@gmail.com","subject":"Re: [PATCH v2 3/3] add: pass in repo variable instead of global the_repository","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2024-09-11T18:23:37Z","receivedAt":"2024-09-11T18:23:41Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"John Cai via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n\n> From: John Cai <johncai86@gmail.com>\n>\n> With the repository variable available in the builtin function as an\n> argument, pass this down into helper functions instead of using the\n> global the_repository.\n\nNicely done.\n\n"},{"id":"502641","messageId":"xmqqfrq56gqm.fsf@gitster.g","threadId":"62067","inReplyTo":"xmqqed5rdw61.fsf@gitster.g","subject":"Re: [PATCH v2 1/3] builtin: add a repository parameter for builtin functions","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2024-09-11T21:08:17Z","receivedAt":"2024-09-11T21:08:21Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Junio C Hamano <gitster@pobox.com> writes:\n\n> \"John Cai via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n>\n>>  git.c                              |  12 +-\n>>  help.c                             |   3 +-\n>>  stkOs5Qh                           | Bin 0 -> 10485768 bytes\n>\n> WTH is this file?\n\nIt turns out to be an \"ar\" archive full of *.o files.  Perhaps\ncreation of libgit.a was interrupted, then later somebody said\n\"git add .\", and the file somehow ended up as a part of Git.\n\nI've applied the series after removing the cruft.\n\nThe overall thrust to pass the repository found by the setup step to\nbuiltins as a parameter is a very good one, as most of the Git\ncommands are designed to work in a repository.\n\nWith this, can commands that are marked with RUN_SETUP_GENTLY rely\non the NULL-ness of repo parameter to decide if they are in a\nrepository or running outside a repository?\n\nThe \"nongit?\" status returned from setup_git_directory_gently() call\nmade by git.c:run_builtin() is thrown away and not passed to the\nbuiltin functions at all, so some of them currently may be doing\nanother discovery themselves, and if we can replace such a wasteful\nsetup_git_directory_gently() call, it would be nice, and passing the\ndiscovered repository instance to builtin commands is a good first\nstep to go there.\n\nThanks.\n"},{"id":"502659","messageId":"ZuK4RXMfherFBIxP@pks.im","threadId":"62067","inReplyTo":"xmqqfrq56gqm.fsf@gitster.g","subject":"Re: [PATCH v2 1/3] builtin: add a repository parameter for builtin functions","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2024-09-12T09:45:47Z","receivedAt":"2024-09-12T09:45:52Z","isPatch":true,"sender":{"key":"ps@pks.im","avatar":"https://avatars.githubusercontent.com/u/4056630?v=4"},"body":"On Wed, Sep 11, 2024 at 02:08:17PM -0700, Junio C Hamano wrote:\n> Junio C Hamano <gitster@pobox.com> writes:\n> \n> > \"John Cai via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n> >\n> >>  git.c                              |  12 +-\n> >>  help.c                             |   3 +-\n> >>  stkOs5Qh                           | Bin 0 -> 10485768 bytes\n> >\n> > WTH is this file?\n> \n> It turns out to be an \"ar\" archive full of *.o files.  Perhaps\n> creation of libgit.a was interrupted, then later somebody said\n> \"git add .\", and the file somehow ended up as a part of Git.\n> \n> I've applied the series after removing the cruft.\n\nI've noticed that something leaves behind this garbage from time to\ntime. It's a shame that its name is just random gibberish, because that\nmakes it impossible to set up a gitignore rule for it.\n\n> The overall thrust to pass the repository found by the setup step to\n> builtins as a parameter is a very good one, as most of the Git\n> commands are designed to work in a repository.\n\nYup, that's the direction we want to move into. We're basically trying\nto approach getting rid of `the_repository` both bottom-up and top-down\nnow. My changes are bottom up, libifying the low-level subsystems as we\ngo. And this here is the first change going top-down, getting rid of the\nglobal dependency in our builtins. Eventually the plan is to meet in the\nmiddle.\n\nPatrick\n"},{"id":"502671","messageId":"20240912104319.GA593177@coredump.intra.peff.net","threadId":"62067","inReplyTo":"ZuK4RXMfherFBIxP@pks.im","subject":"Re: [PATCH v2 1/3] builtin: add a repository parameter for builtin functions","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2024-09-12T10:43:19Z","receivedAt":"2024-09-12T10:43:22Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Thu, Sep 12, 2024 at 11:45:47AM +0200, Patrick Steinhardt wrote:\n\n> > It turns out to be an \"ar\" archive full of *.o files.  Perhaps\n> > creation of libgit.a was interrupted, then later somebody said\n> > \"git add .\", and the file somehow ended up as a part of Git.\n> > \n> > I've applied the series after removing the cruft.\n> \n> I've noticed that something leaves behind this garbage from time to\n> time. It's a shame that its name is just random gibberish, because that\n> makes it impossible to set up a gitignore rule for it.\n\nI've seen it once or twice, too. It's always st[A-Za-z0-9]{6}, at least\non my system. Doing this:\n\ndiff --git a/Makefile b/Makefile\nindex 91f65d7dc5..b58312edab 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -2860,7 +2860,7 @@ scalar$X: scalar.o GIT-LDFLAGS $(GITLIBS)\n \t\t$(filter %.o,$^) $(LIBS)\n \n $(LIB_FILE): $(LIB_OBJS)\n-\t$(QUIET_AR)$(RM) $@ && $(AR) $(ARFLAGS) $@ $^\n+\t$(QUIET_AR)$(RM) $@ && ($(AR) $(ARFLAGS) $@ $^ & sleep 0.01; kill $$!) && false\n \n $(XDIFF_LIB): $(XDIFF_OBJS)\n \t$(QUIET_AR)$(RM) $@ && $(AR) $(ARFLAGS) $@ $^\n\nand then running \"make\" several times got me:\n\n  Untracked files:\n  \tst5AOnzl\n  \tst8gTTvD\n  \tstJABM4u\n  \tstKA7riS\n  \tstLZ4yDr\n  \tstMWJCVY\n  \tstjYXpN0\n  \tstwcX3kZ\n\nI don't think we'd want to put anything in the tracked .gitignore, since\nit involves system-specific details. But I think that:\n\n  /st[0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z]\n\nin your .git/info/excludes (or user-level gitignore) would work if you\nwant, and is probably not too likely to hit false positives (since it\nlacks an extension).\n\nI do feel like I have only started seeing it in the last month or so. I\nwonder if a new version of binutils changed behavior or something.\n\n-Peff\n"},{"id":"502672","messageId":"20240912105040.GA603079@coredump.intra.peff.net","threadId":"62067","inReplyTo":"20240912104319.GA593177@coredump.intra.peff.net","subject":"Re: [PATCH v2 1/3] builtin: add a repository parameter for builtin functions","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2024-09-12T10:50:40Z","receivedAt":"2024-09-12T10:50:42Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Thu, Sep 12, 2024 at 06:43:20AM -0400, Jeff King wrote:\n\n> I do feel like I have only started seeing it in the last month or so. I\n> wonder if a new version of binutils changed behavior or something.\n\nSince I had that Makefile reproduction, I ran it against an older\nversion of binutils. And yeah, it produces the same outcome. So it is\nprobably just some kind of Baader-Meinhof phenomenon.\n\n-Peff\n"},{"id":"502673","messageId":"ZuLItS8eruz2b_D7@pks.im","threadId":"62067","inReplyTo":"20240912105040.GA603079@coredump.intra.peff.net","subject":"Re: [PATCH v2 1/3] builtin: add a repository parameter for builtin functions","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2024-09-12T10:55:49Z","receivedAt":"2024-09-12T10:55:55Z","isPatch":true,"sender":{"key":"ps@pks.im","avatar":"https://avatars.githubusercontent.com/u/4056630?v=4"},"body":"On Thu, Sep 12, 2024 at 06:50:40AM -0400, Jeff King wrote:\n> On Thu, Sep 12, 2024 at 06:43:20AM -0400, Jeff King wrote:\n> \n> > I do feel like I have only started seeing it in the last month or so. I\n> > wonder if a new version of binutils changed behavior or something.\n> \n> Since I had that Makefile reproduction, I ran it against an older\n> version of binutils. And yeah, it produces the same outcome. So it is\n> probably just some kind of Baader-Meinhof phenomenon.\n\nI was also reading through recent changes in binutils and couldn't spot\nanything. But in any case, I also had the feeling that this only started\nto pop up recently. Maybe it's not a change in binutils, but in our own\nbuild instructions. I couldn't find any smoking guns there either,\nthough.\n\nPatrick\n"},{"id":"502769","messageId":"CAOCgCUJO-W3KGqp99rQknxmHVBS9+5F5fEZOU4aQT_0vmhON6Q@mail.gmail.com","threadId":"62067","inReplyTo":"ZuLItS8eruz2b_D7@pks.im","subject":"Re: [PATCH v2 1/3] builtin: add a repository parameter for builtin functions","fromName":"John Cai","fromEmail":"johncai86@gmail.com","sentAt":"2024-09-13T17:54:31Z","receivedAt":"2024-09-13T17:54:43Z","isPatch":true,"sender":{"key":"johncai86@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2354211?v=4"},"body":"On Thu, Sep 12, 2024 at 6:55 AM Patrick Steinhardt <ps@pks.im> wrote:\n>\n> On Thu, Sep 12, 2024 at 06:50:40AM -0400, Jeff King wrote:\n> > On Thu, Sep 12, 2024 at 06:43:20AM -0400, Jeff King wrote:\n> >\n> > > I do feel like I have only started seeing it in the last month or so. I\n> > > wonder if a new version of binutils changed behavior or something.\n> >\n> > Since I had that Makefile reproduction, I ran it against an older\n> > version of binutils. And yeah, it produces the same outcome. So it is\n> > probably just some kind of Baader-Meinhof phenomenon.\n>\n> I was also reading through recent changes in binutils and couldn't spot\n> anything. But in any case, I also had the feeling that this only started\n> to pop up recently. Maybe it's not a change in binutils, but in our own\n> build instructions. I couldn't find any smoking guns there either,\n> though.\n\nSorry everyone. I totally missed that the garbage file got checked in\naccidentally. my apologies.\n\n>\n> Patrick\n"},{"id":"502770","messageId":"CAOCgCU+Fh_mpRsx_wT72j0_m2Pk4Zuri+zfu8W2qeQ1bUZjd8A@mail.gmail.com","threadId":"62067","inReplyTo":"xmqqikv26oq4.fsf@gitster.g","subject":"Re: [PATCH v2 2/3] builtin: remove USE_THE_REPOSITORY_VARIABLE from builtin.h","fromName":"John Cai","fromEmail":"johncai86@gmail.com","sentAt":"2024-09-13T18:00:31Z","receivedAt":"2024-09-13T18:00:42Z","isPatch":true,"sender":{"key":"johncai86@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2354211?v=4"},"body":"On Wed, Sep 11, 2024 at 2:15 PM Junio C Hamano <gitster@pobox.com> wrote:\n>\n> \"John Cai via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n>\n> > From: John Cai <johncai86@gmail.com>\n> >\n> > Instead of including USE_THE_REPOSITORY_VARIABLE by default on every\n> > builtin, remove it from builtin.h and add it to all the builtins that\n> > reference the_repository.\n> >\n> > Also, remove the include statement for repository.h since it gets\n> > brought in through builtin.h.\n>\n> Can we have _all_ builtin/*.c files that include \"builtin.h\" to gain\n> \"#define USE_THE_REPOSITORY_VARIABLE\" in this step to make it more\n> mechanical?  That way we do not have to go through this large patch\n> manually to review it.\n>\n> Then another patch can immediately remove the \"#define\" (and doing\n> nothing else) from some of the files in builtin/*.c with its commit\n> message saying \"These do not need implicit or explicit accesses to\n> the_repository as-is\", which would make it trivially reviewable,\n> because such a claim in its commit message can trivially be verified\n> by simply compiling these files.\n>\n> After that, manual work to remove implicit or explicit accesses to\n> the_repository, which would remove the \"#define\" that becomes\n> unnecessary, one-patch-per-file can build on top.  Each of them\n> would be reviewable again.\n\nOkay I see what you mean. Yeah I can do that.\n\n>\n> > The next step will be to migrate each builtin\n> > from having to use the_repository.\n>\n> I am not sure what this \"to migrate\" refers to.  Is it referring\n> exactly the same thing as what I called \"manual work\" above?\n\nYes, by migrate I meant the process of removing #define and passing in\nthe repository\nargument through to replace the_repository global.\n\n> Thanks.\n"},{"id":"502778","messageId":"pull.1778.v3.git.git.1726262177.gitgitgadget@gmail.com","threadId":"62067","inReplyTo":"pull.1778.v2.git.git.1726001960.gitgitgadget@gmail.com","subject":"[PATCH v3 0/4] Add repository parameter to builtins","fromName":"John Cai via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2024-09-13T21:16:13Z","receivedAt":"2024-09-13T21:16:23Z","isPatch":true,"sender":{"key":"johncai86@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2354211?v=4"},"body":"As part of the effort to remove global state of the_repository, add a\nrepository parameter to builtins so that a repository variable can be passed\ndown. The patches are ordered as follows:\n\n 1. Changes the signature of builtins and passes the_repository down in\n    git.c to be called by all builtins.\n 2. Remove USE_THE_REPOSITORY_VARIABLE from builtin.h, and instead add it to\n    each individual builtin. This paves the way for a migration process\n    whereby each builtin can be migrated away from using the_repository.\n 3. Remove USE_THE_REPOSITORY_VARIABLE from bulitins that do not use\n    the_repository.\n 4. As an example, migrate builtin/add.c to get rid of the_repository by\n    instead passing the repository argument down into helper functions.\n\nChanges since V2:\n\n * Add USE_THE_REPOSITORY_VARIABLE to all builtins under builtin/ that\n   contain builtin.h, and subsequently add a patch that removes it from\n   builtins that do not use the_repository.\n * removed random generated file\n\nChanges since V1:\n\n * Removed USE_THE_REPOSITORY_VARIABLE from add.c\n * removed changes that conflict with existing topics in seen\n * Fixed overly long lines formatting issues\n\nJohn Cai (4):\n  builtin: add a repository parameter for builtin functions\n  builtin: remove USE_THE_REPOSITORY_VARIABLE from builtin.h\n  builtin: remove USE_THE_REPOSITORY for those without the_repository\n  add: pass in repo variable instead of global the_repository\n\n builtin.h                          | 285 ++++++++++++++---------------\n builtin/add.c                      | 119 ++++++------\n builtin/am.c                       |   7 +-\n builtin/annotate.c                 |   9 +-\n builtin/apply.c                    |   7 +-\n builtin/archive.c                  |   7 +-\n builtin/bisect.c                   |   6 +-\n builtin/blame.c                    |   8 +-\n builtin/branch.c                   |   7 +-\n builtin/bugreport.c                |   6 +-\n builtin/bundle.c                   |   7 +-\n builtin/cat-file.c                 |   9 +-\n builtin/check-attr.c               |   7 +-\n builtin/check-ignore.c             |   7 +-\n builtin/check-mailmap.c            |   6 +-\n builtin/check-ref-format.c         |   6 +-\n builtin/checkout--worker.c         |   6 +-\n builtin/checkout-index.c           |   8 +-\n builtin/checkout.c                 |  16 +-\n builtin/clean.c                    |   8 +-\n builtin/clone.c                    |   8 +-\n builtin/column.c                   |   6 +-\n builtin/commit-graph.c             |   7 +-\n builtin/commit-tree.c              |   8 +-\n builtin/commit.c                   |  14 +-\n builtin/config.c                   |   7 +-\n builtin/count-objects.c            |   8 +-\n builtin/credential-cache--daemon.c |  11 +-\n builtin/credential-cache.c         |   5 +-\n builtin/credential-store.c         |   6 +-\n builtin/credential.c               |   7 +-\n builtin/describe.c                 |   8 +-\n builtin/diagnose.c                 |   5 +-\n builtin/diff-files.c               |   7 +-\n builtin/diff-index.c               |   7 +-\n builtin/diff-tree.c                |   7 +-\n builtin/diff.c                     |   7 +-\n builtin/difftool.c                 |   8 +-\n builtin/fast-export.c              |   6 +-\n builtin/fast-import.c              |   7 +-\n builtin/fetch-pack.c               |   6 +-\n builtin/fetch.c                    |   7 +-\n builtin/fmt-merge-msg.c            |   6 +-\n builtin/for-each-ref.c             |   6 +-\n builtin/for-each-repo.c            |   7 +-\n builtin/fsck.c                     |   7 +-\n builtin/fsmonitor--daemon.c        |  10 +-\n builtin/gc.c                       |  13 +-\n builtin/get-tar-commit-id.c        |   5 +-\n builtin/grep.c                     |   7 +-\n builtin/hash-object.c              |   6 +-\n builtin/help.c                     |   7 +-\n builtin/hook.c                     |   6 +-\n builtin/index-pack.c               |   6 +-\n builtin/init-db.c                  |   7 +-\n builtin/interpret-trailers.c       |   7 +-\n builtin/log.c                      |  33 +++-\n builtin/ls-files.c                 |   7 +-\n builtin/ls-remote.c                |   6 +-\n builtin/ls-tree.c                  |   7 +-\n builtin/mailinfo.c                 |   6 +-\n builtin/mailsplit.c                |   5 +-\n builtin/merge-base.c               |   7 +-\n builtin/merge-file.c               |   6 +-\n builtin/merge-index.c              |   7 +-\n builtin/merge-ours.c               |   8 +-\n builtin/merge-recursive.c          |   7 +-\n builtin/merge-tree.c               |   7 +-\n builtin/merge.c                    |  12 +-\n builtin/mktag.c                    |   6 +-\n builtin/mktree.c                   |   7 +-\n builtin/multi-pack-index.c         |   7 +-\n builtin/mv.c                       |   8 +-\n builtin/name-rev.c                 |   7 +-\n builtin/notes.c                    |   9 +-\n builtin/pack-objects.c             |   7 +-\n builtin/pack-redundant.c           |  10 +-\n builtin/pack-refs.c                |   7 +-\n builtin/patch-id.c                 |   6 +-\n builtin/prune-packed.c             |   5 +-\n builtin/prune.c                    |   6 +-\n builtin/pull.c                     |   6 +-\n builtin/push.c                     |   7 +-\n builtin/range-diff.c               |   8 +-\n builtin/read-tree.c                |   8 +-\n builtin/rebase.c                   |   8 +-\n builtin/receive-pack.c             |   8 +-\n builtin/reflog.c                   |  11 +-\n builtin/refs.c                     |   7 +-\n builtin/remote-ext.c               |   5 +-\n builtin/remote-fd.c                |   5 +-\n builtin/remote.c                   |   6 +-\n builtin/repack.c                   |   6 +-\n builtin/replace.c                  |   8 +-\n builtin/replay.c                   |   6 +-\n builtin/rerere.c                   |   8 +-\n builtin/reset.c                    |   7 +-\n builtin/rev-list.c                 |   6 +-\n builtin/rev-parse.c                |   8 +-\n builtin/revert.c                   |  12 +-\n builtin/rm.c                       |   9 +-\n builtin/send-pack.c                |   6 +-\n builtin/shortlog.c                 |   7 +-\n builtin/show-branch.c              |   8 +-\n builtin/show-index.c               |   7 +-\n builtin/show-ref.c                 |   6 +-\n builtin/sparse-checkout.c          |   7 +-\n builtin/stash.c                    |   6 +-\n builtin/stripspace.c               |   6 +-\n builtin/submodule--helper.c        |   8 +-\n builtin/symbolic-ref.c             |   6 +-\n builtin/tag.c                      |   7 +-\n builtin/unpack-file.c              |   6 +-\n builtin/unpack-objects.c           |   6 +-\n builtin/update-index.c             |   8 +-\n builtin/update-ref.c               |   7 +-\n builtin/update-server-info.c       |   6 +-\n builtin/upload-archive.c           |  12 +-\n builtin/upload-pack.c              |   5 +-\n builtin/var.c                      |   7 +-\n builtin/verify-commit.c            |   7 +-\n builtin/verify-pack.c              |   6 +-\n builtin/verify-tag.c               |   6 +-\n builtin/worktree.c                 |   7 +-\n builtin/write-tree.c               |   8 +-\n commit.h                           |   5 +-\n git.c                              |  12 +-\n help.c                             |   3 +-\n 128 files changed, 903 insertions(+), 437 deletions(-)\n\n\nbase-commit: 57974d46a4d5a079471c4f7eaa5933b1922299e4\nPublished-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1778%2Fjohn-cai%2Fjc%2Fadd-the-repository-to-builtin-signature-v3\nFetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1778/john-cai/jc/add-the-repository-to-builtin-signature-v3\nPull-Request: https://github.com/git/git/pull/1778\n\nRange-diff vs v2:\n\n 1:  9aaf9662544 ! 1:  02a4466ecc9 builtin: add a repository parameter for builtin functions\n     @@ builtin/fetch-pack.c: static void add_sought_entry(struct ref ***sought, int *nr\n      +\t\t   struct repository *repo UNUSED)\n       {\n       \tint i, ret;\n     - \tstruct ref *ref = NULL;\n     + \tstruct ref *fetched_refs = NULL, *remote_refs = NULL;\n      \n       ## builtin/fetch.c ##\n      @@ builtin/fetch.c: static int fetch_one(struct remote *remote, int argc, const char **argv,\n     @@ help.c: void get_version_info(struct strbuf *buf, int show_build_options)\n       {\n       \tstruct strbuf buf = STRBUF_INIT;\n       \tint build_options = 0;\n     -\n     - ## stkOs5Qh (new) ##\n     - Binary files /dev/null and stkOs5Qh differ\n 2:  434c8babbb1 ! 2:  7becd3751fc builtin: remove USE_THE_REPOSITORY_VARIABLE from builtin.h\n     @@ builtin/check-mailmap.c\n       #include \"config.h\"\n       #include \"gettext.h\"\n      \n     + ## builtin/check-ref-format.c ##\n     +@@\n     + /*\n     +  * GIT - The information manager from hell\n     +  */\n     +-\n     ++#define USE_THE_REPOSITORY_VARIABLE\n     + #include \"builtin.h\"\n     + #include \"refs.h\"\n     + #include \"setup.h\"\n     +\n       ## builtin/checkout--worker.c ##\n      @@\n      +#define USE_THE_REPOSITORY_VARIABLE\n     @@ builtin/credential-cache--daemon.c\n       #include \"abspath.h\"\n       #include \"gettext.h\"\n      \n     + ## builtin/credential-cache.c ##\n     +@@\n     ++#define USE_THE_REPOSITORY_VARIABLE\n     + #include \"builtin.h\"\n     + #include \"credential.h\"\n     + #include \"gettext.h\"\n     +\n       ## builtin/credential-store.c ##\n      @@\n      +#define USE_THE_REPOSITORY_VARIABLE\n     @@ builtin/describe.c\n       #include \"config.h\"\n       #include \"environment.h\"\n      \n     + ## builtin/diagnose.c ##\n     +@@\n     ++#define USE_THE_REPOSITORY_VARIABLE\n     + #include \"builtin.h\"\n     + #include \"abspath.h\"\n     + #include \"gettext.h\"\n     +\n       ## builtin/diff-files.c ##\n      @@\n        *\n     @@ builtin/gc.c\n       #include \"tempfile.h\"\n       #include \"lockfile.h\"\n      \n     + ## builtin/get-tar-commit-id.c ##\n     +@@\n     + /*\n     +  * Copyright (c) 2005, 2006 Rene Scharfe\n     +  */\n     ++#define USE_THE_REPOSITORY_VARIABLE\n     + #include \"builtin.h\"\n     + #include \"commit.h\"\n     + #include \"tar.h\"\n     +\n       ## builtin/grep.c ##\n      @@\n        *\n     @@ builtin/mailinfo.c\n       #include \"abspath.h\"\n       #include \"environment.h\"\n      \n     + ## builtin/mailsplit.c ##\n     +@@\n     +  * It just splits a mbox into a list of files: \"0001\" \"0002\" ..\n     +  * so you can process them further from there.\n     +  */\n     ++#define USE_THE_REPOSITORY_VARIABLE\n     + #include \"builtin.h\"\n     + #include \"gettext.h\"\n     + #include \"string-list.h\"\n     +\n       ## builtin/merge-base.c ##\n      @@\n      +#define USE_THE_REPOSITORY_VARIABLE\n     @@ builtin/patch-id.c\n       #include \"config.h\"\n       #include \"diff.h\"\n      \n     + ## builtin/prune-packed.c ##\n     +@@\n     ++#define USE_THE_REPOSITORY_VARIABLE\n     + #include \"builtin.h\"\n     + #include \"gettext.h\"\n     + #include \"parse-options.h\"\n     +\n       ## builtin/prune.c ##\n      @@\n      +#define USE_THE_REPOSITORY_VARIABLE\n     @@ builtin/refs.c\n       \n       #define REFS_MIGRATE_USAGE \\\n      \n     + ## builtin/remote-ext.c ##\n     +@@\n     ++#define USE_THE_REPOSITORY_VARIABLE\n     + #include \"builtin.h\"\n     + #include \"transport.h\"\n     + #include \"run-command.h\"\n     +\n     + ## builtin/remote-fd.c ##\n     +@@\n     ++#define USE_THE_REPOSITORY_VARIABLE\n     + #include \"builtin.h\"\n     + #include \"transport.h\"\n     + \n     +\n       ## builtin/remote.c ##\n      @@\n      +#define USE_THE_REPOSITORY_VARIABLE\n     @@ builtin/upload-archive.c\n       #include \"strvec.h\"\n       \n      \n     + ## builtin/upload-pack.c ##\n     +@@\n     ++#define USE_THE_REPOSITORY_VARIABLE\n     + #include \"builtin.h\"\n     + #include \"exec-cmd.h\"\n     + #include \"gettext.h\"\n     +\n       ## builtin/var.c ##\n      @@\n        *\n -:  ----------- > 3:  004283a1e5b builtin: remove USE_THE_REPOSITORY for those without the_repository\n 3:  6956d3fe897 = 4:  d32f8ade1e0 add: pass in repo variable instead of global the_repository\n\n-- \ngitgitgadget\n"},{"id":"502782","messageId":"02a4466ecc9ac5b87f3487317c59345b12ab3f20.1726262177.git.gitgitgadget@gmail.com","threadId":"62067","inReplyTo":"pull.1778.v3.git.git.1726262177.gitgitgadget@gmail.com","subject":"[PATCH v3 1/4] builtin: add a repository parameter for builtin functions","fromName":"John Cai via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2024-09-13T21:16:14Z","receivedAt":"2024-09-13T21:16:25Z","isPatch":true,"sender":{"key":"johncai86@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2354211?v=4"},"body":"From: John Cai <johncai86@gmail.com>\n\nIn order to reduce the usage of the global the_repository, add a\nparameter to builtin functions that will get passed a repository\nvariable.\n\nThis commit uses UNUSED on most of the builtin functions, as subsequent\ncommits will modify the actual builtins to pass the repository parameter\ndown.\n\nSigned-off-by: John Cai <johncai86@gmail.com>\n---\n builtin.h                          | 277 +++++++++++++++--------------\n builtin/add.c                      |  12 +-\n builtin/am.c                       |   5 +-\n builtin/annotate.c                 |   7 +-\n builtin/apply.c                    |   5 +-\n builtin/archive.c                  |   5 +-\n builtin/bisect.c                   |   5 +-\n builtin/blame.c                    |   5 +-\n builtin/branch.c                   |   5 +-\n builtin/bugreport.c                |   5 +-\n builtin/bundle.c                   |   5 +-\n builtin/cat-file.c                 |   7 +-\n builtin/check-attr.c               |   5 +-\n builtin/check-ignore.c             |   5 +-\n builtin/check-mailmap.c            |   5 +-\n builtin/check-ref-format.c         |   5 +-\n builtin/checkout--worker.c         |   5 +-\n builtin/checkout-index.c           |   5 +-\n builtin/checkout.c                 |  15 +-\n builtin/clean.c                    |   5 +-\n builtin/clone.c                    |   5 +-\n builtin/column.c                   |   5 +-\n builtin/commit-graph.c             |   5 +-\n builtin/commit-tree.c              |   5 +-\n builtin/commit.c                   |  10 +-\n builtin/config.c                   |   5 +-\n builtin/count-objects.c            |   5 +-\n builtin/credential-cache--daemon.c |  10 +-\n builtin/credential-cache.c         |   5 +-\n builtin/credential-store.c         |   5 +-\n builtin/credential.c               |   5 +-\n builtin/describe.c                 |   7 +-\n builtin/diagnose.c                 |   5 +-\n builtin/diff-files.c               |   5 +-\n builtin/diff-index.c               |   5 +-\n builtin/diff-tree.c                |   5 +-\n builtin/diff.c                     |   5 +-\n builtin/difftool.c                 |   5 +-\n builtin/fast-export.c              |   5 +-\n builtin/fast-import.c              |   5 +-\n builtin/fetch-pack.c               |   5 +-\n builtin/fetch.c                    |   5 +-\n builtin/fmt-merge-msg.c            |   5 +-\n builtin/for-each-ref.c             |   5 +-\n builtin/for-each-repo.c            |   5 +-\n builtin/fsck.c                     |   5 +-\n builtin/fsmonitor--daemon.c        |   7 +-\n builtin/gc.c                       |  10 +-\n builtin/get-tar-commit-id.c        |   5 +-\n builtin/grep.c                     |   5 +-\n builtin/hash-object.c              |   5 +-\n builtin/help.c                     |   5 +-\n builtin/hook.c                     |   5 +-\n builtin/index-pack.c               |   5 +-\n builtin/init-db.c                  |   5 +-\n builtin/interpret-trailers.c       |   5 +-\n builtin/log.c                      |  30 +++-\n builtin/ls-files.c                 |   5 +-\n builtin/ls-remote.c                |   5 +-\n builtin/ls-tree.c                  |   5 +-\n builtin/mailinfo.c                 |   5 +-\n builtin/mailsplit.c                |   5 +-\n builtin/merge-base.c               |   5 +-\n builtin/merge-file.c               |   5 +-\n builtin/merge-index.c              |   5 +-\n builtin/merge-ours.c               |   5 +-\n builtin/merge-recursive.c          |   5 +-\n builtin/merge-tree.c               |   5 +-\n builtin/merge.c                    |   9 +-\n builtin/mktag.c                    |   5 +-\n builtin/mktree.c                   |   6 +-\n builtin/multi-pack-index.c         |   6 +-\n builtin/mv.c                       |   5 +-\n builtin/name-rev.c                 |   5 +-\n builtin/notes.c                    |   5 +-\n builtin/pack-objects.c             |   5 +-\n builtin/pack-redundant.c           |   7 +-\n builtin/pack-refs.c                |   5 +-\n builtin/patch-id.c                 |   5 +-\n builtin/prune-packed.c             |   5 +-\n builtin/prune.c                    |   5 +-\n builtin/pull.c                     |   5 +-\n builtin/push.c                     |   5 +-\n builtin/range-diff.c               |   5 +-\n builtin/read-tree.c                |   5 +-\n builtin/rebase.c                   |   5 +-\n builtin/receive-pack.c             |   5 +-\n builtin/reflog.c                   |   9 +-\n builtin/refs.c                     |   5 +-\n builtin/remote-ext.c               |   5 +-\n builtin/remote-fd.c                |   5 +-\n builtin/remote.c                   |   5 +-\n builtin/repack.c                   |   5 +-\n builtin/replace.c                  |   5 +-\n builtin/replay.c                   |   5 +-\n builtin/rerere.c                   |   5 +-\n builtin/reset.c                    |   5 +-\n builtin/rev-list.c                 |   5 +-\n builtin/rev-parse.c                |   5 +-\n builtin/revert.c                   |  10 +-\n builtin/rm.c                       |   5 +-\n builtin/send-pack.c                |   5 +-\n builtin/shortlog.c                 |   5 +-\n builtin/show-branch.c              |   5 +-\n builtin/show-index.c               |   5 +-\n builtin/show-ref.c                 |   5 +-\n builtin/sparse-checkout.c          |   5 +-\n builtin/stash.c                    |   5 +-\n builtin/stripspace.c               |   5 +-\n builtin/submodule--helper.c        |   5 +-\n builtin/symbolic-ref.c             |   5 +-\n builtin/tag.c                      |   5 +-\n builtin/unpack-file.c              |   5 +-\n builtin/unpack-objects.c           |   5 +-\n builtin/update-index.c             |   5 +-\n builtin/update-ref.c               |   5 +-\n builtin/update-server-info.c       |   5 +-\n builtin/upload-archive.c           |  10 +-\n builtin/upload-pack.c              |   5 +-\n builtin/var.c                      |   5 +-\n builtin/verify-commit.c            |   5 +-\n builtin/verify-pack.c              |   5 +-\n builtin/verify-tag.c               |   5 +-\n builtin/worktree.c                 |   5 +-\n builtin/write-tree.c               |   5 +-\n git.c                              |  12 +-\n help.c                             |   3 +-\n 127 files changed, 703 insertions(+), 296 deletions(-)\n\ndiff --git a/builtin.h b/builtin.h\nindex 14fa0171607..fc6fc8ffed8 100644\n--- a/builtin.h\n+++ b/builtin.h\n@@ -10,6 +10,7 @@\n #define USE_THE_REPOSITORY_VARIABLE\n \n #include \"git-compat-util.h\"\n+#include \"repository.h\"\n \n /*\n  * builtin API\n@@ -122,143 +123,143 @@ int is_builtin(const char *s);\n \t\tBUG(\"unexpected prefix in builtin: %s\", (prefix)); \\\n } while (0)\n \n-int cmd_add(int argc, const char **argv, const char *prefix);\n-int cmd_am(int argc, const char **argv, const char *prefix);\n-int cmd_annotate(int argc, const char **argv, const char *prefix);\n-int cmd_apply(int argc, const char **argv, const char *prefix);\n-int cmd_archive(int argc, const char **argv, const char *prefix);\n-int cmd_bisect(int argc, const char **argv, const char *prefix);\n-int cmd_blame(int argc, const char **argv, const char *prefix);\n-int cmd_branch(int argc, const char **argv, const char *prefix);\n-int cmd_bugreport(int argc, const char **argv, const char *prefix);\n-int cmd_bundle(int argc, const char **argv, const char *prefix);\n-int cmd_cat_file(int argc, const char **argv, const char *prefix);\n-int cmd_checkout(int argc, const char **argv, const char *prefix);\n-int cmd_checkout__worker(int argc, const char **argv, const char *prefix);\n-int cmd_checkout_index(int argc, const char **argv, const char *prefix);\n-int cmd_check_attr(int argc, const char **argv, const char *prefix);\n-int cmd_check_ignore(int argc, const char **argv, const char *prefix);\n-int cmd_check_mailmap(int argc, const char **argv, const char *prefix);\n-int cmd_check_ref_format(int argc, const char **argv, const char *prefix);\n-int cmd_cherry(int argc, const char **argv, const char *prefix);\n-int cmd_cherry_pick(int argc, const char **argv, const char *prefix);\n-int cmd_clone(int argc, const char **argv, const char *prefix);\n-int cmd_clean(int argc, const char **argv, const char *prefix);\n-int cmd_column(int argc, const char **argv, const char *prefix);\n-int cmd_commit(int argc, const char **argv, const char *prefix);\n-int cmd_commit_graph(int argc, const char **argv, const char *prefix);\n-int cmd_commit_tree(int argc, const char **argv, const char *prefix);\n-int cmd_config(int argc, const char **argv, const char *prefix);\n-int cmd_count_objects(int argc, const char **argv, const char *prefix);\n-int cmd_credential(int argc, const char **argv, const char *prefix);\n-int cmd_credential_cache(int argc, const char **argv, const char *prefix);\n-int cmd_credential_cache_daemon(int argc, const char **argv, const char *prefix);\n-int cmd_credential_store(int argc, const char **argv, const char *prefix);\n-int cmd_describe(int argc, const char **argv, const char *prefix);\n-int cmd_diagnose(int argc, const char **argv, const char *prefix);\n-int cmd_diff_files(int argc, const char **argv, const char *prefix);\n-int cmd_diff_index(int argc, const char **argv, const char *prefix);\n-int cmd_diff(int argc, const char **argv, const char *prefix);\n-int cmd_diff_tree(int argc, const char **argv, const char *prefix);\n-int cmd_difftool(int argc, const char **argv, const char *prefix);\n-int cmd_env__helper(int argc, const char **argv, const char *prefix);\n-int cmd_fast_export(int argc, const char **argv, const char *prefix);\n-int cmd_fast_import(int argc, const char **argv, const char *prefix);\n-int cmd_fetch(int argc, const char **argv, const char *prefix);\n-int cmd_fetch_pack(int argc, const char **argv, const char *prefix);\n-int cmd_fmt_merge_msg(int argc, const char **argv, const char *prefix);\n-int cmd_for_each_ref(int argc, const char **argv, const char *prefix);\n-int cmd_for_each_repo(int argc, const char **argv, const char *prefix);\n-int cmd_format_patch(int argc, const char **argv, const char *prefix);\n-int cmd_fsck(int argc, const char **argv, const char *prefix);\n-int cmd_fsmonitor__daemon(int argc, const char **argv, const char *prefix);\n-int cmd_gc(int argc, const char **argv, const char *prefix);\n-int cmd_get_tar_commit_id(int argc, const char **argv, const char *prefix);\n-int cmd_grep(int argc, const char **argv, const char *prefix);\n-int cmd_hash_object(int argc, const char **argv, const char *prefix);\n-int cmd_help(int argc, const char **argv, const char *prefix);\n-int cmd_hook(int argc, const char **argv, const char *prefix);\n-int cmd_index_pack(int argc, const char **argv, const char *prefix);\n-int cmd_init_db(int argc, const char **argv, const char *prefix);\n-int cmd_interpret_trailers(int argc, const char **argv, const char *prefix);\n-int cmd_log(int argc, const char **argv, const char *prefix);\n-int cmd_log_reflog(int argc, const char **argv, const char *prefix);\n-int cmd_ls_files(int argc, const char **argv, const char *prefix);\n-int cmd_ls_tree(int argc, const char **argv, const char *prefix);\n-int cmd_ls_remote(int argc, const char **argv, const char *prefix);\n-int cmd_mailinfo(int argc, const char **argv, const char *prefix);\n-int cmd_mailsplit(int argc, const char **argv, const char *prefix);\n-int cmd_maintenance(int argc, const char **argv, const char *prefix);\n-int cmd_merge(int argc, const char **argv, const char *prefix);\n-int cmd_merge_base(int argc, const char **argv, const char *prefix);\n-int cmd_merge_index(int argc, const char **argv, const char *prefix);\n-int cmd_merge_ours(int argc, const char **argv, const char *prefix);\n-int cmd_merge_file(int argc, const char **argv, const char *prefix);\n-int cmd_merge_recursive(int argc, const char **argv, const char *prefix);\n-int cmd_merge_tree(int argc, const char **argv, const char *prefix);\n-int cmd_mktag(int argc, const char **argv, const char *prefix);\n-int cmd_mktree(int argc, const char **argv, const char *prefix);\n-int cmd_multi_pack_index(int argc, const char **argv, const char *prefix);\n-int cmd_mv(int argc, const char **argv, const char *prefix);\n-int cmd_name_rev(int argc, const char **argv, const char *prefix);\n-int cmd_notes(int argc, const char **argv, const char *prefix);\n-int cmd_pack_objects(int argc, const char **argv, const char *prefix);\n-int cmd_pack_redundant(int argc, const char **argv, const char *prefix);\n-int cmd_patch_id(int argc, const char **argv, const char *prefix);\n-int cmd_prune(int argc, const char **argv, const char *prefix);\n-int cmd_prune_packed(int argc, const char **argv, const char *prefix);\n-int cmd_pull(int argc, const char **argv, const char *prefix);\n-int cmd_push(int argc, const char **argv, const char *prefix);\n-int cmd_range_diff(int argc, const char **argv, const char *prefix);\n-int cmd_read_tree(int argc, const char **argv, const char *prefix);\n-int cmd_rebase(int argc, const char **argv, const char *prefix);\n-int cmd_rebase__interactive(int argc, const char **argv, const char *prefix);\n-int cmd_receive_pack(int argc, const char **argv, const char *prefix);\n-int cmd_reflog(int argc, const char **argv, const char *prefix);\n-int cmd_refs(int argc, const char **argv, const char *prefix);\n-int cmd_remote(int argc, const char **argv, const char *prefix);\n-int cmd_remote_ext(int argc, const char **argv, const char *prefix);\n-int cmd_remote_fd(int argc, const char **argv, const char *prefix);\n-int cmd_repack(int argc, const char **argv, const char *prefix);\n-int cmd_replay(int argc, const char **argv, const char *prefix);\n-int cmd_rerere(int argc, const char **argv, const char *prefix);\n-int cmd_reset(int argc, const char **argv, const char *prefix);\n-int cmd_restore(int argc, const char **argv, const char *prefix);\n-int cmd_rev_list(int argc, const char **argv, const char *prefix);\n-int cmd_rev_parse(int argc, const char **argv, const char *prefix);\n-int cmd_revert(int argc, const char **argv, const char *prefix);\n-int cmd_rm(int argc, const char **argv, const char *prefix);\n-int cmd_send_pack(int argc, const char **argv, const char *prefix);\n-int cmd_shortlog(int argc, const char **argv, const char *prefix);\n-int cmd_show(int argc, const char **argv, const char *prefix);\n-int cmd_show_branch(int argc, const char **argv, const char *prefix);\n-int cmd_show_index(int argc, const char **argv, const char *prefix);\n-int cmd_sparse_checkout(int argc, const char **argv, const char *prefix);\n-int cmd_status(int argc, const char **argv, const char *prefix);\n-int cmd_stash(int argc, const char **argv, const char *prefix);\n-int cmd_stripspace(int argc, const char **argv, const char *prefix);\n-int cmd_submodule__helper(int argc, const char **argv, const char *prefix);\n-int cmd_switch(int argc, const char **argv, const char *prefix);\n-int cmd_symbolic_ref(int argc, const char **argv, const char *prefix);\n-int cmd_tag(int argc, const char **argv, const char *prefix);\n-int cmd_unpack_file(int argc, const char **argv, const char *prefix);\n-int cmd_unpack_objects(int argc, const char **argv, const char *prefix);\n-int cmd_update_index(int argc, const char **argv, const char *prefix);\n-int cmd_update_ref(int argc, const char **argv, const char *prefix);\n-int cmd_update_server_info(int argc, const char **argv, const char *prefix);\n-int cmd_upload_archive(int argc, const char **argv, const char *prefix);\n-int cmd_upload_archive_writer(int argc, const char **argv, const char *prefix);\n-int cmd_upload_pack(int argc, const char **argv, const char *prefix);\n-int cmd_var(int argc, const char **argv, const char *prefix);\n-int cmd_verify_commit(int argc, const char **argv, const char *prefix);\n-int cmd_verify_tag(int argc, const char **argv, const char *prefix);\n-int cmd_version(int argc, const char **argv, const char *prefix);\n-int cmd_whatchanged(int argc, const char **argv, const char *prefix);\n-int cmd_worktree(int argc, const char **argv, const char *prefix);\n-int cmd_write_tree(int argc, const char **argv, const char *prefix);\n-int cmd_verify_pack(int argc, const char **argv, const char *prefix);\n-int cmd_show_ref(int argc, const char **argv, const char *prefix);\n-int cmd_pack_refs(int argc, const char **argv, const char *prefix);\n-int cmd_replace(int argc, const char **argv, const char *prefix);\n+int cmd_add(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_am(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_annotate(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_apply(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_archive(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_bisect(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_blame(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_branch(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_bugreport(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_bundle(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_cat_file(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_checkout(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_checkout__worker(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_checkout_index(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_check_attr(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_check_ignore(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_check_mailmap(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_check_ref_format(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_cherry(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_cherry_pick(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_clone(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_clean(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_column(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_commit(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_commit_graph(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_commit_tree(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_config(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_count_objects(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_credential(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_credential_cache(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_credential_cache_daemon(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_credential_store(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_describe(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_diagnose(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_diff_files(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_diff_index(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_diff(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_diff_tree(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_difftool(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_env__helper(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_fast_export(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_fast_import(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_fetch(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_fetch_pack(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_fmt_merge_msg(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_for_each_ref(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_for_each_repo(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_format_patch(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_fsck(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_fsmonitor__daemon(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_gc(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_get_tar_commit_id(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_grep(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_hash_object(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_help(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_hook(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_index_pack(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_init_db(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_interpret_trailers(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_log_reflog(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_log(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_ls_files(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_ls_tree(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_ls_remote(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_mailinfo(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_mailsplit(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_maintenance(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_merge(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_merge_base(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_merge_index(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_merge_ours(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_merge_file(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_merge_recursive(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_merge_tree(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_mktag(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_mktree(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_multi_pack_index(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_mv(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_name_rev(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_notes(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_pack_objects(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_pack_redundant(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_patch_id(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_prune(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_prune_packed(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_pull(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_push(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_range_diff(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_read_tree(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_rebase(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_rebase__interactive(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_receive_pack(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_reflog(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_refs(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_remote(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_remote_ext(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_remote_fd(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_repack(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_replay(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_rerere(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_reset(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_restore(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_rev_list(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_rev_parse(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_revert(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_rm(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_send_pack(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_shortlog(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_show(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_show_branch(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_show_index(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_sparse_checkout(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_status(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_stash(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_stripspace(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_submodule__helper(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_switch(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_symbolic_ref(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_tag(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_unpack_file(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_unpack_objects(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_update_index(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_update_ref(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_update_server_info(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_upload_archive(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_upload_archive_writer(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_upload_pack(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_var(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_verify_commit(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_verify_tag(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_version(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_whatchanged(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_worktree(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_write_tree(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_verify_pack(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_show_ref(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_pack_refs(int argc, const char **argv, const char *prefix, struct repository *repo);\n+int cmd_replace(int argc, const char **argv, const char *prefix, struct repository *repo);\n \n #endif\ndiff --git a/builtin/add.c b/builtin/add.c\nindex 40b61ef90d9..ba331519cac 100644\n--- a/builtin/add.c\n+++ b/builtin/add.c\n@@ -167,7 +167,10 @@ int interactive_add(const char **argv, const char *prefix, int patch)\n \treturn ret;\n }\n \n-static int edit_patch(int argc, const char **argv, const char *prefix)\n+static int edit_patch(int argc,\n+\t\t      const char **argv,\n+\t\t      const char *prefix,\n+\t\t      struct repository *repo UNUSED)\n {\n \tchar *file = git_pathdup(\"ADD_EDIT.patch\");\n \tstruct child_process child = CHILD_PROCESS_INIT;\n@@ -358,7 +361,10 @@ static int add_files(struct dir_struct *dir, int flags)\n \treturn exit_status;\n }\n \n-int cmd_add(int argc, const char **argv, const char *prefix)\n+int cmd_add(int argc,\n+\t    const char **argv,\n+\t    const char *prefix,\n+\t    struct repository *repo UNUSED)\n {\n \tint exit_status = 0;\n \tstruct pathspec pathspec;\n@@ -387,7 +393,7 @@ int cmd_add(int argc, const char **argv, const char *prefix)\n \tif (edit_interactive) {\n \t\tif (pathspec_from_file)\n \t\t\tdie(_(\"options '%s' and '%s' cannot be used together\"), \"--pathspec-from-file\", \"--edit\");\n-\t\treturn(edit_patch(argc, argv, prefix));\n+\t\treturn(edit_patch(argc, argv, prefix, the_repository));\n \t}\n \targc--;\n \targv++;\ndiff --git a/builtin/am.c b/builtin/am.c\nindex d8875ad4022..8c610eed3e6 100644\n--- a/builtin/am.c\n+++ b/builtin/am.c\n@@ -2298,7 +2298,10 @@ static int parse_opt_show_current_patch(const struct option *opt, const char *ar\n \treturn 0;\n }\n \n-int cmd_am(int argc, const char **argv, const char *prefix)\n+int cmd_am(int argc,\n+\t   const char **argv,\n+\t   const char *prefix,\n+\t   struct repository *repo UNUSED)\n {\n \tstruct am_state state;\n \tint binary = -1;\ndiff --git a/builtin/annotate.c b/builtin/annotate.c\nindex 58ff977a231..0abf89ef186 100644\n--- a/builtin/annotate.c\n+++ b/builtin/annotate.c\n@@ -7,7 +7,10 @@\n #include \"builtin.h\"\n #include \"strvec.h\"\n \n-int cmd_annotate(int argc, const char **argv, const char *prefix)\n+int cmd_annotate(int argc,\n+\t\t const char **argv,\n+\t\t const char *prefix,\n+\t\t struct repository *repo UNUSED)\n {\n \tstruct strvec args = STRVEC_INIT;\n \tint i;\n@@ -18,5 +21,5 @@ int cmd_annotate(int argc, const char **argv, const char *prefix)\n \t\tstrvec_push(&args, argv[i]);\n \t}\n \n-\treturn cmd_blame(args.nr, args.v, prefix);\n+\treturn cmd_blame(args.nr, args.v, prefix, the_repository);\n }\ndiff --git a/builtin/apply.c b/builtin/apply.c\nindex d623c52f78f..ca0bb97df40 100644\n--- a/builtin/apply.c\n+++ b/builtin/apply.c\n@@ -9,7 +9,10 @@ static const char * const apply_usage[] = {\n \tNULL\n };\n \n-int cmd_apply(int argc, const char **argv, const char *prefix)\n+int cmd_apply(int argc,\n+\t      const char **argv,\n+\t      const char *prefix,\n+\t      struct repository *repo UNUSED)\n {\n \tint force_apply = 0;\n \tint options = 0;\ndiff --git a/builtin/archive.c b/builtin/archive.c\nindex 63f02990d11..2b5dc5f43b0 100644\n--- a/builtin/archive.c\n+++ b/builtin/archive.c\n@@ -76,7 +76,10 @@ static int run_remote_archiver(int argc, const char **argv,\n \t\t\t     PARSE_OPT_KEEP_UNKNOWN_OPT |\t\\\n \t\t\t     PARSE_OPT_NO_INTERNAL_HELP\t)\n \n-int cmd_archive(int argc, const char **argv, const char *prefix)\n+int cmd_archive(int argc,\n+\t\tconst char **argv,\n+\t\tconst char *prefix,\n+\t\tstruct repository *repo UNUSED)\n {\n \tconst char *exec = \"git-upload-archive\";\n \tchar *output = NULL;\ndiff --git a/builtin/bisect.c b/builtin/bisect.c\nindex c8aa92b19d5..bec5cc749af 100644\n--- a/builtin/bisect.c\n+++ b/builtin/bisect.c\n@@ -1411,7 +1411,10 @@ static int cmd_bisect__run(int argc, const char **argv, const char *prefix UNUSE\n \treturn res;\n }\n \n-int cmd_bisect(int argc, const char **argv, const char *prefix)\n+int cmd_bisect(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tint res = 0;\n \tparse_opt_subcommand_fn *fn = NULL;\ndiff --git a/builtin/blame.c b/builtin/blame.c\nindex 35e975fb132..728a62402b5 100644\n--- a/builtin/blame.c\n+++ b/builtin/blame.c\n@@ -864,7 +864,10 @@ static void build_ignorelist(struct blame_scoreboard *sb,\n \t}\n }\n \n-int cmd_blame(int argc, const char **argv, const char *prefix)\n+int cmd_blame(int argc,\n+\t      const char **argv,\n+\t      const char *prefix,\n+\t      struct repository *repo UNUSED)\n {\n \tstruct rev_info revs;\n \tchar *path = NULL;\ndiff --git a/builtin/branch.c b/builtin/branch.c\nindex 3f870741bfd..7980d2e83d6 100644\n--- a/builtin/branch.c\n+++ b/builtin/branch.c\n@@ -704,7 +704,10 @@ static int edit_branch_description(const char *branch_name)\n \treturn 0;\n }\n \n-int cmd_branch(int argc, const char **argv, const char *prefix)\n+int cmd_branch(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \t/* possible actions */\n \tint delete = 0, rename = 0, copy = 0, list = 0,\ndiff --git a/builtin/bugreport.c b/builtin/bugreport.c\nindex bdfed3d8f18..aeab40c4902 100644\n--- a/builtin/bugreport.c\n+++ b/builtin/bugreport.c\n@@ -98,7 +98,10 @@ static void get_header(struct strbuf *buf, const char *title)\n \tstrbuf_addf(buf, \"\\n\\n[%s]\\n\", title);\n }\n \n-int cmd_bugreport(int argc, const char **argv, const char *prefix)\n+int cmd_bugreport(int argc,\n+\t\t  const char **argv,\n+\t\t  const char *prefix,\n+\t\t  struct repository *repo UNUSED)\n {\n \tstruct strbuf buffer = STRBUF_INIT;\n \tstruct strbuf report_path = STRBUF_INIT;\ndiff --git a/builtin/bundle.c b/builtin/bundle.c\nindex b858552ee6c..3fdd9195fd7 100644\n--- a/builtin/bundle.c\n+++ b/builtin/bundle.c\n@@ -228,7 +228,10 @@ cleanup:\n \treturn ret;\n }\n \n-int cmd_bundle(int argc, const char **argv, const char *prefix)\n+int cmd_bundle(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tstruct option options[] = {\ndiff --git a/builtin/cat-file.c b/builtin/cat-file.c\nindex 1afdfb5cbae..b0ce49c9640 100644\n--- a/builtin/cat-file.c\n+++ b/builtin/cat-file.c\n@@ -191,7 +191,7 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name,\n \t\t\tconst char *ls_args[3] = { NULL };\n \t\t\tls_args[0] =  \"ls-tree\";\n \t\t\tls_args[1] =  obj_name;\n-\t\t\tret = cmd_ls_tree(2, ls_args, NULL);\n+\t\t\tret = cmd_ls_tree(2, ls_args, NULL, the_repository);\n \t\t\tgoto cleanup;\n \t\t}\n \n@@ -923,7 +923,10 @@ static int batch_option_callback(const struct option *opt,\n \treturn 0;\n }\n \n-int cmd_cat_file(int argc, const char **argv, const char *prefix)\n+int cmd_cat_file(int argc,\n+\t\t const char **argv,\n+\t\t const char *prefix,\n+\t\t struct repository *repo UNUSED)\n {\n \tint opt = 0;\n \tint opt_cw = 0;\ndiff --git a/builtin/check-attr.c b/builtin/check-attr.c\nindex 93768107100..ffd1067558d 100644\n--- a/builtin/check-attr.c\n+++ b/builtin/check-attr.c\n@@ -107,7 +107,10 @@ static NORETURN void error_with_usage(const char *msg)\n \tusage_with_options(check_attr_usage, check_attr_options);\n }\n \n-int cmd_check_attr(int argc, const char **argv, const char *prefix)\n+int cmd_check_attr(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tstruct attr_check *check;\n \tstruct object_id initialized_oid;\ndiff --git a/builtin/check-ignore.c b/builtin/check-ignore.c\nindex 2bda6a1d462..70565b9f892 100644\n--- a/builtin/check-ignore.c\n+++ b/builtin/check-ignore.c\n@@ -151,7 +151,10 @@ static int check_ignore_stdin_paths(struct dir_struct *dir, const char *prefix)\n \treturn num_ignored;\n }\n \n-int cmd_check_ignore(int argc, const char **argv, const char *prefix)\n+int cmd_check_ignore(int argc,\n+\t\t     const char **argv,\n+\t\t     const char *prefix,\n+\t\t     struct repository *repo UNUSED)\n {\n \tint num_ignored;\n \tstruct dir_struct dir = DIR_INIT;\ndiff --git a/builtin/check-mailmap.c b/builtin/check-mailmap.c\nindex 2334b572227..422b6938788 100644\n--- a/builtin/check-mailmap.c\n+++ b/builtin/check-mailmap.c\n@@ -47,7 +47,10 @@ static void check_mailmap(struct string_list *mailmap, const char *contact)\n \tprintf(\"<%.*s>\\n\", (int)maillen, mail);\n }\n \n-int cmd_check_mailmap(int argc, const char **argv, const char *prefix)\n+int cmd_check_mailmap(int argc,\n+\t\t      const char **argv,\n+\t\t      const char *prefix,\n+\t\t      struct repository *repo UNUSED)\n {\n \tint i;\n \tstruct string_list mailmap = STRING_LIST_INIT_NODUP;\ndiff --git a/builtin/check-ref-format.c b/builtin/check-ref-format.c\nindex 5eb6bdc3f69..6874edb4f41 100644\n--- a/builtin/check-ref-format.c\n+++ b/builtin/check-ref-format.c\n@@ -51,7 +51,10 @@ static int check_ref_format_branch(const char *arg)\n \treturn 0;\n }\n \n-int cmd_check_ref_format(int argc, const char **argv, const char *prefix)\n+int cmd_check_ref_format(int argc,\n+\t\t\t const char **argv,\n+\t\t\t const char *prefix,\n+\t\t\t struct repository *repo UNUSED)\n {\n \tint i;\n \tint normalize = 0;\ndiff --git a/builtin/checkout--worker.c b/builtin/checkout--worker.c\nindex 6b62b5375bd..f53e1082690 100644\n--- a/builtin/checkout--worker.c\n+++ b/builtin/checkout--worker.c\n@@ -113,7 +113,10 @@ static const char * const checkout_worker_usage[] = {\n \tNULL\n };\n \n-int cmd_checkout__worker(int argc, const char **argv, const char *prefix)\n+int cmd_checkout__worker(int argc,\n+\t\t\t const char **argv,\n+\t\t\t const char *prefix,\n+\t\t\t struct repository *repo UNUSED)\n {\n \tstruct checkout state = CHECKOUT_INIT;\n \tstruct option checkout_worker_options[] = {\ndiff --git a/builtin/checkout-index.c b/builtin/checkout-index.c\nindex 29e744d11be..98247ff8236 100644\n--- a/builtin/checkout-index.c\n+++ b/builtin/checkout-index.c\n@@ -208,7 +208,10 @@ static int option_parse_stage(const struct option *opt,\n \treturn 0;\n }\n \n-int cmd_checkout_index(int argc, const char **argv, const char *prefix)\n+int cmd_checkout_index(int argc,\n+\t\t       const char **argv,\n+\t\t       const char *prefix,\n+\t\t       struct repository *repo UNUSED)\n {\n \tint i;\n \tstruct lock_file lock_file = LOCK_INIT;\ndiff --git a/builtin/checkout.c b/builtin/checkout.c\nindex 4cfe6fab505..d3bc48684f9 100644\n--- a/builtin/checkout.c\n+++ b/builtin/checkout.c\n@@ -1953,7 +1953,10 @@ static int checkout_main(int argc, const char **argv, const char *prefix,\n \treturn ret;\n }\n \n-int cmd_checkout(int argc, const char **argv, const char *prefix)\n+int cmd_checkout(int argc,\n+\t\t const char **argv,\n+\t\t const char *prefix,\n+\t\t struct repository *repo UNUSED)\n {\n \tstruct checkout_opts opts = CHECKOUT_OPTS_INIT;\n \tstruct option *options;\n@@ -2000,7 +2003,10 @@ int cmd_checkout(int argc, const char **argv, const char *prefix)\n \t\t\t     checkout_usage);\n }\n \n-int cmd_switch(int argc, const char **argv, const char *prefix)\n+int cmd_switch(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tstruct checkout_opts opts = CHECKOUT_OPTS_INIT;\n \tstruct option *options = NULL;\n@@ -2036,7 +2042,10 @@ int cmd_switch(int argc, const char **argv, const char *prefix)\n \t\t\t     switch_branch_usage);\n }\n \n-int cmd_restore(int argc, const char **argv, const char *prefix)\n+int cmd_restore(int argc,\n+\t\tconst char **argv,\n+\t\tconst char *prefix,\n+\t\tstruct repository *repo UNUSED)\n {\n \tstruct checkout_opts opts = CHECKOUT_OPTS_INIT;\n \tstruct option *options;\ndiff --git a/builtin/clean.c b/builtin/clean.c\nindex ded5a91534c..b5887f877e0 100644\n--- a/builtin/clean.c\n+++ b/builtin/clean.c\n@@ -915,7 +915,10 @@ static void correct_untracked_entries(struct dir_struct *dir)\n \tdir->nr = dst;\n }\n \n-int cmd_clean(int argc, const char **argv, const char *prefix)\n+int cmd_clean(int argc,\n+\t      const char **argv,\n+\t      const char *prefix,\n+\t      struct repository *repo UNUSED)\n {\n \tint i, res;\n \tint dry_run = 0, remove_directories = 0, quiet = 0, ignored = 0;\ndiff --git a/builtin/clone.c b/builtin/clone.c\nindex 269b6e18a4e..1b82310ac5b 100644\n--- a/builtin/clone.c\n+++ b/builtin/clone.c\n@@ -956,7 +956,10 @@ static int path_exists(const char *path)\n \treturn !stat(path, &sb);\n }\n \n-int cmd_clone(int argc, const char **argv, const char *prefix)\n+int cmd_clone(int argc,\n+\t      const char **argv,\n+\t      const char *prefix,\n+\t      struct repository *repository UNUSED)\n {\n \tint is_bundle = 0, is_local;\n \tint reject_shallow = 0;\ndiff --git a/builtin/column.c b/builtin/column.c\nindex 10ff7e01668..93f84beeee7 100644\n--- a/builtin/column.c\n+++ b/builtin/column.c\n@@ -18,7 +18,10 @@ static int column_config(const char *var, const char *value,\n \treturn git_column_config(var, value, cb, &colopts);\n }\n \n-int cmd_column(int argc, const char **argv, const char *prefix)\n+int cmd_column(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tstruct string_list list = STRING_LIST_INIT_DUP;\n \tstruct strbuf sb = STRBUF_INIT;\ndiff --git a/builtin/commit-graph.c b/builtin/commit-graph.c\nindex 7102ee90a00..65ce98d4675 100644\n--- a/builtin/commit-graph.c\n+++ b/builtin/commit-graph.c\n@@ -331,7 +331,10 @@ cleanup:\n \treturn result;\n }\n \n-int cmd_commit_graph(int argc, const char **argv, const char *prefix)\n+int cmd_commit_graph(int argc,\n+\t\t     const char **argv,\n+\t\t     const char *prefix,\n+\t\t     struct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tstruct option builtin_commit_graph_options[] = {\ndiff --git a/builtin/commit-tree.c b/builtin/commit-tree.c\nindex 84bb4502229..bd8bf3296ed 100644\n--- a/builtin/commit-tree.c\n+++ b/builtin/commit-tree.c\n@@ -90,7 +90,10 @@ static int parse_file_arg_callback(const struct option *opt,\n \treturn 0;\n }\n \n-int cmd_commit_tree(int argc, const char **argv, const char *prefix)\n+int cmd_commit_tree(int argc,\n+\t\t    const char **argv,\n+\t\t    const char *prefix,\n+\t\t    struct repository *repo UNUSED)\n {\n \tstatic struct strbuf buffer = STRBUF_INIT;\n \tstruct commit_list *parents = NULL;\ndiff --git a/builtin/commit.c b/builtin/commit.c\nindex b2033c48877..768d76ac461 100644\n--- a/builtin/commit.c\n+++ b/builtin/commit.c\n@@ -1502,7 +1502,10 @@ static int git_status_config(const char *k, const char *v,\n \treturn git_diff_ui_config(k, v, ctx, NULL);\n }\n \n-int cmd_status(int argc, const char **argv, const char *prefix)\n+int cmd_status(int argc,\n+const char **argv,\n+const char *prefix,\n+struct repository *repo UNUSED)\n {\n \tstatic int no_renames = -1;\n \tstatic const char *rename_score_arg = (const char *)-1;\n@@ -1641,7 +1644,10 @@ static int git_commit_config(const char *k, const char *v,\n \treturn git_status_config(k, v, ctx, s);\n }\n \n-int cmd_commit(int argc, const char **argv, const char *prefix)\n+int cmd_commit(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tstatic struct wt_status s;\n \tstatic struct option builtin_commit_options[] = {\ndiff --git a/builtin/config.c b/builtin/config.c\nindex 95c8a009154..c64baebb1ec 100644\n--- a/builtin/config.c\n+++ b/builtin/config.c\n@@ -1392,7 +1392,10 @@ out:\n \treturn ret;\n }\n \n-int cmd_config(int argc, const char **argv, const char *prefix)\n+int cmd_config(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *subcommand = NULL;\n \tstruct option subcommand_opts[] = {\ndiff --git a/builtin/count-objects.c b/builtin/count-objects.c\nindex ec6098a149d..6b905da3c3d 100644\n--- a/builtin/count-objects.c\n+++ b/builtin/count-objects.c\n@@ -95,7 +95,10 @@ static char const * const count_objects_usage[] = {\n \tNULL\n };\n \n-int cmd_count_objects(int argc, const char **argv, const char *prefix)\n+int cmd_count_objects(int argc,\n+\t\t      const char **argv,\n+\t\t      const char *prefix,\n+\t\t      struct repository *repo UNUSED)\n {\n \tint human_readable = 0;\n \tstruct option opts[] = {\ndiff --git a/builtin/credential-cache--daemon.c b/builtin/credential-cache--daemon.c\nindex 4952b225477..4caaf38b841 100644\n--- a/builtin/credential-cache--daemon.c\n+++ b/builtin/credential-cache--daemon.c\n@@ -287,7 +287,10 @@ static void init_socket_directory(const char *path)\n \tfree(path_copy);\n }\n \n-int cmd_credential_cache_daemon(int argc, const char **argv, const char *prefix)\n+int cmd_credential_cache_daemon(int argc,\n+\t\t\t\tconst char **argv,\n+\t\t\t\tconst char *prefix,\n+\t\t\t\tstruct repository *repo UNUSED)\n {\n \tstruct tempfile *socket_file;\n \tconst char *socket_path;\n@@ -330,7 +333,10 @@ int cmd_credential_cache_daemon(int argc, const char **argv, const char *prefix)\n \n #else\n \n-int cmd_credential_cache_daemon(int argc, const char **argv, const char *prefix)\n+int cmd_credential_cache_daemon(int argc,\n+const char **argv,\n+const char *prefix,\n+struct repository *repo UNUSED)\n {\n \tconst char * const usage[] = {\n \t\t\"git credential-cache--daemon [--debug] <socket-path>\",\ndiff --git a/builtin/credential-cache.c b/builtin/credential-cache.c\nindex aaf2f8438b4..5de8b9123bf 100644\n--- a/builtin/credential-cache.c\n+++ b/builtin/credential-cache.c\n@@ -137,7 +137,10 @@ static void announce_capabilities(void)\n \tcredential_announce_capabilities(&c, stdout);\n }\n \n-int cmd_credential_cache(int argc, const char **argv, const char *prefix)\n+int cmd_credential_cache(int argc,\n+\t\t\t const char **argv,\n+\t\t\t const char *prefix,\n+\t\t\t struct repository *repo UNUSED)\n {\n \tconst char *socket_path_arg = NULL;\n \tchar *socket_path;\ndiff --git a/builtin/credential-store.c b/builtin/credential-store.c\nindex 97968bfa1c2..128704078e9 100644\n--- a/builtin/credential-store.c\n+++ b/builtin/credential-store.c\n@@ -170,7 +170,10 @@ static void lookup_credential(const struct string_list *fns, struct credential *\n \t\t\treturn; /* Found credential */\n }\n \n-int cmd_credential_store(int argc, const char **argv, const char *prefix)\n+int cmd_credential_store(int argc,\n+\t\t\t const char **argv,\n+\t\t\t const char *prefix,\n+\t\t\t struct repository *repo UNUSED)\n {\n \tconst char * const usage[] = {\n \t\t\"git credential-store [<options>] <action>\",\ndiff --git a/builtin/credential.c b/builtin/credential.c\nindex b72e76dd9a6..796422c6fe7 100644\n--- a/builtin/credential.c\n+++ b/builtin/credential.c\n@@ -6,7 +6,10 @@\n static const char usage_msg[] =\n \t\"git credential (fill|approve|reject)\";\n \n-int cmd_credential(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_credential(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix UNUSED,\n+\t\t   struct repository *repo UNUSED)\n {\n \tconst char *op;\n \tstruct credential c = CREDENTIAL_INIT;\ndiff --git a/builtin/describe.c b/builtin/describe.c\nindex b43093c099f..1c1c250fe0c 100644\n--- a/builtin/describe.c\n+++ b/builtin/describe.c\n@@ -571,7 +571,10 @@ static int option_parse_exact_match(const struct option *opt, const char *arg,\n \treturn 0;\n }\n \n-int cmd_describe(int argc, const char **argv, const char *prefix)\n+int cmd_describe(int argc,\n+\t\t const char **argv,\n+\t\t const char *prefix,\n+\t\t struct repository *repo UNUSED )\n {\n \tint contains = 0;\n \tstruct option options[] = {\n@@ -650,7 +653,7 @@ int cmd_describe(int argc, const char **argv, const char *prefix)\n \t\t\targv_copy[i] = args.v[i];\n \t\targv_copy[args.nr] = NULL;\n \n-\t\tret = cmd_name_rev(args.nr, argv_copy, prefix);\n+\t\tret = cmd_name_rev(args.nr, argv_copy, prefix, the_repository);\n \n \t\tstrvec_clear(&args);\n \t\tfree(argv_copy);\ndiff --git a/builtin/diagnose.c b/builtin/diagnose.c\nindex 4857a4395ba..66a22d918e6 100644\n--- a/builtin/diagnose.c\n+++ b/builtin/diagnose.c\n@@ -11,7 +11,10 @@ static const char * const diagnose_usage[] = {\n \tNULL\n };\n \n-int cmd_diagnose(int argc, const char **argv, const char *prefix)\n+int cmd_diagnose(int argc,\n+\t\t const char **argv,\n+\t\t const char *prefix,\n+\t\t struct repository *repo UNUSED)\n {\n \tstruct strbuf zip_path = STRBUF_INIT;\n \ttime_t now = time(NULL);\ndiff --git a/builtin/diff-files.c b/builtin/diff-files.c\nindex 018011f29ea..7f4f9bcb3eb 100644\n--- a/builtin/diff-files.c\n+++ b/builtin/diff-files.c\n@@ -17,7 +17,10 @@ static const char diff_files_usage[] =\n \"\\n\"\n COMMON_DIFF_OPTIONS_HELP;\n \n-int cmd_diff_files(int argc, const char **argv, const char *prefix)\n+int cmd_diff_files(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tstruct rev_info rev;\n \tint result;\ndiff --git a/builtin/diff-index.c b/builtin/diff-index.c\nindex 685b60284fd..8abec38592f 100644\n--- a/builtin/diff-index.c\n+++ b/builtin/diff-index.c\n@@ -14,7 +14,10 @@ static const char diff_cache_usage[] =\n \"\\n\"\n COMMON_DIFF_OPTIONS_HELP;\n \n-int cmd_diff_index(int argc, const char **argv, const char *prefix)\n+int cmd_diff_index(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tstruct rev_info rev;\n \tunsigned int option = 0;\ndiff --git a/builtin/diff-tree.c b/builtin/diff-tree.c\nindex b8df1d4b79b..841448b023f 100644\n--- a/builtin/diff-tree.c\n+++ b/builtin/diff-tree.c\n@@ -108,7 +108,10 @@ static void diff_tree_tweak_rev(struct rev_info *rev)\n \t}\n }\n \n-int cmd_diff_tree(int argc, const char **argv, const char *prefix)\n+int cmd_diff_tree(int argc,\n+\t\t  const char **argv,\n+\t\t  const char *prefix,\n+\t\t  struct repository *repo UNUSED)\n {\n \tchar line[1000];\n \tstruct object *tree1, *tree2;\ndiff --git a/builtin/diff.c b/builtin/diff.c\nindex 6eac445579b..499b7872dd4 100644\n--- a/builtin/diff.c\n+++ b/builtin/diff.c\n@@ -393,7 +393,10 @@ static void symdiff_release(struct symdiff *sdiff)\n \tbitmap_free(sdiff->skip);\n }\n \n-int cmd_diff(int argc, const char **argv, const char *prefix)\n+int cmd_diff(int argc,\n+\t     const char **argv,\n+\t     const char *prefix,\n+\t     struct repository *repo UNUSED)\n {\n \tint i;\n \tstruct rev_info rev;\ndiff --git a/builtin/difftool.c b/builtin/difftool.c\nindex dcc68e190c2..c8700d67f4d 100644\n--- a/builtin/difftool.c\n+++ b/builtin/difftool.c\n@@ -690,7 +690,10 @@ static int run_file_diff(int prompt, const char *prefix,\n \treturn run_command(child);\n }\n \n-int cmd_difftool(int argc, const char **argv, const char *prefix)\n+int cmd_difftool(int argc,\n+\t\t const char **argv,\n+\t\t const char *prefix,\n+\t\t struct repository *repo UNUSED)\n {\n \tint use_gui_tool = -1, dir_diff = 0, prompt = -1, symlinks = 0,\n \t    tool_help = 0, no_index = 0;\ndiff --git a/builtin/fast-export.c b/builtin/fast-export.c\nindex f253b79322a..1bd5949dd24 100644\n--- a/builtin/fast-export.c\n+++ b/builtin/fast-export.c\n@@ -1180,7 +1180,10 @@ static int parse_opt_anonymize_map(const struct option *opt,\n \treturn 0;\n }\n \n-int cmd_fast_export(int argc, const char **argv, const char *prefix)\n+int cmd_fast_export(int argc,\n+\t\t    const char **argv,\n+\t\t    const char *prefix,\n+\t\t    struct repository *repo UNUSED)\n {\n \tstruct rev_info revs;\n \tstruct commit *commit;\ndiff --git a/builtin/fast-import.c b/builtin/fast-import.c\nindex 2214c105f17..4b9e341aa44 100644\n--- a/builtin/fast-import.c\n+++ b/builtin/fast-import.c\n@@ -3537,7 +3537,10 @@ static void parse_argv(void)\n \tbuild_mark_map(&sub_marks_from, &sub_marks_to);\n }\n \n-int cmd_fast_import(int argc, const char **argv, const char *prefix)\n+int cmd_fast_import(int argc,\n+\t\t    const char **argv,\n+\t\t    const char *prefix,\n+\t\t    struct repository *repo UNUSED)\n {\n \tunsigned int i;\n \ndiff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c\nindex fe404d1305b..f12daa93498 100644\n--- a/builtin/fetch-pack.c\n+++ b/builtin/fetch-pack.c\n@@ -43,7 +43,10 @@ static void add_sought_entry(struct ref ***sought, int *nr, int *alloc,\n \t(*sought)[*nr - 1] = ref;\n }\n \n-int cmd_fetch_pack(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_fetch_pack(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix UNUSED,\n+\t\t   struct repository *repo UNUSED)\n {\n \tint i, ret;\n \tstruct ref *fetched_refs = NULL, *remote_refs = NULL;\ndiff --git a/builtin/fetch.c b/builtin/fetch.c\nindex 55f97134aa8..2385ea4952e 100644\n--- a/builtin/fetch.c\n+++ b/builtin/fetch.c\n@@ -2138,7 +2138,10 @@ static int fetch_one(struct remote *remote, int argc, const char **argv,\n \treturn exit_code;\n }\n \n-int cmd_fetch(int argc, const char **argv, const char *prefix)\n+int cmd_fetch(int argc,\n+\t      const char **argv,\n+\t      const char *prefix,\n+\t      struct repository *repo UNUSED)\n {\n \tstruct fetch_config config = {\n \t\t.display_format = DISPLAY_FORMAT_FULL,\ndiff --git a/builtin/fmt-merge-msg.c b/builtin/fmt-merge-msg.c\nindex 957786d1b3a..1fba4cf5590 100644\n--- a/builtin/fmt-merge-msg.c\n+++ b/builtin/fmt-merge-msg.c\n@@ -9,7 +9,10 @@ static const char * const fmt_merge_msg_usage[] = {\n \tNULL\n };\n \n-int cmd_fmt_merge_msg(int argc, const char **argv, const char *prefix)\n+int cmd_fmt_merge_msg(int argc,\n+\t\t      const char **argv,\n+\t\t      const char *prefix,\n+\t\t      struct repository *repo UNUSED)\n {\n \tchar *inpath = NULL;\n \tconst char *message = NULL;\ndiff --git a/builtin/for-each-ref.c b/builtin/for-each-ref.c\nindex 5517a4a1c08..b1187587135 100644\n--- a/builtin/for-each-ref.c\n+++ b/builtin/for-each-ref.c\n@@ -16,7 +16,10 @@ static char const * const for_each_ref_usage[] = {\n \tNULL\n };\n \n-int cmd_for_each_ref(int argc, const char **argv, const char *prefix)\n+int cmd_for_each_ref(int argc,\n+\t\t     const char **argv,\n+\t\t     const char *prefix,\n+\t\t     struct repository *repo UNUSED)\n {\n \tstruct ref_sorting *sorting;\n \tstruct string_list sorting_options = STRING_LIST_INIT_DUP;\ndiff --git a/builtin/for-each-repo.c b/builtin/for-each-repo.c\nindex c4fa41fda9f..93d82b952e9 100644\n--- a/builtin/for-each-repo.c\n+++ b/builtin/for-each-repo.c\n@@ -29,7 +29,10 @@ static int run_command_on_repo(const char *path, int argc, const char ** argv)\n \treturn run_command(&child);\n }\n \n-int cmd_for_each_repo(int argc, const char **argv, const char *prefix)\n+int cmd_for_each_repo(int argc,\n+\t\t      const char **argv,\n+\t\t      const char *prefix,\n+\t\t      struct repository *repo UNUSED)\n {\n \tstatic const char *config_key = NULL;\n \tint keep_going = 0;\ndiff --git a/builtin/fsck.c b/builtin/fsck.c\nindex 60f4e6fad97..87068cee09d 100644\n--- a/builtin/fsck.c\n+++ b/builtin/fsck.c\n@@ -925,7 +925,10 @@ static struct option fsck_opts[] = {\n \tOPT_END(),\n };\n \n-int cmd_fsck(int argc, const char **argv, const char *prefix)\n+int cmd_fsck(int argc,\n+\t     const char **argv,\n+\t     const char *prefix,\n+\t     struct repository *repo UNUSED)\n {\n \tint i;\n \tstruct object_directory *odb;\ndiff --git a/builtin/fsmonitor--daemon.c b/builtin/fsmonitor--daemon.c\nindex 1593713f4cb..73a4b885661 100644\n--- a/builtin/fsmonitor--daemon.c\n+++ b/builtin/fsmonitor--daemon.c\n@@ -1521,7 +1521,10 @@ static int try_to_start_background_daemon(void)\n \t}\n }\n \n-int cmd_fsmonitor__daemon(int argc, const char **argv, const char *prefix)\n+int cmd_fsmonitor__daemon(int argc,\n+\t\t\t  const char **argv,\n+\t\t\t  const char *prefix,\n+\t\t\t  struct repository *repo UNUSED)\n {\n \tconst char *subcmd;\n \tenum fsmonitor_reason reason;\n@@ -1584,7 +1587,7 @@ int cmd_fsmonitor__daemon(int argc, const char **argv, const char *prefix)\n }\n \n #else\n-int cmd_fsmonitor__daemon(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_fsmonitor__daemon(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED)\n {\n \tstruct option options[] = {\n \t\tOPT_END()\ndiff --git a/builtin/gc.c b/builtin/gc.c\nindex 7dac9714054..4469c058a02 100644\n--- a/builtin/gc.c\n+++ b/builtin/gc.c\n@@ -657,7 +657,10 @@ static void gc_before_repack(struct maintenance_run_opts *opts,\n \t}\n }\n \n-int cmd_gc(int argc, const char **argv, const char *prefix)\n+int cmd_gc(int argc,\n+const char **argv,\n+const char *prefix,\n+struct repository *repo UNUSED)\n {\n \tint aggressive = 0;\n \tint quiet = 0;\n@@ -2890,7 +2893,10 @@ static const char * const builtin_maintenance_usage[] = {\n \tNULL,\n };\n \n-int cmd_maintenance(int argc, const char **argv, const char *prefix)\n+int cmd_maintenance(int argc,\n+\t\t    const char **argv,\n+\t\t    const char *prefix,\n+\t\t    struct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tstruct option builtin_maintenance_options[] = {\ndiff --git a/builtin/get-tar-commit-id.c b/builtin/get-tar-commit-id.c\nindex 7195a072edc..6bec0d1854c 100644\n--- a/builtin/get-tar-commit-id.c\n+++ b/builtin/get-tar-commit-id.c\n@@ -12,7 +12,10 @@ static const char builtin_get_tar_commit_id_usage[] =\n #define RECORDSIZE\t(512)\n #define HEADERSIZE (2 * RECORDSIZE)\n \n-int cmd_get_tar_commit_id(int argc, const char **argv UNUSED, const char *prefix)\n+int cmd_get_tar_commit_id(int argc,\n+\t\t\t  const char **argv UNUSED,\n+\t\t\t  const char *prefix,\n+\t\t\t  struct repository *repo UNUSED)\n {\n \tchar buffer[HEADERSIZE];\n \tstruct ustar_header *header = (struct ustar_header *)buffer;\ndiff --git a/builtin/grep.c b/builtin/grep.c\nindex dfc3c3e8bd2..da11879c637 100644\n--- a/builtin/grep.c\n+++ b/builtin/grep.c\n@@ -888,7 +888,10 @@ static int pattern_callback(const struct option *opt, const char *arg,\n \treturn 0;\n }\n \n-int cmd_grep(int argc, const char **argv, const char *prefix)\n+int cmd_grep(int argc,\n+\t     const char **argv,\n+\t     const char *prefix,\n+\t     struct repository *repo UNUSED)\n {\n \tint hit = 0;\n \tint cached = 0, untracked = 0, opt_exclude = -1;\ndiff --git a/builtin/hash-object.c b/builtin/hash-object.c\nindex c767414a0cc..090daea5cd8 100644\n--- a/builtin/hash-object.c\n+++ b/builtin/hash-object.c\n@@ -84,7 +84,10 @@ static void hash_stdin_paths(const char *type, int no_filters, unsigned flags,\n \tstrbuf_release(&unquoted);\n }\n \n-int cmd_hash_object(int argc, const char **argv, const char *prefix)\n+int cmd_hash_object(int argc,\n+\t\t    const char **argv,\n+\t\t    const char *prefix,\n+\t\t    struct repository *repo UNUSED)\n {\n \tstatic const char * const hash_object_usage[] = {\n \t\tN_(\"git hash-object [-t <type>] [-w] [--path=<file> | --no-filters]\\n\"\ndiff --git a/builtin/help.c b/builtin/help.c\nindex dc1fbe2b986..f7723bdf5c8 100644\n--- a/builtin/help.c\n+++ b/builtin/help.c\n@@ -631,7 +631,10 @@ static void opt_mode_usage(int argc, const char *opt_mode,\n \tno_help_format(opt_mode, fmt);\n }\n \n-int cmd_help(int argc, const char **argv, const char *prefix)\n+int cmd_help(int argc,\n+\t     const char **argv,\n+\t     const char *prefix,\n+\t     struct repository *repo UNUSED)\n {\n \tint nongit;\n \tenum help_format parsed_help_format;\ndiff --git a/builtin/hook.c b/builtin/hook.c\nindex cc37438fdee..f02e2421ac0 100644\n--- a/builtin/hook.c\n+++ b/builtin/hook.c\n@@ -66,7 +66,10 @@ usage:\n \tusage_with_options(builtin_hook_run_usage, run_options);\n }\n \n-int cmd_hook(int argc, const char **argv, const char *prefix)\n+int cmd_hook(int argc,\n+\t     const char **argv,\n+\t     const char *prefix,\n+\t     struct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tstruct option builtin_hook_options[] = {\ndiff --git a/builtin/index-pack.c b/builtin/index-pack.c\nindex 763b01372aa..ece4648d047 100644\n--- a/builtin/index-pack.c\n+++ b/builtin/index-pack.c\n@@ -1718,7 +1718,10 @@ static void show_pack_info(int stat_only)\n \tfree(chain_histogram);\n }\n \n-int cmd_index_pack(int argc, const char **argv, const char *prefix)\n+int cmd_index_pack(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tint i, fix_thin_pack = 0, verify = 0, stat_only = 0, rev_index;\n \tconst char *curr_index;\ndiff --git a/builtin/init-db.c b/builtin/init-db.c\nindex 582dcf20f86..94bd6075095 100644\n--- a/builtin/init-db.c\n+++ b/builtin/init-db.c\n@@ -70,7 +70,10 @@ static const char *const init_db_usage[] = {\n  * On the other hand, it might just make lookup slower and messier. You\n  * be the judge.  The default case is to have one DB per managed directory.\n  */\n-int cmd_init_db(int argc, const char **argv, const char *prefix)\n+int cmd_init_db(int argc,\n+\t\tconst char **argv,\n+\t\tconst char *prefix,\n+\t\tstruct repository *repo UNUSED)\n {\n \tconst char *git_dir;\n \tconst char *real_git_dir = NULL;\ndiff --git a/builtin/interpret-trailers.c b/builtin/interpret-trailers.c\nindex 1d969494cf5..fb93e54e5ea 100644\n--- a/builtin/interpret-trailers.c\n+++ b/builtin/interpret-trailers.c\n@@ -188,7 +188,10 @@ static void interpret_trailers(const struct process_trailer_options *opts,\n \tstrbuf_release(&sb);\n }\n \n-int cmd_interpret_trailers(int argc, const char **argv, const char *prefix)\n+int cmd_interpret_trailers(int argc,\n+\t\t\t   const char **argv,\n+\t\t\t   const char *prefix,\n+\t\t\t   struct repository *repo UNUSED)\n {\n \tstruct process_trailer_options opts = PROCESS_TRAILER_OPTIONS_INIT;\n \tLIST_HEAD(trailers);\ndiff --git a/builtin/log.c b/builtin/log.c\nindex 36769bab3b6..67140575f4b 100644\n--- a/builtin/log.c\n+++ b/builtin/log.c\n@@ -637,7 +637,10 @@ static int git_log_config(const char *var, const char *value,\n \treturn git_diff_ui_config(var, value, ctx, cb);\n }\n \n-int cmd_whatchanged(int argc, const char **argv, const char *prefix)\n+int cmd_whatchanged(int argc,\n+\t\t    const char **argv,\n+\t\t    const char *prefix,\n+\t\t    struct repository *repo UNUSED)\n {\n \tstruct log_config cfg;\n \tstruct rev_info rev;\n@@ -758,7 +761,10 @@ static void show_setup_revisions_tweak(struct rev_info *rev)\n \t\trev->diffopt.output_format = DIFF_FORMAT_PATCH;\n }\n \n-int cmd_show(int argc, const char **argv, const char *prefix)\n+int cmd_show(int argc,\n+\t     const char **argv,\n+\t     const char *prefix,\n+\t     struct repository *repo UNUSED)\n {\n \tstruct log_config cfg;\n \tstruct rev_info rev;\n@@ -874,7 +880,10 @@ int cmd_show(int argc, const char **argv, const char *prefix)\n /*\n  * This is equivalent to \"git log -g --abbrev-commit --pretty=oneline\"\n  */\n-int cmd_log_reflog(int argc, const char **argv, const char *prefix)\n+int cmd_log_reflog(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tstruct log_config cfg;\n \tstruct rev_info rev;\n@@ -916,7 +925,10 @@ static void log_setup_revisions_tweak(struct rev_info *rev)\n \t\tdiff_merges_default_to_first_parent(rev);\n }\n \n-int cmd_log(int argc, const char **argv, const char *prefix)\n+int cmd_log(int argc,\n+\t    const char **argv,\n+\t    const char *prefix,\n+\t    struct repository *repo UNUSED)\n {\n \tstruct log_config cfg;\n \tstruct rev_info rev;\n@@ -1986,7 +1998,10 @@ static void infer_range_diff_ranges(struct strbuf *r1,\n \t}\n }\n \n-int cmd_format_patch(int argc, const char **argv, const char *prefix)\n+int cmd_format_patch(int argc,\n+\t\t     const char **argv,\n+\t\t     const char *prefix,\n+\t\t     struct repository *repo UNUSED)\n {\n \tstruct format_config cfg;\n \tstruct commit *commit;\n@@ -2619,7 +2634,10 @@ static void print_commit(char sign, struct commit *commit, int verbose,\n \t}\n }\n \n-int cmd_cherry(int argc, const char **argv, const char *prefix)\n+int cmd_cherry(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tstruct rev_info revs;\n \tstruct patch_ids ids;\ndiff --git a/builtin/ls-files.c b/builtin/ls-files.c\nindex 6eeb5cba783..7f45cb62cf6 100644\n--- a/builtin/ls-files.c\n+++ b/builtin/ls-files.c\n@@ -561,7 +561,10 @@ static int option_parse_exclude_standard(const struct option *opt,\n \treturn 0;\n }\n \n-int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix)\n+int cmd_ls_files(int argc,\n+\t\t const char **argv,\n+\t\t const char *cmd_prefix,\n+\t\t struct repository *repo UNUSED)\n {\n \tint require_work_tree = 0, show_tag = 0, i;\n \tchar *max_prefix;\ndiff --git a/builtin/ls-remote.c b/builtin/ls-remote.c\nindex 0a491595ca8..f2c2854d0c3 100644\n--- a/builtin/ls-remote.c\n+++ b/builtin/ls-remote.c\n@@ -37,7 +37,10 @@ static int tail_match(const struct strvec *pattern, const char *path)\n \treturn 0;\n }\n \n-int cmd_ls_remote(int argc, const char **argv, const char *prefix)\n+int cmd_ls_remote(int argc,\n+\t\t  const char **argv,\n+\t\t  const char *prefix,\n+\t\t  struct repository *repo UNUSED)\n {\n \tconst char *dest = NULL;\n \tunsigned flags = 0;\ndiff --git a/builtin/ls-tree.c b/builtin/ls-tree.c\nindex bf372c67d77..363cb948d92 100644\n--- a/builtin/ls-tree.c\n+++ b/builtin/ls-tree.c\n@@ -329,7 +329,10 @@ static struct ls_tree_cmdmode_to_fmt ls_tree_cmdmode_format[] = {\n \t},\n };\n \n-int cmd_ls_tree(int argc, const char **argv, const char *prefix)\n+int cmd_ls_tree(int argc,\n+\t\tconst char **argv,\n+\t\tconst char *prefix,\n+\t\tstruct repository *repo UNUSED)\n {\n \tstruct object_id oid;\n \tstruct tree *tree;\ndiff --git a/builtin/mailinfo.c b/builtin/mailinfo.c\nindex 53a22645da5..00bfcd1afa0 100644\n--- a/builtin/mailinfo.c\n+++ b/builtin/mailinfo.c\n@@ -48,7 +48,10 @@ static int parse_opt_quoted_cr(const struct option *opt, const char *arg, int un\n \treturn 0;\n }\n \n-int cmd_mailinfo(int argc, const char **argv, const char *prefix)\n+int cmd_mailinfo(int argc,\n+\t\t const char **argv,\n+\t\t const char *prefix,\n+\t\t struct repository *repo UNUSED)\n {\n \tstruct metainfo_charset meta_charset;\n \tstruct mailinfo mi;\ndiff --git a/builtin/mailsplit.c b/builtin/mailsplit.c\nindex fe6dbc5d053..b8f7150ce9a 100644\n--- a/builtin/mailsplit.c\n+++ b/builtin/mailsplit.c\n@@ -269,7 +269,10 @@ out:\n \treturn ret;\n }\n \n-int cmd_mailsplit(int argc, const char **argv, const char *prefix)\n+int cmd_mailsplit(int argc,\n+\t\t  const char **argv,\n+\t\t  const char *prefix,\n+\t\t  struct repository *repo UNUSED)\n {\n \tint nr = 0, nr_prec = 4, num = 0;\n \tint allow_bare = 0;\ndiff --git a/builtin/merge-base.c b/builtin/merge-base.c\nindex 5a8e7295029..afeae8d8346 100644\n--- a/builtin/merge-base.c\n+++ b/builtin/merge-base.c\n@@ -143,7 +143,10 @@ static int handle_fork_point(int argc, const char **argv)\n \treturn 0;\n }\n \n-int cmd_merge_base(int argc, const char **argv, const char *prefix)\n+int cmd_merge_base(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tstruct commit **rev;\n \tint rev_nr = 0;\ndiff --git a/builtin/merge-file.c b/builtin/merge-file.c\nindex 1f987334a31..f785813ddae 100644\n--- a/builtin/merge-file.c\n+++ b/builtin/merge-file.c\n@@ -53,7 +53,10 @@ static int diff_algorithm_cb(const struct option *opt,\n \treturn 0;\n }\n \n-int cmd_merge_file(int argc, const char **argv, const char *prefix)\n+int cmd_merge_file(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tconst char *names[3] = { 0 };\n \tmmfile_t mmfs[3] = { 0 };\ndiff --git a/builtin/merge-index.c b/builtin/merge-index.c\nindex 0fabe3f6bb2..1309a8ff471 100644\n--- a/builtin/merge-index.c\n+++ b/builtin/merge-index.c\n@@ -73,7 +73,10 @@ static void merge_all(void)\n \t}\n }\n \n-int cmd_merge_index(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_merge_index(int argc,\n+\t\t    const char **argv,\n+\t\t    const char *prefix UNUSED,\n+\t\t    struct repository *repo UNUSED)\n {\n \tint i, force_file = 0;\n \ndiff --git a/builtin/merge-ours.c b/builtin/merge-ours.c\nindex 932924e5d0e..62267f12dd8 100644\n--- a/builtin/merge-ours.c\n+++ b/builtin/merge-ours.c\n@@ -15,7 +15,10 @@\n static const char builtin_merge_ours_usage[] =\n \t\"git merge-ours <base>... -- HEAD <remote>...\";\n \n-int cmd_merge_ours(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_merge_ours(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix UNUSED,\n+\t\t   struct repository *repo UNUSED)\n {\n \tif (argc == 2 && !strcmp(argv[1], \"-h\"))\n \t\tusage(builtin_merge_ours_usage);\ndiff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c\nindex e951b09805d..2bd3fb0e553 100644\n--- a/builtin/merge-recursive.c\n+++ b/builtin/merge-recursive.c\n@@ -21,7 +21,10 @@ static char *better_branch_name(const char *branch)\n \treturn xstrdup(name ? name : branch);\n }\n \n-int cmd_merge_recursive(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_merge_recursive(int argc,\n+\t\t\tconst char **argv,\n+\t\t\tconst char *prefix UNUSED,\n+\t\t\tstruct repository *repo UNUSED)\n {\n \tstruct object_id bases[21];\n \tunsigned bases_count = 0;\ndiff --git a/builtin/merge-tree.c b/builtin/merge-tree.c\nindex c00469ed3db..aeaec9d99f3 100644\n--- a/builtin/merge-tree.c\n+++ b/builtin/merge-tree.c\n@@ -526,7 +526,10 @@ static int real_merge(struct merge_tree_options *o,\n \treturn !result.clean; /* result.clean < 0 handled above */\n }\n \n-int cmd_merge_tree(int argc, const char **argv, const char *prefix)\n+int cmd_merge_tree(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tstruct merge_tree_options o = { .show_messages = -1 };\n \tstruct strvec xopts = STRVEC_INIT;\ndiff --git a/builtin/merge.c b/builtin/merge.c\nindex 662a49a0e8c..fd6dc00d6c0 100644\n--- a/builtin/merge.c\n+++ b/builtin/merge.c\n@@ -1275,7 +1275,10 @@ static int merging_a_throwaway_tag(struct commit *commit)\n \treturn is_throwaway_tag;\n }\n \n-int cmd_merge(int argc, const char **argv, const char *prefix)\n+int cmd_merge(int argc,\n+\t      const char **argv,\n+\t      const char *prefix,\n+\t      struct repository *repo UNUSED)\n {\n \tstruct object_id result_tree, stash, head_oid;\n \tstruct commit *head_commit;\n@@ -1347,7 +1350,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)\n \t\t\t\t\tREF_NO_DEREF);\n \n \t\t/* Invoke 'git reset --merge' */\n-\t\tret = cmd_reset(nargc, nargv, prefix);\n+\t\tret = cmd_reset(nargc, nargv, prefix, the_repository);\n \n \t\tif (!is_null_oid(&stash_oid)) {\n \t\t\toid_to_hex_r(stash_oid_hex, &stash_oid);\n@@ -1379,7 +1382,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)\n \t\t\tdie(_(\"There is no merge in progress (MERGE_HEAD missing).\"));\n \n \t\t/* Invoke 'git commit' */\n-\t\tret = cmd_commit(nargc, nargv, prefix);\n+\t\tret = cmd_commit(nargc, nargv, prefix, the_repository);\n \t\tgoto done;\n \t}\n \ndiff --git a/builtin/mktag.c b/builtin/mktag.c\nindex c6b644219fb..5cd8a3e6fa0 100644\n--- a/builtin/mktag.c\n+++ b/builtin/mktag.c\n@@ -71,7 +71,10 @@ static int verify_object_in_tag(struct object_id *tagged_oid, int *tagged_type)\n \treturn ret;\n }\n \n-int cmd_mktag(int argc, const char **argv, const char *prefix)\n+int cmd_mktag(int argc,\n+\t      const char **argv,\n+\t      const char *prefix,\n+\t      struct repository *repo UNUSED)\n {\n \tstatic struct option builtin_mktag_options[] = {\n \t\tOPT_BOOL(0, \"strict\", &option_strict,\ndiff --git a/builtin/mktree.c b/builtin/mktree.c\nindex 9a22d4e2773..72a1af1bca5 100644\n--- a/builtin/mktree.c\n+++ b/builtin/mktree.c\n@@ -150,7 +150,10 @@ static void mktree_line(char *buf, int nul_term_line, int allow_missing)\n \tfree(to_free);\n }\n \n-int cmd_mktree(int ac, const char **av, const char *prefix)\n+int cmd_mktree(int ac,\n+\t       const char **av,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tstruct strbuf sb = STRBUF_INIT;\n \tstruct object_id oid;\n@@ -199,5 +202,6 @@ int cmd_mktree(int ac, const char **av, const char *prefix)\n \t\tused=0; /* reset tree entry buffer for re-use in batch mode */\n \t}\n \tstrbuf_release(&sb);\n+\n \treturn 0;\n }\ndiff --git a/builtin/multi-pack-index.c b/builtin/multi-pack-index.c\nindex 8805cbbeb3b..154fc77075f 100644\n--- a/builtin/multi-pack-index.c\n+++ b/builtin/multi-pack-index.c\n@@ -267,8 +267,10 @@ static int cmd_multi_pack_index_repack(int argc, const char **argv,\n \t\t\t   (size_t)opts.batch_size, opts.flags);\n }\n \n-int cmd_multi_pack_index(int argc, const char **argv,\n-\t\t\t const char *prefix)\n+int cmd_multi_pack_index(int argc,\n+\t\t\t const char **argv,\n+\t\t\t const char *prefix,\n+\t\t\t struct repository *repo UNUSED)\n {\n \tint res;\n \tparse_opt_subcommand_fn *fn = NULL;\ndiff --git a/builtin/mv.c b/builtin/mv.c\nindex 6c69033c5f5..6e2eb9cf4b8 100644\n--- a/builtin/mv.c\n+++ b/builtin/mv.c\n@@ -178,7 +178,10 @@ static void remove_empty_src_dirs(const char **src_dir, size_t src_dir_nr)\n \tstrbuf_release(&a_src_dir);\n }\n \n-int cmd_mv(int argc, const char **argv, const char *prefix)\n+int cmd_mv(int argc,\n+\t   const char **argv,\n+\t   const char *prefix,\n+\t   struct repository *repo UNUSED)\n {\n \tint i, flags, gitmodules_modified = 0;\n \tint verbose = 0, show_only = 0, force = 0, ignore_errors = 0, ignore_sparse = 0;\ndiff --git a/builtin/name-rev.c b/builtin/name-rev.c\nindex a468ef84c37..19d92fb382d 100644\n--- a/builtin/name-rev.c\n+++ b/builtin/name-rev.c\n@@ -558,7 +558,10 @@ static void name_rev_line(char *p, struct name_ref_data *data)\n \tstrbuf_release(&buf);\n }\n \n-int cmd_name_rev(int argc, const char **argv, const char *prefix)\n+int cmd_name_rev(int argc,\n+\t\t const char **argv,\n+\t\t const char *prefix,\n+\t\t struct repository *repo UNUSED)\n {\n \tstruct mem_pool string_pool;\n \tstruct object_array revs = OBJECT_ARRAY_INIT;\ndiff --git a/builtin/notes.c b/builtin/notes.c\nindex 04f9dfb7fbd..49d8364af60 100644\n--- a/builtin/notes.c\n+++ b/builtin/notes.c\n@@ -1096,7 +1096,10 @@ static int get_ref(int argc, const char **argv, const char *prefix)\n \treturn 0;\n }\n \n-int cmd_notes(int argc, const char **argv, const char *prefix)\n+int cmd_notes(int argc,\n+\t      const char **argv,\n+\t      const char *prefix,\n+\t      struct repository *repo UNUSED)\n {\n \tconst char *override_notes_ref = NULL;\n \tparse_opt_subcommand_fn *fn = NULL;\ndiff --git a/builtin/pack-objects.c b/builtin/pack-objects.c\nindex c6e2852d3ca..0260a9886aa 100644\n--- a/builtin/pack-objects.c\n+++ b/builtin/pack-objects.c\n@@ -4312,7 +4312,10 @@ static int option_parse_cruft_expiration(const struct option *opt UNUSED,\n \treturn 0;\n }\n \n-int cmd_pack_objects(int argc, const char **argv, const char *prefix)\n+int cmd_pack_objects(int argc,\n+\t\t     const char **argv,\n+\t\t     const char *prefix,\n+\t\t     struct repository *repo UNUSED)\n {\n \tint use_internal_rev_list = 0;\n \tint shallow = 0;\ndiff --git a/builtin/pack-redundant.c b/builtin/pack-redundant.c\nindex dd9bf35f5b8..84f0d83affb 100644\n--- a/builtin/pack-redundant.c\n+++ b/builtin/pack-redundant.c\n@@ -561,11 +561,8 @@ static void load_all(void)\n \t}\n }\n \n-int cmd_pack_redundant(int argc, const char **argv, const char *prefix UNUSED)\n-{\n-\tint i;\n-\tint i_still_use_this = 0;\n-\tstruct pack_list *min = NULL, *red, *pl;\n+int cmd_pack_redundant(int argc, const char **argv, const char *prefix UNUSED, struct repository *repo UNUSED) {\n+\tint i; int i_still_use_this = 0; struct pack_list *min = NULL, *red, *pl;\n \tstruct llist *ignore;\n \tstruct object_id *oid;\n \tchar buf[GIT_MAX_HEXSZ + 2]; /* hex hash + \\n + \\0 */\ndiff --git a/builtin/pack-refs.c b/builtin/pack-refs.c\nindex db408256663..67dabb39756 100644\n--- a/builtin/pack-refs.c\n+++ b/builtin/pack-refs.c\n@@ -11,7 +11,10 @@ static char const * const pack_refs_usage[] = {\n \tNULL\n };\n \n-int cmd_pack_refs(int argc, const char **argv, const char *prefix)\n+int cmd_pack_refs(int argc,\n+\t\t  const char **argv,\n+\t\t  const char *prefix,\n+\t\t  struct repository *repo UNUSED)\n {\n \tstruct ref_exclusions excludes = REF_EXCLUSIONS_INIT;\n \tstruct string_list included_refs = STRING_LIST_INIT_NODUP;\ndiff --git a/builtin/patch-id.c b/builtin/patch-id.c\nindex 35c1179f7e9..fa31a1b7a60 100644\n--- a/builtin/patch-id.c\n+++ b/builtin/patch-id.c\n@@ -260,7 +260,10 @@ static int git_patch_id_config(const char *var, const char *value,\n \treturn git_default_config(var, value, ctx, cb);\n }\n \n-int cmd_patch_id(int argc, const char **argv, const char *prefix)\n+int cmd_patch_id(int argc,\n+\t\t const char **argv,\n+\t\t const char *prefix,\n+\t\t struct repository *repo UNUSED)\n {\n \t/* if nothing is set, default to unstable */\n \tstruct patch_id_opts config = {0, 0};\ndiff --git a/builtin/prune-packed.c b/builtin/prune-packed.c\nindex ca3578e1588..4d63f26b0a1 100644\n--- a/builtin/prune-packed.c\n+++ b/builtin/prune-packed.c\n@@ -8,7 +8,10 @@ static const char * const prune_packed_usage[] = {\n \tNULL\n };\n \n-int cmd_prune_packed(int argc, const char **argv, const char *prefix)\n+int cmd_prune_packed(int argc,\n+\t\t     const char **argv,\n+\t\t     const char *prefix,\n+\t\t     struct repository *repo UNUSED)\n {\n \tint opts = isatty(2) ? PRUNE_PACKED_VERBOSE : 0;\n \tconst struct option prune_packed_options[] = {\ndiff --git a/builtin/prune.c b/builtin/prune.c\nindex 57fe31467fe..cbd4c38fa0a 100644\n--- a/builtin/prune.c\n+++ b/builtin/prune.c\n@@ -147,7 +147,10 @@ static void remove_temporary_files(const char *path)\n \tclosedir(dir);\n }\n \n-int cmd_prune(int argc, const char **argv, const char *prefix)\n+int cmd_prune(int argc,\n+\t      const char **argv,\n+\t      const char *prefix,\n+\t      struct repository *repo UNUSED)\n {\n \tstruct rev_info revs;\n \tint exclude_promisor_objects = 0;\ndiff --git a/builtin/pull.c b/builtin/pull.c\nindex 4c54d8196fa..1a926f0b0d7 100644\n--- a/builtin/pull.c\n+++ b/builtin/pull.c\n@@ -977,7 +977,10 @@ static void show_advice_pull_non_ff(void)\n \t\t \"invocation.\\n\"));\n }\n \n-int cmd_pull(int argc, const char **argv, const char *prefix)\n+int cmd_pull(int argc,\n+\t     const char **argv,\n+\t     const char *prefix,\n+\t     struct repository *repository UNUSED)\n {\n \tconst char *repo, **refspecs;\n \tstruct oid_array merge_heads = OID_ARRAY_INIT;\ndiff --git a/builtin/push.c b/builtin/push.c\nindex 7a67398124f..9636ad52f4d 100644\n--- a/builtin/push.c\n+++ b/builtin/push.c\n@@ -546,7 +546,10 @@ static int git_push_config(const char *k, const char *v,\n \treturn git_default_config(k, v, ctx, NULL);\n }\n \n-int cmd_push(int argc, const char **argv, const char *prefix)\n+int cmd_push(int argc,\n+\t     const char **argv,\n+\t     const char *prefix,\n+\t     struct repository *repository UNUSED)\n {\n \tint flags = 0;\n \tint tags = 0;\ndiff --git a/builtin/range-diff.c b/builtin/range-diff.c\nindex f02cbac087d..3e67259aecc 100644\n--- a/builtin/range-diff.c\n+++ b/builtin/range-diff.c\n@@ -13,7 +13,10 @@ N_(\"git range-diff [<options>] <base> <old-tip> <new-tip>\"),\n NULL\n };\n \n-int cmd_range_diff(int argc, const char **argv, const char *prefix)\n+int cmd_range_diff(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tstruct diff_options diffopt = { NULL };\n \tstruct strvec other_arg = STRVEC_INIT;\ndiff --git a/builtin/read-tree.c b/builtin/read-tree.c\nindex a8cf8504b8a..89410db6a7a 100644\n--- a/builtin/read-tree.c\n+++ b/builtin/read-tree.c\n@@ -108,7 +108,10 @@ static int git_read_tree_config(const char *var, const char *value,\n \treturn git_default_config(var, value, ctx, cb);\n }\n \n-int cmd_read_tree(int argc, const char **argv, const char *cmd_prefix)\n+int cmd_read_tree(int argc,\n+\t\t  const char **argv,\n+\t\t  const char *cmd_prefix,\n+\t\t  struct repository *repo UNUSED)\n {\n \tint i, stage = 0;\n \tstruct object_id oid;\ndiff --git a/builtin/rebase.c b/builtin/rebase.c\nindex a2c96c080e1..727d9df847f 100644\n--- a/builtin/rebase.c\n+++ b/builtin/rebase.c\n@@ -1063,7 +1063,10 @@ static int check_exec_cmd(const char *cmd)\n \treturn 0;\n }\n \n-int cmd_rebase(int argc, const char **argv, const char *prefix)\n+int cmd_rebase(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tstruct rebase_options options = REBASE_OPTIONS_INIT;\n \tconst char *branch_name;\ndiff --git a/builtin/receive-pack.c b/builtin/receive-pack.c\nindex 3f35140e489..36a6229c2a4 100644\n--- a/builtin/receive-pack.c\n+++ b/builtin/receive-pack.c\n@@ -2480,7 +2480,10 @@ static int delete_only(struct command *commands)\n \treturn 1;\n }\n \n-int cmd_receive_pack(int argc, const char **argv, const char *prefix)\n+int cmd_receive_pack(int argc,\n+\t\t     const char **argv,\n+\t\t     const char *prefix,\n+\t\t     struct repository *repo UNUSED)\n {\n \tint advertise_refs = 0;\n \tstruct command *commands;\ndiff --git a/builtin/reflog.c b/builtin/reflog.c\nindex 0d2ff95c6e7..6250f5ad49f 100644\n--- a/builtin/reflog.c\n+++ b/builtin/reflog.c\n@@ -244,7 +244,7 @@ static int cmd_reflog_show(int argc, const char **argv, const char *prefix)\n \t\t      PARSE_OPT_KEEP_DASHDASH | PARSE_OPT_KEEP_ARGV0 |\n \t\t      PARSE_OPT_KEEP_UNKNOWN_OPT);\n \n-\treturn cmd_log_reflog(argc, argv, prefix);\n+\treturn cmd_log_reflog(argc, argv, prefix, the_repository);\n }\n \n static int show_reflog(const char *refname, void *cb_data UNUSED)\n@@ -447,7 +447,10 @@ static int cmd_reflog_exists(int argc, const char **argv, const char *prefix)\n  * main \"reflog\"\n  */\n \n-int cmd_reflog(int argc, const char **argv, const char *prefix)\n+int cmd_reflog(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repository)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tstruct option options[] = {\n@@ -466,5 +469,5 @@ int cmd_reflog(int argc, const char **argv, const char *prefix)\n \tif (fn)\n \t\treturn fn(argc - 1, argv + 1, prefix);\n \telse\n-\t\treturn cmd_log_reflog(argc, argv, prefix);\n+\t\treturn cmd_log_reflog(argc, argv, prefix, repository);\n }\ndiff --git a/builtin/refs.c b/builtin/refs.c\nindex 131f98be986..70bca724d2a 100644\n--- a/builtin/refs.c\n+++ b/builtin/refs.c\n@@ -90,7 +90,10 @@ static int cmd_refs_verify(int argc, const char **argv, const char *prefix)\n \treturn ret;\n }\n \n-int cmd_refs(int argc, const char **argv, const char *prefix)\n+int cmd_refs(int argc,\n+\t     const char **argv,\n+\t     const char *prefix,\n+\t     struct repository *repo UNUSED)\n {\n \tconst char * const refs_usage[] = {\n \t\tREFS_MIGRATE_USAGE,\ndiff --git a/builtin/remote-ext.c b/builtin/remote-ext.c\nindex 282782eccdd..33c8ae0fc7d 100644\n--- a/builtin/remote-ext.c\n+++ b/builtin/remote-ext.c\n@@ -195,7 +195,10 @@ static int command_loop(const char *child)\n \t}\n }\n \n-int cmd_remote_ext(int argc, const char **argv, const char *prefix)\n+int cmd_remote_ext(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tBUG_ON_NON_EMPTY_PREFIX(prefix);\n \ndiff --git a/builtin/remote-fd.c b/builtin/remote-fd.c\nindex 9020fab9c58..ae896eda57b 100644\n--- a/builtin/remote-fd.c\n+++ b/builtin/remote-fd.c\n@@ -53,7 +53,10 @@ static void command_loop(int input_fd, int output_fd)\n \t}\n }\n \n-int cmd_remote_fd(int argc, const char **argv, const char *prefix)\n+int cmd_remote_fd(int argc,\n+\t\t  const char **argv,\n+\t\t  const char *prefix,\n+\t\t  struct repository *repo UNUSED)\n {\n \tint input_fd = -1;\n \tint output_fd = -1;\ndiff --git a/builtin/remote.c b/builtin/remote.c\nindex 0acc547d691..a73eea9ae4c 100644\n--- a/builtin/remote.c\n+++ b/builtin/remote.c\n@@ -1761,7 +1761,10 @@ out:\n \treturn 0;\n }\n \n-int cmd_remote(int argc, const char **argv, const char *prefix)\n+int cmd_remote(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tstruct option options[] = {\ndiff --git a/builtin/repack.c b/builtin/repack.c\nindex 8bb875532b4..b0c7dd14338 100644\n--- a/builtin/repack.c\n+++ b/builtin/repack.c\n@@ -1134,7 +1134,10 @@ static const char *find_pack_prefix(const char *packdir, const char *packtmp)\n \treturn pack_prefix;\n }\n \n-int cmd_repack(int argc, const char **argv, const char *prefix)\n+int cmd_repack(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tstruct child_process cmd = CHILD_PROCESS_INIT;\n \tstruct string_list_item *item;\ndiff --git a/builtin/replace.c b/builtin/replace.c\nindex 34cc4672bc1..293ae6d327f 100644\n--- a/builtin/replace.c\n+++ b/builtin/replace.c\n@@ -545,7 +545,10 @@ static int convert_graft_file(int force)\n \treturn -1;\n }\n \n-int cmd_replace(int argc, const char **argv, const char *prefix)\n+int cmd_replace(int argc,\n+\t\tconst char **argv,\n+\t\tconst char *prefix,\n+\t\tstruct repository *repo UNUSED)\n {\n \tint force = 0;\n \tint raw = 0;\ndiff --git a/builtin/replay.c b/builtin/replay.c\nindex 138198ce9ca..c8e9098fc12 100644\n--- a/builtin/replay.c\n+++ b/builtin/replay.c\n@@ -274,7 +274,10 @@ static struct commit *pick_regular_commit(struct commit *pickme,\n \treturn create_commit(result->tree, pickme, replayed_base);\n }\n \n-int cmd_replay(int argc, const char **argv, const char *prefix)\n+int cmd_replay(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tconst char *advance_name_opt = NULL;\n \tchar *advance_name = NULL;\ndiff --git a/builtin/rerere.c b/builtin/rerere.c\nindex 81b65ffa39c..ae345155834 100644\n--- a/builtin/rerere.c\n+++ b/builtin/rerere.c\n@@ -48,7 +48,10 @@ static int diff_two(const char *file1, const char *label1,\n \treturn ret;\n }\n \n-int cmd_rerere(int argc, const char **argv, const char *prefix)\n+int cmd_rerere(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tstruct string_list merge_rr = STRING_LIST_INIT_DUP;\n \tint i, autoupdate = -1, flags = 0;\ndiff --git a/builtin/reset.c b/builtin/reset.c\nindex 5f941fb3a29..75529072606 100644\n--- a/builtin/reset.c\n+++ b/builtin/reset.c\n@@ -330,7 +330,10 @@ static int git_reset_config(const char *var, const char *value,\n \treturn git_default_config(var, value, ctx, cb);\n }\n \n-int cmd_reset(int argc, const char **argv, const char *prefix)\n+int cmd_reset(int argc,\n+\t      const char **argv,\n+\t      const char *prefix,\n+\t      struct repository *repo UNUSED)\n {\n \tint reset_type = NONE, update_ref_status = 0, quiet = 0;\n \tint no_refresh = 0;\ndiff --git a/builtin/rev-list.c b/builtin/rev-list.c\nindex 97d077a9943..a4186d47ce3 100644\n--- a/builtin/rev-list.c\n+++ b/builtin/rev-list.c\n@@ -513,7 +513,10 @@ static int try_bitmap_disk_usage(struct rev_info *revs,\n \treturn 0;\n }\n \n-int cmd_rev_list(int argc, const char **argv, const char *prefix)\n+int cmd_rev_list(int argc,\n+\t\t const char **argv,\n+\t\t const char *prefix,\n+\t\t struct repository *repo UNUSED)\n {\n \tstruct rev_info revs;\n \tstruct rev_list_info info;\ndiff --git a/builtin/rev-parse.c b/builtin/rev-parse.c\nindex 4285dc34a7b..26190aaa3ed 100644\n--- a/builtin/rev-parse.c\n+++ b/builtin/rev-parse.c\n@@ -688,7 +688,10 @@ static void print_path(const char *path, const char *prefix, enum format_type fo\n \tfree(cwd);\n }\n \n-int cmd_rev_parse(int argc, const char **argv, const char *prefix)\n+int cmd_rev_parse(int argc,\n+\t\t  const char **argv,\n+\t\t  const char *prefix,\n+\t\t  struct repository *repo UNUSED)\n {\n \tint i, as_is = 0, verify = 0, quiet = 0, revs_count = 0, type = 0;\n \tconst struct git_hash_algo *output_algo = NULL;\ndiff --git a/builtin/revert.c b/builtin/revert.c\nindex 7bf2b4e11d6..5f2ec3ade73 100644\n--- a/builtin/revert.c\n+++ b/builtin/revert.c\n@@ -261,7 +261,10 @@ static int run_sequencer(int argc, const char **argv, const char *prefix,\n \treturn sequencer_pick_revisions(the_repository, opts);\n }\n \n-int cmd_revert(int argc, const char **argv, const char *prefix)\n+int cmd_revert(int argc,\n+\t       const char **argv,\n+\t       const char *prefix,\n+\t       struct repository *repo UNUSED)\n {\n \tstruct replay_opts opts = REPLAY_OPTS_INIT;\n \tint res;\n@@ -275,7 +278,10 @@ int cmd_revert(int argc, const char **argv, const char *prefix)\n \treturn res;\n }\n \n-int cmd_cherry_pick(int argc, const char **argv, const char *prefix)\n+int cmd_cherry_pick(int argc,\n+const char **argv,\n+const char *prefix,\n+struct repository *repo UNUSED)\n {\n \tstruct replay_opts opts = REPLAY_OPTS_INIT;\n \tint res;\ndiff --git a/builtin/rm.c b/builtin/rm.c\nindex 0e79cbab62b..59077efa4b4 100644\n--- a/builtin/rm.c\n+++ b/builtin/rm.c\n@@ -261,7 +261,10 @@ static struct option builtin_rm_options[] = {\n \tOPT_END(),\n };\n \n-int cmd_rm(int argc, const char **argv, const char *prefix)\n+int cmd_rm(int argc,\n+\t   const char **argv,\n+\t   const char *prefix,\n+\t   struct repository *repo UNUSED)\n {\n \tstruct lock_file lock_file = LOCK_INIT;\n \tint i, ret = 0;\ndiff --git a/builtin/send-pack.c b/builtin/send-pack.c\nindex ef0df808249..522c2f4d133 100644\n--- a/builtin/send-pack.c\n+++ b/builtin/send-pack.c\n@@ -147,7 +147,10 @@ static int send_pack_config(const char *k, const char *v,\n \treturn git_default_config(k, v, ctx, cb);\n }\n \n-int cmd_send_pack(int argc, const char **argv, const char *prefix)\n+int cmd_send_pack(int argc,\n+\t\t  const char **argv,\n+\t\t  const char *prefix,\n+\t\t  struct repository *repo UNUSED)\n {\n \tstruct refspec rs = REFSPEC_INIT_PUSH;\n \tconst char *remote_name = NULL;\ndiff --git a/builtin/shortlog.c b/builtin/shortlog.c\nindex b529608c923..70eb7890334 100644\n--- a/builtin/shortlog.c\n+++ b/builtin/shortlog.c\n@@ -378,7 +378,10 @@ void shortlog_finish_setup(struct shortlog *log)\n \tstring_list_sort(&log->trailers);\n }\n \n-int cmd_shortlog(int argc, const char **argv, const char *prefix)\n+int cmd_shortlog(int argc,\n+\t\t const char **argv,\n+\t\t const char *prefix,\n+\t\t struct repository *repo UNUSED)\n {\n \tstruct shortlog log = { STRING_LIST_INIT_NODUP };\n \tstruct rev_info rev;\ndiff --git a/builtin/show-branch.c b/builtin/show-branch.c\nindex 29237f653d8..05c10628df9 100644\n--- a/builtin/show-branch.c\n+++ b/builtin/show-branch.c\n@@ -632,7 +632,10 @@ static int parse_reflog_param(const struct option *opt, const char *arg,\n \treturn 0;\n }\n \n-int cmd_show_branch(int ac, const char **av, const char *prefix)\n+int cmd_show_branch(int ac,\n+\t\tconst char **av,\n+\t\tconst char *prefix,\n+\t\tstruct repository *repo UNUSED)\n {\n \tstruct commit *rev[MAX_REVS], *commit;\n \tchar *reflog_msg[MAX_REVS] = {0};\ndiff --git a/builtin/show-index.c b/builtin/show-index.c\nindex 540dc3dad1c..9e1f7ac9ca5 100644\n--- a/builtin/show-index.c\n+++ b/builtin/show-index.c\n@@ -11,7 +11,10 @@ static const char *const show_index_usage[] = {\n \tNULL\n };\n \n-int cmd_show_index(int argc, const char **argv, const char *prefix)\n+int cmd_show_index(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tint i;\n \tunsigned nr;\ndiff --git a/builtin/show-ref.c b/builtin/show-ref.c\nindex f5899ce9ff7..6ee05f09a69 100644\n--- a/builtin/show-ref.c\n+++ b/builtin/show-ref.c\n@@ -287,7 +287,10 @@ static int exclude_existing_callback(const struct option *opt, const char *arg,\n \treturn 0;\n }\n \n-int cmd_show_ref(int argc, const char **argv, const char *prefix)\n+int cmd_show_ref(int argc,\n+const char **argv,\n+const char *prefix,\n+struct repository *repo UNUSED)\n {\n \tstruct exclude_existing_options exclude_existing_opts = {0};\n \tstruct patterns_options patterns_opts = {0};\ndiff --git a/builtin/sparse-checkout.c b/builtin/sparse-checkout.c\nindex 2604ab04df5..23f1548fe54 100644\n--- a/builtin/sparse-checkout.c\n+++ b/builtin/sparse-checkout.c\n@@ -1030,7 +1030,10 @@ static int sparse_checkout_check_rules(int argc, const char **argv, const char *\n \treturn ret;\n }\n \n-int cmd_sparse_checkout(int argc, const char **argv, const char *prefix)\n+int cmd_sparse_checkout(int argc,\n+\t\t\tconst char **argv,\n+\t\t\tconst char *prefix,\n+\t\t\tstruct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tstruct option builtin_sparse_checkout_options[] = {\ndiff --git a/builtin/stash.c b/builtin/stash.c\nindex be842258d06..b10d41e1f2b 100644\n--- a/builtin/stash.c\n+++ b/builtin/stash.c\n@@ -1871,7 +1871,10 @@ static int save_stash(int argc, const char **argv, const char *prefix)\n \treturn ret;\n }\n \n-int cmd_stash(int argc, const char **argv, const char *prefix)\n+int cmd_stash(int argc,\n+\t      const char **argv,\n+\t      const char *prefix,\n+\t      struct repository *repo UNUSED)\n {\n \tpid_t pid = getpid();\n \tconst char *index_file;\ndiff --git a/builtin/stripspace.c b/builtin/stripspace.c\nindex e5626e51266..674ef939769 100644\n--- a/builtin/stripspace.c\n+++ b/builtin/stripspace.c\n@@ -29,7 +29,10 @@ enum stripspace_mode {\n \tCOMMENT_LINES\n };\n \n-int cmd_stripspace(int argc, const char **argv, const char *prefix)\n+int cmd_stripspace(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tstruct strbuf buf = STRBUF_INIT;\n \tenum stripspace_mode mode = STRIP_DEFAULT;\ndiff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c\nindex a46ffd49b34..cc07ab46a33 100644\n--- a/builtin/submodule--helper.c\n+++ b/builtin/submodule--helper.c\n@@ -3528,7 +3528,10 @@ cleanup:\n \treturn ret;\n }\n \n-int cmd_submodule__helper(int argc, const char **argv, const char *prefix)\n+int cmd_submodule__helper(int argc,\n+\t\t\t  const char **argv,\n+\t\t\t  const char *prefix,\n+\t\t\t  struct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tconst char *const usage[] = {\ndiff --git a/builtin/symbolic-ref.c b/builtin/symbolic-ref.c\nindex 81abdd170fe..9bc70229468 100644\n--- a/builtin/symbolic-ref.c\n+++ b/builtin/symbolic-ref.c\n@@ -41,7 +41,10 @@ static int check_symref(const char *HEAD, int quiet, int shorten, int recurse, i\n \treturn 0;\n }\n \n-int cmd_symbolic_ref(int argc, const char **argv, const char *prefix)\n+int cmd_symbolic_ref(int argc,\n+\t\t     const char **argv,\n+\t\t     const char *prefix,\n+\t\t     struct repository *repo UNUSED)\n {\n \tint quiet = 0, delete = 0, shorten = 0, recurse = 1, ret = 0;\n \tconst char *msg = NULL;\ndiff --git a/builtin/tag.c b/builtin/tag.c\nindex a1fb218512c..a80838eb8e0 100644\n--- a/builtin/tag.c\n+++ b/builtin/tag.c\n@@ -457,7 +457,10 @@ static int strbuf_check_tag_ref(struct strbuf *sb, const char *name)\n \treturn check_refname_format(sb->buf, 0);\n }\n \n-int cmd_tag(int argc, const char **argv, const char *prefix)\n+int cmd_tag(int argc,\n+\t    const char **argv,\n+\t    const char *prefix,\n+\t    struct repository *repo UNUSED)\n {\n \tstruct strbuf buf = STRBUF_INIT;\n \tstruct strbuf ref = STRBUF_INIT;\ndiff --git a/builtin/unpack-file.c b/builtin/unpack-file.c\nindex c129e2bb6cb..97886840f8d 100644\n--- a/builtin/unpack-file.c\n+++ b/builtin/unpack-file.c\n@@ -25,7 +25,10 @@ static char *create_temp_file(struct object_id *oid)\n \treturn path;\n }\n \n-int cmd_unpack_file(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_unpack_file(int argc,\n+\t\t    const char **argv,\n+\t\t    const char *prefix UNUSED,\n+\t\t    struct repository *repo UNUSED)\n {\n \tstruct object_id oid;\n \ndiff --git a/builtin/unpack-objects.c b/builtin/unpack-objects.c\nindex 08fa2a7a743..3bcdaaeb5fa 100644\n--- a/builtin/unpack-objects.c\n+++ b/builtin/unpack-objects.c\n@@ -601,7 +601,10 @@ static void unpack_all(void)\n \t\tdie(\"unresolved deltas left after unpacking\");\n }\n \n-int cmd_unpack_objects(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_unpack_objects(int argc,\n+\t\t       const char **argv,\n+\t\t       const char *prefix UNUSED,\n+\t\t       struct repository *repo UNUSED)\n {\n \tint i;\n \tstruct object_id oid;\ndiff --git a/builtin/update-index.c b/builtin/update-index.c\nindex 35a1f957adc..1d1d87d08e3 100644\n--- a/builtin/update-index.c\n+++ b/builtin/update-index.c\n@@ -917,7 +917,10 @@ static enum parse_opt_result reupdate_callback(\n \treturn 0;\n }\n \n-int cmd_update_index(int argc, const char **argv, const char *prefix)\n+int cmd_update_index(int argc,\n+\t\t     const char **argv,\n+\t\t     const char *prefix,\n+\t\t     struct repository *repo UNUSED)\n {\n \tint newfd, entries, has_errors = 0, nul_term_line = 0;\n \tenum uc_mode untracked_cache = UC_UNSPECIFIED;\ndiff --git a/builtin/update-ref.c b/builtin/update-ref.c\nindex 8f31da9a4b7..06826a90515 100644\n--- a/builtin/update-ref.c\n+++ b/builtin/update-ref.c\n@@ -713,7 +713,10 @@ static void update_refs_stdin(void)\n \tstrbuf_release(&input);\n }\n \n-int cmd_update_ref(int argc, const char **argv, const char *prefix)\n+int cmd_update_ref(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tconst char *refname, *oldval;\n \tstruct object_id oid, oldoid;\ndiff --git a/builtin/update-server-info.c b/builtin/update-server-info.c\nindex 1dc3971edeb..a5b7d86727c 100644\n--- a/builtin/update-server-info.c\n+++ b/builtin/update-server-info.c\n@@ -9,7 +9,10 @@ static const char * const update_server_info_usage[] = {\n \tNULL\n };\n \n-int cmd_update_server_info(int argc, const char **argv, const char *prefix)\n+int cmd_update_server_info(int argc,\n+\t\t\t   const char **argv,\n+\t\t\t   const char *prefix,\n+\t\t\t   struct repository *repo UNUSED)\n {\n \tint force = 0;\n \tstruct option options[] = {\ndiff --git a/builtin/upload-archive.c b/builtin/upload-archive.c\nindex 313a8dfa81c..dd84c83f137 100644\n--- a/builtin/upload-archive.c\n+++ b/builtin/upload-archive.c\n@@ -18,7 +18,10 @@ static const char deadchild[] =\n \n #define MAX_ARGS (64)\n \n-int cmd_upload_archive_writer(int argc, const char **argv, const char *prefix)\n+int cmd_upload_archive_writer(int argc,\n+\t\t\t      const char **argv,\n+\t\t\t      const char *prefix,\n+\t\t\t      struct repository *repo UNUSED)\n {\n \tstruct strvec sent_argv = STRVEC_INIT;\n \tconst char *arg_cmd = \"argument \";\n@@ -80,7 +83,10 @@ static ssize_t process_input(int child_fd, int band)\n \treturn sz;\n }\n \n-int cmd_upload_archive(int argc, const char **argv, const char *prefix)\n+int cmd_upload_archive(int argc,\n+const char **argv,\n+const char *prefix,\n+struct repository *repo UNUSED)\n {\n \tstruct child_process writer = CHILD_PROCESS_INIT;\n \ndiff --git a/builtin/upload-pack.c b/builtin/upload-pack.c\nindex 46d93278d9a..3b6c83fbce3 100644\n--- a/builtin/upload-pack.c\n+++ b/builtin/upload-pack.c\n@@ -17,7 +17,10 @@ static const char * const upload_pack_usage[] = {\n \tNULL\n };\n \n-int cmd_upload_pack(int argc, const char **argv, const char *prefix)\n+int cmd_upload_pack(int argc,\n+\t\t    const char **argv,\n+\t\t    const char *prefix,\n+\t\t    struct repository *repo UNUSED)\n {\n \tconst char *dir;\n \tint strict = 0;\ndiff --git a/builtin/var.c b/builtin/var.c\nindex e30ff45be1c..4a5c2649d6f 100644\n--- a/builtin/var.c\n+++ b/builtin/var.c\n@@ -210,7 +210,10 @@ static int show_config(const char *var, const char *value,\n \treturn git_default_config(var, value, ctx, cb);\n }\n \n-int cmd_var(int argc, const char **argv, const char *prefix UNUSED)\n+int cmd_var(int argc,\n+\t    const char **argv,\n+\t    const char *prefix UNUSED,\n+\t    struct repository *repo UNUSED)\n {\n \tconst struct git_var *git_var;\n \tchar *val;\ndiff --git a/builtin/verify-commit.c b/builtin/verify-commit.c\nindex 0d2b9aea2ae..c5859e5b2b4 100644\n--- a/builtin/verify-commit.c\n+++ b/builtin/verify-commit.c\n@@ -51,7 +51,10 @@ static int verify_commit(const char *name, unsigned flags)\n \treturn run_gpg_verify((struct commit *)obj, flags);\n }\n \n-int cmd_verify_commit(int argc, const char **argv, const char *prefix)\n+int cmd_verify_commit(int argc,\n+\t\t      const char **argv,\n+\t\t      const char *prefix,\n+\t\t      struct repository *repo UNUSED)\n {\n \tint i = 1, verbose = 0, had_error = 0;\n \tunsigned flags = 0;\ndiff --git a/builtin/verify-pack.c b/builtin/verify-pack.c\nindex 011dddd2dc3..7ad456649d2 100644\n--- a/builtin/verify-pack.c\n+++ b/builtin/verify-pack.c\n@@ -61,7 +61,10 @@ static const char * const verify_pack_usage[] = {\n \tNULL\n };\n \n-int cmd_verify_pack(int argc, const char **argv, const char *prefix)\n+int cmd_verify_pack(int argc,\n+\t\t    const char **argv,\n+\t\t    const char *prefix,\n+\t\t    struct repository *repo UNUSED)\n {\n \tint err = 0;\n \tunsigned int flags = 0;\ndiff --git a/builtin/verify-tag.c b/builtin/verify-tag.c\nindex c731e2f87b4..a7bef524191 100644\n--- a/builtin/verify-tag.c\n+++ b/builtin/verify-tag.c\n@@ -19,7 +19,10 @@ static const char * const verify_tag_usage[] = {\n \t\tNULL\n };\n \n-int cmd_verify_tag(int argc, const char **argv, const char *prefix)\n+int cmd_verify_tag(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tint i = 1, verbose = 0, had_error = 0;\n \tunsigned flags = 0;\ndiff --git a/builtin/worktree.c b/builtin/worktree.c\nindex 41e7f6a3271..3b47f9832fa 100644\n--- a/builtin/worktree.c\n+++ b/builtin/worktree.c\n@@ -1392,7 +1392,10 @@ static int repair(int ac, const char **av, const char *prefix)\n \treturn rc;\n }\n \n-int cmd_worktree(int ac, const char **av, const char *prefix)\n+int cmd_worktree(int ac,\n+\t\t const char **av,\n+\t\t const char *prefix,\n+\t\t struct repository *repo UNUSED)\n {\n \tparse_opt_subcommand_fn *fn = NULL;\n \tstruct option options[] = {\ndiff --git a/builtin/write-tree.c b/builtin/write-tree.c\nindex 8c75b4609b5..1b467d6ed23 100644\n--- a/builtin/write-tree.c\n+++ b/builtin/write-tree.c\n@@ -19,7 +19,10 @@ static const char * const write_tree_usage[] = {\n \tNULL\n };\n \n-int cmd_write_tree(int argc, const char **argv, const char *cmd_prefix)\n+int cmd_write_tree(int argc,\n+\t\t   const char **argv,\n+\t\t   const char *cmd_prefix,\n+\t\t   struct repository *repo UNUSED)\n {\n \tint flags = 0, ret;\n \tconst char *tree_prefix = NULL;\ndiff --git a/git.c b/git.c\nindex 9a618a2740f..2fbea24ec92 100644\n--- a/git.c\n+++ b/git.c\n@@ -31,7 +31,7 @@\n \n struct cmd_struct {\n \tconst char *cmd;\n-\tint (*fn)(int, const char **, const char *);\n+\tint (*fn)(int, const char **, const char *, struct repository *);\n \tunsigned int option;\n };\n \n@@ -441,7 +441,7 @@ static int handle_alias(int *argcp, const char ***argv)\n \treturn ret;\n }\n \n-static int run_builtin(struct cmd_struct *p, int argc, const char **argv)\n+static int run_builtin(struct cmd_struct *p, int argc, const char **argv, struct repository *repo)\n {\n \tint status, help;\n \tstruct stat st;\n@@ -479,9 +479,9 @@ static int run_builtin(struct cmd_struct *p, int argc, const char **argv)\n \ttrace_argv_printf(argv, \"trace: built-in: git\");\n \ttrace2_cmd_name(p->cmd);\n \n-\tvalidate_cache_entries(the_repository->index);\n-\tstatus = p->fn(argc, argv, prefix);\n-\tvalidate_cache_entries(the_repository->index);\n+\tvalidate_cache_entries(repo->index);\n+\tstatus = p->fn(argc, argv, prefix, (p->option & RUN_SETUP)? repo : NULL);\n+\tvalidate_cache_entries(repo->index);\n \n \tif (status)\n \t\treturn status;\n@@ -736,7 +736,7 @@ static void handle_builtin(int argc, const char **argv)\n \n \tbuiltin = get_builtin(cmd);\n \tif (builtin)\n-\t\texit(run_builtin(builtin, argc, argv));\n+\t\texit(run_builtin(builtin, argc, argv, the_repository));\n \tstrvec_clear(&args);\n }\n \ndiff --git a/help.c b/help.c\nindex c03863f2265..e7cdfab6432 100644\n--- a/help.c\n+++ b/help.c\n@@ -16,6 +16,7 @@\n #include \"parse-options.h\"\n #include \"prompt.h\"\n #include \"fsmonitor-ipc.h\"\n+#include \"repository.h\"\n \n #ifndef NO_CURL\n #include \"git-curl-compat.h\" /* For LIBCURL_VERSION only */\n@@ -775,7 +776,7 @@ void get_version_info(struct strbuf *buf, int show_build_options)\n \t}\n }\n \n-int cmd_version(int argc, const char **argv, const char *prefix)\n+int cmd_version(int argc, const char **argv, const char *prefix, struct repository *repository UNUSED)\n {\n \tstruct strbuf buf = STRBUF_INIT;\n \tint build_options = 0;\n-- \ngitgitgadget\n\n"},{"id":"502779","messageId":"004283a1e5baf2ca60609600b7b5f75bdfc776ee.1726262178.git.gitgitgadget@gmail.com","threadId":"62067","inReplyTo":"pull.1778.v3.git.git.1726262177.gitgitgadget@gmail.com","subject":"[PATCH v3 3/4] builtin: remove USE_THE_REPOSITORY for those without the_repository","fromName":"John Cai via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2024-09-13T21:16:16Z","receivedAt":"2024-09-13T21:16:26Z","isPatch":true,"sender":{"key":"johncai86@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2354211?v=4"},"body":"From: John Cai <johncai86@gmail.com>\n\nFor builtins that do not operate on a repository, remove\nthe #define USE_THE_REPOSITORY.\n\nSigned-off-by: John Cai <johncai86@gmail.com>\n---\n builtin/check-ref-format.c  | 1 -\n builtin/credential-cache.c  | 1 -\n builtin/diagnose.c          | 1 -\n builtin/get-tar-commit-id.c | 1 -\n builtin/mailsplit.c         | 1 -\n builtin/prune-packed.c      | 1 -\n builtin/remote-ext.c        | 1 -\n builtin/remote-fd.c         | 1 -\n builtin/upload-pack.c       | 1 -\n 9 files changed, 9 deletions(-)\n\ndiff --git a/builtin/check-ref-format.c b/builtin/check-ref-format.c\nindex 65945171b3f..e86d8ef980b 100644\n--- a/builtin/check-ref-format.c\n+++ b/builtin/check-ref-format.c\n@@ -1,7 +1,6 @@\n /*\n  * GIT - The information manager from hell\n  */\n-#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"refs.h\"\n #include \"setup.h\"\ndiff --git a/builtin/credential-cache.c b/builtin/credential-cache.c\nindex 1918c474f02..5de8b9123bf 100644\n--- a/builtin/credential-cache.c\n+++ b/builtin/credential-cache.c\n@@ -1,4 +1,3 @@\n-#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"credential.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/diagnose.c b/builtin/diagnose.c\nindex 5ac7872b998..66a22d918e6 100644\n--- a/builtin/diagnose.c\n+++ b/builtin/diagnose.c\n@@ -1,4 +1,3 @@\n-#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/get-tar-commit-id.c b/builtin/get-tar-commit-id.c\nindex 272384a6b15..6bec0d1854c 100644\n--- a/builtin/get-tar-commit-id.c\n+++ b/builtin/get-tar-commit-id.c\n@@ -1,7 +1,6 @@\n /*\n  * Copyright (c) 2005, 2006 Rene Scharfe\n  */\n-#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"commit.h\"\n #include \"tar.h\"\ndiff --git a/builtin/mailsplit.c b/builtin/mailsplit.c\nindex 24254221417..b8f7150ce9a 100644\n--- a/builtin/mailsplit.c\n+++ b/builtin/mailsplit.c\n@@ -4,7 +4,6 @@\n  * It just splits a mbox into a list of files: \"0001\" \"0002\" ..\n  * so you can process them further from there.\n  */\n-#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"string-list.h\"\ndiff --git a/builtin/prune-packed.c b/builtin/prune-packed.c\nindex 0720d825c83..4d63f26b0a1 100644\n--- a/builtin/prune-packed.c\n+++ b/builtin/prune-packed.c\n@@ -1,4 +1,3 @@\n-#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"parse-options.h\"\ndiff --git a/builtin/remote-ext.c b/builtin/remote-ext.c\nindex 119f33895e7..33c8ae0fc7d 100644\n--- a/builtin/remote-ext.c\n+++ b/builtin/remote-ext.c\n@@ -1,4 +1,3 @@\n-#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"transport.h\"\n #include \"run-command.h\"\ndiff --git a/builtin/remote-fd.c b/builtin/remote-fd.c\nindex b27ea81e4fb..ae896eda57b 100644\n--- a/builtin/remote-fd.c\n+++ b/builtin/remote-fd.c\n@@ -1,4 +1,3 @@\n-#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"transport.h\"\n \ndiff --git a/builtin/upload-pack.c b/builtin/upload-pack.c\nindex 363091c31e8..3b6c83fbce3 100644\n--- a/builtin/upload-pack.c\n+++ b/builtin/upload-pack.c\n@@ -1,4 +1,3 @@\n-#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"exec-cmd.h\"\n #include \"gettext.h\"\n-- \ngitgitgadget\n\n"},{"id":"502780","messageId":"7becd3751fc73a51a1791427b2232fc94f1c9ae9.1726262178.git.gitgitgadget@gmail.com","threadId":"62067","inReplyTo":"pull.1778.v3.git.git.1726262177.gitgitgadget@gmail.com","subject":"[PATCH v3 2/4] builtin: remove USE_THE_REPOSITORY_VARIABLE from builtin.h","fromName":"John Cai via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2024-09-13T21:16:15Z","receivedAt":"2024-09-13T21:16:26Z","isPatch":true,"sender":{"key":"johncai86@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2354211?v=4"},"body":"From: John Cai <johncai86@gmail.com>\n\nInstead of including USE_THE_REPOSITORY_VARIABLE by default on every\nbuiltin, remove it from builtin.h and add it to all the builtins that\nreference the_repository.\n\nAlso, remove the include statement for repository.h since it gets\nbrought in through builtin.h.\n\nThe next step will be to migrate each builtin\nfrom having to use the_repository.\n\nSigned-off-by: John Cai <johncai86@gmail.com>\n---\n builtin.h                          | 8 --------\n builtin/add.c                      | 3 +--\n builtin/am.c                       | 2 +-\n builtin/annotate.c                 | 2 ++\n builtin/apply.c                    | 2 +-\n builtin/archive.c                  | 2 +-\n builtin/bisect.c                   | 1 +\n builtin/blame.c                    | 3 +--\n builtin/branch.c                   | 2 +-\n builtin/bugreport.c                | 1 +\n builtin/bundle.c                   | 2 +-\n builtin/cat-file.c                 | 2 +-\n builtin/check-attr.c               | 2 +-\n builtin/check-ignore.c             | 2 +-\n builtin/check-mailmap.c            | 1 +\n builtin/check-ref-format.c         | 2 +-\n builtin/checkout--worker.c         | 1 +\n builtin/checkout-index.c           | 3 +--\n builtin/checkout.c                 | 1 +\n builtin/clean.c                    | 3 +--\n builtin/clone.c                    | 3 ++-\n builtin/column.c                   | 1 +\n builtin/commit-graph.c             | 2 +-\n builtin/commit-tree.c              | 3 ++-\n builtin/commit.c                   | 2 +-\n builtin/config.c                   | 2 +-\n builtin/count-objects.c            | 3 +--\n builtin/credential-cache--daemon.c | 1 +\n builtin/credential-cache.c         | 1 +\n builtin/credential-store.c         | 1 +\n builtin/credential.c               | 2 ++\n builtin/describe.c                 | 1 +\n builtin/diagnose.c                 | 1 +\n builtin/diff-files.c               | 2 +-\n builtin/diff-index.c               | 2 +-\n builtin/diff-tree.c                | 2 +-\n builtin/diff.c                     | 2 +-\n builtin/difftool.c                 | 3 ++-\n builtin/fast-export.c              | 1 +\n builtin/fast-import.c              | 2 +-\n builtin/fetch-pack.c               | 1 +\n builtin/fetch.c                    | 2 +-\n builtin/fmt-merge-msg.c            | 1 +\n builtin/for-each-ref.c             | 1 +\n builtin/for-each-repo.c            | 2 +-\n builtin/fsck.c                     | 2 +-\n builtin/fsmonitor--daemon.c        | 3 ++-\n builtin/gc.c                       | 3 +--\n builtin/get-tar-commit-id.c        | 1 +\n builtin/grep.c                     | 2 +-\n builtin/hash-object.c              | 1 +\n builtin/help.c                     | 2 ++\n builtin/hook.c                     | 1 +\n builtin/index-pack.c               | 1 +\n builtin/init-db.c                  | 2 +-\n builtin/interpret-trailers.c       | 2 +-\n builtin/log.c                      | 3 ++-\n builtin/ls-files.c                 | 2 +-\n builtin/ls-remote.c                | 1 +\n builtin/ls-tree.c                  | 2 ++\n builtin/mailinfo.c                 | 1 +\n builtin/mailsplit.c                | 1 +\n builtin/merge-base.c               | 2 +-\n builtin/merge-file.c               | 1 +\n builtin/merge-index.c              | 2 +-\n builtin/merge-ours.c               | 3 ++-\n builtin/merge-recursive.c          | 2 +-\n builtin/merge-tree.c               | 2 +-\n builtin/merge.c                    | 3 ++-\n builtin/mktag.c                    | 1 +\n builtin/mktree.c                   | 1 +\n builtin/multi-pack-index.c         | 1 +\n builtin/mv.c                       | 3 ++-\n builtin/name-rev.c                 | 2 +-\n builtin/notes.c                    | 4 ++--\n builtin/pack-objects.c             | 2 +-\n builtin/pack-redundant.c           | 3 ++-\n builtin/pack-refs.c                | 2 +-\n builtin/patch-id.c                 | 1 +\n builtin/prune-packed.c             | 1 +\n builtin/prune.c                    | 1 +\n builtin/pull.c                     | 1 +\n builtin/push.c                     | 2 +-\n builtin/range-diff.c               | 3 ++-\n builtin/read-tree.c                | 3 +--\n builtin/rebase.c                   | 3 ++-\n builtin/receive-pack.c             | 3 ++-\n builtin/reflog.c                   | 2 +-\n builtin/refs.c                     | 2 +-\n builtin/remote-ext.c               | 1 +\n builtin/remote-fd.c                | 1 +\n builtin/remote.c                   | 1 +\n builtin/repack.c                   | 1 +\n builtin/replace.c                  | 3 +--\n builtin/replay.c                   | 1 +\n builtin/rerere.c                   | 3 ++-\n builtin/reset.c                    | 2 +-\n builtin/rev-list.c                 | 1 +\n builtin/rev-parse.c                | 3 ++-\n builtin/revert.c                   | 2 +-\n builtin/rm.c                       | 4 ++--\n builtin/send-pack.c                | 1 +\n builtin/shortlog.c                 | 2 +-\n builtin/show-branch.c              | 3 ++-\n builtin/show-index.c               | 2 +-\n builtin/show-ref.c                 | 1 +\n builtin/sparse-checkout.c          | 2 +-\n builtin/stash.c                    | 1 +\n builtin/stripspace.c               | 1 +\n builtin/submodule--helper.c        | 3 ++-\n builtin/symbolic-ref.c             | 1 +\n builtin/tag.c                      | 2 +-\n builtin/unpack-file.c              | 1 +\n builtin/unpack-objects.c           | 1 +\n builtin/update-index.c             | 3 +--\n builtin/update-ref.c               | 2 +-\n builtin/update-server-info.c       | 1 +\n builtin/upload-archive.c           | 2 +-\n builtin/upload-pack.c              | 1 +\n builtin/var.c                      | 2 ++\n builtin/verify-commit.c            | 2 +-\n builtin/verify-pack.c              | 1 +\n builtin/verify-tag.c               | 1 +\n builtin/worktree.c                 | 2 +-\n builtin/write-tree.c               | 3 +--\n 125 files changed, 147 insertions(+), 92 deletions(-)\n\ndiff --git a/builtin.h b/builtin.h\nindex fc6fc8ffed8..f7b166b3348 100644\n--- a/builtin.h\n+++ b/builtin.h\n@@ -1,14 +1,6 @@\n #ifndef BUILTIN_H\n #define BUILTIN_H\n \n-/*\n- * TODO: Almost all of our builtins access `the_repository` by necessity\n- * because they do not get passed a pointer to it. We should adapt the function\n- * signature of those main functions to accept a `struct repository *` and then\n- * remove the macro here.\n- */\n-#define USE_THE_REPOSITORY_VARIABLE\n-\n #include \"git-compat-util.h\"\n #include \"repository.h\"\n \ndiff --git a/builtin/add.c b/builtin/add.c\nindex ba331519cac..c893ff48d26 100644\n--- a/builtin/add.c\n+++ b/builtin/add.c\n@@ -3,7 +3,7 @@\n  *\n  * Copyright (C) 2006 Linus Torvalds\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"config.h\"\n@@ -18,7 +18,6 @@\n #include \"preload-index.h\"\n #include \"diff.h\"\n #include \"read-cache.h\"\n-#include \"repository.h\"\n #include \"revision.h\"\n #include \"bulk-checkin.h\"\n #include \"strvec.h\"\ndiff --git a/builtin/am.c b/builtin/am.c\nindex 8c610eed3e6..7693891fcde 100644\n--- a/builtin/am.c\n+++ b/builtin/am.c\n@@ -4,6 +4,7 @@\n  * Based on git-am.sh by Junio C Hamano.\n  */\n \n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"advice.h\"\n@@ -38,7 +39,6 @@\n #include \"string-list.h\"\n #include \"pager.h\"\n #include \"path.h\"\n-#include \"repository.h\"\n #include \"pretty.h\"\n \n /**\ndiff --git a/builtin/annotate.c b/builtin/annotate.c\nindex 0abf89ef186..a99179fe4dd 100644\n--- a/builtin/annotate.c\n+++ b/builtin/annotate.c\n@@ -3,6 +3,8 @@\n  *\n  * Copyright (C) 2006 Ryan Anderson\n  */\n+\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"git-compat-util.h\"\n #include \"builtin.h\"\n #include \"strvec.h\"\ndiff --git a/builtin/apply.c b/builtin/apply.c\nindex ca0bb97df40..84f1863d3ac 100644\n--- a/builtin/apply.c\n+++ b/builtin/apply.c\n@@ -1,6 +1,6 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n-#include \"repository.h\"\n #include \"hash.h\"\n #include \"apply.h\"\n \ndiff --git a/builtin/archive.c b/builtin/archive.c\nindex 2b5dc5f43b0..dc926d1a3df 100644\n--- a/builtin/archive.c\n+++ b/builtin/archive.c\n@@ -2,13 +2,13 @@\n  * Copyright (c) 2006 Franck Bui-Huu\n  * Copyright (c) 2006 Rene Scharfe\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"archive.h\"\n #include \"gettext.h\"\n #include \"transport.h\"\n #include \"parse-options.h\"\n #include \"pkt-line.h\"\n-#include \"repository.h\"\n \n static void create_output_file(const char *output_file)\n {\ndiff --git a/builtin/bisect.c b/builtin/bisect.c\nindex bec5cc749af..21d17a6c1a8 100644\n--- a/builtin/bisect.c\n+++ b/builtin/bisect.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"copy.h\"\n #include \"environment.h\"\ndiff --git a/builtin/blame.c b/builtin/blame.c\nindex 728a62402b5..472dd762f41 100644\n--- a/builtin/blame.c\n+++ b/builtin/blame.c\n@@ -4,7 +4,7 @@\n  * Copyright (c) 2006, 2014 by its authors\n  * See COPYING for licensing conditions\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"color.h\"\n@@ -12,7 +12,6 @@\n #include \"environment.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\n-#include \"repository.h\"\n #include \"commit.h\"\n #include \"diff.h\"\n #include \"revision.h\"\ndiff --git a/builtin/branch.c b/builtin/branch.c\nindex 7980d2e83d6..7112459ebd1 100644\n--- a/builtin/branch.c\n+++ b/builtin/branch.c\n@@ -4,7 +4,7 @@\n  * Copyright (c) 2006 Kristian Høgsberg <krh@redhat.com>\n  * Based on git-branch.sh by Junio C Hamano.\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"color.h\"\ndiff --git a/builtin/bugreport.c b/builtin/bugreport.c\nindex aeab40c4902..7c2df035c9c 100644\n--- a/builtin/bugreport.c\n+++ b/builtin/bugreport.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"editor.h\"\ndiff --git a/builtin/bundle.c b/builtin/bundle.c\nindex 3fdd9195fd7..127518c2a8d 100644\n--- a/builtin/bundle.c\n+++ b/builtin/bundle.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"gettext.h\"\n@@ -5,7 +6,6 @@\n #include \"strvec.h\"\n #include \"parse-options.h\"\n #include \"pkt-line.h\"\n-#include \"repository.h\"\n #include \"bundle.h\"\n \n /*\ndiff --git a/builtin/cat-file.c b/builtin/cat-file.c\nindex b0ce49c9640..bfdfb51c7cb 100644\n--- a/builtin/cat-file.c\n+++ b/builtin/cat-file.c\n@@ -3,7 +3,7 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"convert.h\"\ndiff --git a/builtin/check-attr.c b/builtin/check-attr.c\nindex ffd1067558d..7cf275b8937 100644\n--- a/builtin/check-attr.c\n+++ b/builtin/check-attr.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"attr.h\"\n@@ -5,7 +6,6 @@\n #include \"gettext.h\"\n #include \"object-name.h\"\n #include \"quote.h\"\n-#include \"repository.h\"\n #include \"setup.h\"\n #include \"parse-options.h\"\n #include \"write-or-die.h\"\ndiff --git a/builtin/check-ignore.c b/builtin/check-ignore.c\nindex 70565b9f892..7b7831d13a8 100644\n--- a/builtin/check-ignore.c\n+++ b/builtin/check-ignore.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"dir.h\"\n@@ -5,7 +6,6 @@\n #include \"quote.h\"\n #include \"pathspec.h\"\n #include \"parse-options.h\"\n-#include \"repository.h\"\n #include \"submodule.h\"\n #include \"write-or-die.h\"\n \ndiff --git a/builtin/check-mailmap.c b/builtin/check-mailmap.c\nindex 422b6938788..df00b5ee13a 100644\n--- a/builtin/check-mailmap.c\n+++ b/builtin/check-mailmap.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/check-ref-format.c b/builtin/check-ref-format.c\nindex 6874edb4f41..65945171b3f 100644\n--- a/builtin/check-ref-format.c\n+++ b/builtin/check-ref-format.c\n@@ -1,7 +1,7 @@\n /*\n  * GIT - The information manager from hell\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"refs.h\"\n #include \"setup.h\"\ndiff --git a/builtin/checkout--worker.c b/builtin/checkout--worker.c\nindex f53e1082690..ff6cdccc21d 100644\n--- a/builtin/checkout--worker.c\n+++ b/builtin/checkout--worker.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"entry.h\"\ndiff --git a/builtin/checkout-index.c b/builtin/checkout-index.c\nindex 98247ff8236..6dd38eb05d4 100644\n--- a/builtin/checkout-index.c\n+++ b/builtin/checkout-index.c\n@@ -4,13 +4,12 @@\n  * Copyright (C) 2005 Linus Torvalds\n  *\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\n #include \"lockfile.h\"\n #include \"quote.h\"\n-#include \"repository.h\"\n #include \"cache-tree.h\"\n #include \"parse-options.h\"\n #include \"entry.h\"\ndiff --git a/builtin/checkout.c b/builtin/checkout.c\nindex d3bc48684f9..d6defc36b2b 100644\n--- a/builtin/checkout.c\n+++ b/builtin/checkout.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"branch.h\"\ndiff --git a/builtin/clean.c b/builtin/clean.c\nindex b5887f877e0..9c48dd02711 100644\n--- a/builtin/clean.c\n+++ b/builtin/clean.c\n@@ -5,7 +5,7 @@\n  *\n  * Based on git-clean.sh by Pavel Roskin\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"config.h\"\n@@ -14,7 +14,6 @@\n #include \"parse-options.h\"\n #include \"path.h\"\n #include \"read-cache-ll.h\"\n-#include \"repository.h\"\n #include \"setup.h\"\n #include \"string-list.h\"\n #include \"quote.h\"\ndiff --git a/builtin/clone.c b/builtin/clone.c\nindex 1b82310ac5b..e77339c8472 100644\n--- a/builtin/clone.c\n+++ b/builtin/clone.c\n@@ -7,8 +7,9 @@\n  *\n  * Clone a repository into a different directory that does not yet exist.\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+\n #include \"abspath.h\"\n #include \"advice.h\"\n #include \"config.h\"\ndiff --git a/builtin/column.c b/builtin/column.c\nindex 93f84beeee7..50314cc2559 100644\n--- a/builtin/column.c\n+++ b/builtin/column.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/commit-graph.c b/builtin/commit-graph.c\nindex 65ce98d4675..81e577c14ae 100644\n--- a/builtin/commit-graph.c\n+++ b/builtin/commit-graph.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"commit.h\"\n #include \"config.h\"\n@@ -5,7 +6,6 @@\n #include \"gettext.h\"\n #include \"hex.h\"\n #include \"parse-options.h\"\n-#include \"repository.h\"\n #include \"commit-graph.h\"\n #include \"object-store-ll.h\"\n #include \"progress.h\"\ndiff --git a/builtin/commit-tree.c b/builtin/commit-tree.c\nindex bd8bf3296ed..2ca1a57ebbb 100644\n--- a/builtin/commit-tree.c\n+++ b/builtin/commit-tree.c\n@@ -3,13 +3,14 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\n #include \"object-name.h\"\n #include \"object-store-ll.h\"\n-#include \"repository.h\"\n+\n #include \"commit.h\"\n #include \"parse-options.h\"\n \ndiff --git a/builtin/commit.c b/builtin/commit.c\nindex 768d76ac461..fd1cc42c5a6 100644\n--- a/builtin/commit.c\n+++ b/builtin/commit.c\n@@ -4,7 +4,7 @@\n  * Copyright (c) 2007 Kristian Høgsberg <krh@redhat.com>\n  * Based on git-commit.sh by Junio C Hamano and Linus Torvalds\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"config.h\"\ndiff --git a/builtin/config.c b/builtin/config.c\nindex c64baebb1ec..3eafea4936a 100644\n--- a/builtin/config.c\n+++ b/builtin/config.c\n@@ -1,10 +1,10 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"config.h\"\n #include \"color.h\"\n #include \"editor.h\"\n #include \"environment.h\"\n-#include \"repository.h\"\n #include \"gettext.h\"\n #include \"ident.h\"\n #include \"parse-options.h\"\ndiff --git a/builtin/count-objects.c b/builtin/count-objects.c\nindex 6b905da3c3d..3d7b289f597 100644\n--- a/builtin/count-objects.c\n+++ b/builtin/count-objects.c\n@@ -3,14 +3,13 @@\n  *\n  * Copyright (c) 2006 Junio C Hamano\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"dir.h\"\n #include \"environment.h\"\n #include \"gettext.h\"\n #include \"path.h\"\n-#include \"repository.h\"\n #include \"parse-options.h\"\n #include \"quote.h\"\n #include \"packfile.h\"\ndiff --git a/builtin/credential-cache--daemon.c b/builtin/credential-cache--daemon.c\nindex 4caaf38b841..bc22f5c6d24 100644\n--- a/builtin/credential-cache--daemon.c\n+++ b/builtin/credential-cache--daemon.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/credential-cache.c b/builtin/credential-cache.c\nindex 5de8b9123bf..1918c474f02 100644\n--- a/builtin/credential-cache.c\n+++ b/builtin/credential-cache.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"credential.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/credential-store.c b/builtin/credential-store.c\nindex 128704078e9..e669e99dbfb 100644\n--- a/builtin/credential-store.c\n+++ b/builtin/credential-store.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/credential.c b/builtin/credential.c\nindex 796422c6fe7..14c8c6608b2 100644\n--- a/builtin/credential.c\n+++ b/builtin/credential.c\n@@ -1,3 +1,5 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n+\n #include \"git-compat-util.h\"\n #include \"credential.h\"\n #include \"builtin.h\"\ndiff --git a/builtin/describe.c b/builtin/describe.c\nindex 1c1c250fe0c..7929223c8b2 100644\n--- a/builtin/describe.c\n+++ b/builtin/describe.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"environment.h\"\ndiff --git a/builtin/diagnose.c b/builtin/diagnose.c\nindex 66a22d918e6..5ac7872b998 100644\n--- a/builtin/diagnose.c\n+++ b/builtin/diagnose.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/diff-files.c b/builtin/diff-files.c\nindex 7f4f9bcb3eb..b8ec420f867 100644\n--- a/builtin/diff-files.c\n+++ b/builtin/diff-files.c\n@@ -3,13 +3,13 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"diff.h\"\n #include \"diff-merges.h\"\n #include \"commit.h\"\n #include \"preload-index.h\"\n-#include \"repository.h\"\n #include \"revision.h\"\n \n static const char diff_files_usage[] =\ndiff --git a/builtin/diff-index.c b/builtin/diff-index.c\nindex 8abec38592f..e87f717d86e 100644\n--- a/builtin/diff-index.c\n+++ b/builtin/diff-index.c\n@@ -1,10 +1,10 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"diff.h\"\n #include \"diff-merges.h\"\n #include \"commit.h\"\n #include \"preload-index.h\"\n-#include \"repository.h\"\n #include \"revision.h\"\n #include \"setup.h\"\n \ndiff --git a/builtin/diff-tree.c b/builtin/diff-tree.c\nindex 841448b023f..715995c46fa 100644\n--- a/builtin/diff-tree.c\n+++ b/builtin/diff-tree.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"diff.h\"\n@@ -6,7 +7,6 @@\n #include \"hex.h\"\n #include \"log-tree.h\"\n #include \"read-cache-ll.h\"\n-#include \"repository.h\"\n #include \"revision.h\"\n #include \"tmp-objdir.h\"\n #include \"tree.h\"\ndiff --git a/builtin/diff.c b/builtin/diff.c\nindex 499b7872dd4..63e790b2291 100644\n--- a/builtin/diff.c\n+++ b/builtin/diff.c\n@@ -3,7 +3,7 @@\n  *\n  * Copyright (c) 2006 Junio C Hamano\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"ewah/ewok.h\"\ndiff --git a/builtin/difftool.c b/builtin/difftool.c\nindex c8700d67f4d..f7dfa1fd0da 100644\n--- a/builtin/difftool.c\n+++ b/builtin/difftool.c\n@@ -11,8 +11,9 @@\n  *\n  * Copyright (C) 2016 Johannes Schindelin\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+\n #include \"abspath.h\"\n #include \"config.h\"\n #include \"copy.h\"\ndiff --git a/builtin/fast-export.c b/builtin/fast-export.c\nindex 1bd5949dd24..e17f262e8e4 100644\n--- a/builtin/fast-export.c\n+++ b/builtin/fast-export.c\n@@ -3,6 +3,7 @@\n  *\n  * Copyright (C) 2007 Johannes E. Schindelin\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/fast-import.c b/builtin/fast-import.c\nindex 4b9e341aa44..1e7ab67f6e5 100644\n--- a/builtin/fast-import.c\n+++ b/builtin/fast-import.c\n@@ -1,9 +1,9 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"environment.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\n-#include \"repository.h\"\n #include \"config.h\"\n #include \"lockfile.h\"\n #include \"object.h\"\ndiff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c\nindex f12daa93498..49222a36fa6 100644\n--- a/builtin/fetch-pack.c\n+++ b/builtin/fetch-pack.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\ndiff --git a/builtin/fetch.c b/builtin/fetch.c\nindex 2385ea4952e..c900f577219 100644\n--- a/builtin/fetch.c\n+++ b/builtin/fetch.c\n@@ -1,13 +1,13 @@\n /*\n  * \"git fetch\"\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"config.h\"\n #include \"gettext.h\"\n #include \"environment.h\"\n #include \"hex.h\"\n-#include \"repository.h\"\n #include \"refs.h\"\n #include \"refspec.h\"\n #include \"object-name.h\"\ndiff --git a/builtin/fmt-merge-msg.c b/builtin/fmt-merge-msg.c\nindex 1fba4cf5590..324e904ac93 100644\n--- a/builtin/fmt-merge-msg.c\n+++ b/builtin/fmt-merge-msg.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"fmt-merge-msg.h\"\ndiff --git a/builtin/for-each-ref.c b/builtin/for-each-ref.c\nindex b1187587135..8085ebd8fe9 100644\n--- a/builtin/for-each-ref.c\n+++ b/builtin/for-each-ref.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"commit.h\"\n #include \"config.h\"\ndiff --git a/builtin/for-each-repo.c b/builtin/for-each-repo.c\nindex 93d82b952e9..fae7f91cf15 100644\n--- a/builtin/for-each-repo.c\n+++ b/builtin/for-each-repo.c\n@@ -1,9 +1,9 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\n #include \"parse-options.h\"\n #include \"path.h\"\n-#include \"repository.h\"\n #include \"run-command.h\"\n #include \"string-list.h\"\n \ndiff --git a/builtin/fsck.c b/builtin/fsck.c\nindex 87068cee09d..7f4e2f04143 100644\n--- a/builtin/fsck.c\n+++ b/builtin/fsck.c\n@@ -1,7 +1,7 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\n-#include \"repository.h\"\n #include \"config.h\"\n #include \"commit.h\"\n #include \"tree.h\"\ndiff --git a/builtin/fsmonitor--daemon.c b/builtin/fsmonitor--daemon.c\nindex 73a4b885661..ba8a6eebe5d 100644\n--- a/builtin/fsmonitor--daemon.c\n+++ b/builtin/fsmonitor--daemon.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"config.h\"\n@@ -11,7 +12,7 @@\n #include \"compat/fsmonitor/fsm-health.h\"\n #include \"compat/fsmonitor/fsm-listen.h\"\n #include \"fsmonitor--daemon.h\"\n-#include \"repository.h\"\n+\n #include \"simple-ipc.h\"\n #include \"khash.h\"\n #include \"run-command.h\"\ndiff --git a/builtin/gc.c b/builtin/gc.c\nindex 4469c058a02..a6dd2dea567 100644\n--- a/builtin/gc.c\n+++ b/builtin/gc.c\n@@ -9,13 +9,12 @@\n  *\n  * Copyright (c) 2006 Shawn O. Pearce\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"date.h\"\n #include \"environment.h\"\n #include \"hex.h\"\n-#include \"repository.h\"\n #include \"config.h\"\n #include \"tempfile.h\"\n #include \"lockfile.h\"\ndiff --git a/builtin/get-tar-commit-id.c b/builtin/get-tar-commit-id.c\nindex 6bec0d1854c..272384a6b15 100644\n--- a/builtin/get-tar-commit-id.c\n+++ b/builtin/get-tar-commit-id.c\n@@ -1,6 +1,7 @@\n /*\n  * Copyright (c) 2005, 2006 Rene Scharfe\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"commit.h\"\n #include \"tar.h\"\ndiff --git a/builtin/grep.c b/builtin/grep.c\nindex da11879c637..bc3439cabd5 100644\n--- a/builtin/grep.c\n+++ b/builtin/grep.c\n@@ -3,11 +3,11 @@\n  *\n  * Copyright (c) 2006 Junio C Hamano\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\n-#include \"repository.h\"\n #include \"config.h\"\n #include \"tag.h\"\n #include \"tree-walk.h\"\ndiff --git a/builtin/hash-object.c b/builtin/hash-object.c\nindex 090daea5cd8..a25f0403f44 100644\n--- a/builtin/hash-object.c\n+++ b/builtin/hash-object.c\n@@ -4,6 +4,7 @@\n  * Copyright (C) Linus Torvalds, 2005\n  * Copyright (C) Junio C Hamano, 2005\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"config.h\"\ndiff --git a/builtin/help.c b/builtin/help.c\nindex f7723bdf5c8..9c4cfe11d9e 100644\n--- a/builtin/help.c\n+++ b/builtin/help.c\n@@ -1,6 +1,8 @@\n+\n /*\n  * Builtin help command\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"exec-cmd.h\"\ndiff --git a/builtin/hook.c b/builtin/hook.c\nindex f02e2421ac0..367ef3e0b89 100644\n--- a/builtin/hook.c\n+++ b/builtin/hook.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/index-pack.c b/builtin/index-pack.c\nindex ece4648d047..e228c56ff27 100644\n--- a/builtin/index-pack.c\n+++ b/builtin/index-pack.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"delta.h\"\ndiff --git a/builtin/init-db.c b/builtin/init-db.c\nindex 94bd6075095..687cada4d7e 100644\n--- a/builtin/init-db.c\n+++ b/builtin/init-db.c\n@@ -3,6 +3,7 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"environment.h\"\n@@ -11,7 +12,6 @@\n #include \"parse-options.h\"\n #include \"path.h\"\n #include \"refs.h\"\n-#include \"repository.h\"\n #include \"setup.h\"\n #include \"strbuf.h\"\n \ndiff --git a/builtin/interpret-trailers.c b/builtin/interpret-trailers.c\nindex fb93e54e5ea..44f83625c11 100644\n--- a/builtin/interpret-trailers.c\n+++ b/builtin/interpret-trailers.c\n@@ -4,7 +4,7 @@\n  * Copyright (c) 2013, 2014 Christian Couder <chriscool@tuxfamily.org>\n  *\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"parse-options.h\"\ndiff --git a/builtin/log.c b/builtin/log.c\nindex 67140575f4b..e4533a99fda 100644\n--- a/builtin/log.c\n+++ b/builtin/log.c\n@@ -4,6 +4,7 @@\n  * (C) Copyright 2006 Linus Torvalds\n  *\t\t 2006 Junio Hamano\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"config.h\"\n@@ -37,7 +38,7 @@\n #include \"mailmap.h\"\n #include \"progress.h\"\n #include \"commit-slab.h\"\n-#include \"repository.h\"\n+\n #include \"commit-reach.h\"\n #include \"range-diff.h\"\n #include \"tmp-objdir.h\"\ndiff --git a/builtin/ls-files.c b/builtin/ls-files.c\nindex 7f45cb62cf6..6aaba08e305 100644\n--- a/builtin/ls-files.c\n+++ b/builtin/ls-files.c\n@@ -5,8 +5,8 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n-#include \"repository.h\"\n #include \"config.h\"\n #include \"convert.h\"\n #include \"quote.h\"\ndiff --git a/builtin/ls-remote.c b/builtin/ls-remote.c\nindex f2c2854d0c3..f723b3bf3bb 100644\n--- a/builtin/ls-remote.c\n+++ b/builtin/ls-remote.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\ndiff --git a/builtin/ls-tree.c b/builtin/ls-tree.c\nindex 363cb948d92..8542b5d53e4 100644\n--- a/builtin/ls-tree.c\n+++ b/builtin/ls-tree.c\n@@ -3,7 +3,9 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+\n #include \"config.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\ndiff --git a/builtin/mailinfo.c b/builtin/mailinfo.c\nindex 00bfcd1afa0..e17dec27b1d 100644\n--- a/builtin/mailinfo.c\n+++ b/builtin/mailinfo.c\n@@ -2,6 +2,7 @@\n  * Another stupid program, this one parsing the headers of an\n  * email to figure out authorship and subject\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"environment.h\"\ndiff --git a/builtin/mailsplit.c b/builtin/mailsplit.c\nindex b8f7150ce9a..24254221417 100644\n--- a/builtin/mailsplit.c\n+++ b/builtin/mailsplit.c\n@@ -4,6 +4,7 @@\n  * It just splits a mbox into a list of files: \"0001\" \"0002\" ..\n  * so you can process them further from there.\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"string-list.h\"\ndiff --git a/builtin/merge-base.c b/builtin/merge-base.c\nindex afeae8d8346..a20c93b11aa 100644\n--- a/builtin/merge-base.c\n+++ b/builtin/merge-base.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"commit.h\"\n@@ -5,7 +6,6 @@\n #include \"hex.h\"\n #include \"object-name.h\"\n #include \"parse-options.h\"\n-#include \"repository.h\"\n #include \"commit-reach.h\"\n \n static int show_merge_base(struct commit **rev, int rev_nr, int show_all)\ndiff --git a/builtin/merge-file.c b/builtin/merge-file.c\nindex f785813ddae..cb42865eb52 100644\n--- a/builtin/merge-file.c\n+++ b/builtin/merge-file.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"diff.h\"\ndiff --git a/builtin/merge-index.c b/builtin/merge-index.c\nindex 1309a8ff471..a5b87ee3c5e 100644\n--- a/builtin/merge-index.c\n+++ b/builtin/merge-index.c\n@@ -1,7 +1,7 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"hex.h\"\n #include \"read-cache-ll.h\"\n-#include \"repository.h\"\n #include \"run-command.h\"\n #include \"sparse-index.h\"\n \ndiff --git a/builtin/merge-ours.c b/builtin/merge-ours.c\nindex 62267f12dd8..1fcf53f0054 100644\n--- a/builtin/merge-ours.c\n+++ b/builtin/merge-ours.c\n@@ -7,10 +7,11 @@\n  *\n  * Pretend we resolved the heads, but declare our tree trumps everybody else.\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"git-compat-util.h\"\n #include \"builtin.h\"\n #include \"diff.h\"\n-#include \"repository.h\"\n+\n \n static const char builtin_merge_ours_usage[] =\n \t\"git merge-ours <base>... -- HEAD <remote>...\";\ndiff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c\nindex 2bd3fb0e553..1dd295558b2 100644\n--- a/builtin/merge-recursive.c\n+++ b/builtin/merge-recursive.c\n@@ -1,10 +1,10 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"gettext.h\"\n #include \"hash.h\"\n #include \"merge-recursive.h\"\n #include \"object-name.h\"\n-#include \"repository.h\"\n \n static const char builtin_merge_recursive_usage[] =\n \t\"git %s <base>... -- <head> <remote> ...\";\ndiff --git a/builtin/merge-tree.c b/builtin/merge-tree.c\nindex aeaec9d99f3..c5ed472967a 100644\n--- a/builtin/merge-tree.c\n+++ b/builtin/merge-tree.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"tree-walk.h\"\n #include \"xdiff-interface.h\"\n@@ -10,7 +11,6 @@\n #include \"object-name.h\"\n #include \"object-store-ll.h\"\n #include \"parse-options.h\"\n-#include \"repository.h\"\n #include \"blob.h\"\n #include \"merge-blobs.h\"\n #include \"quote.h\"\ndiff --git a/builtin/merge.c b/builtin/merge.c\nindex fd6dc00d6c0..c54ac7b67c6 100644\n--- a/builtin/merge.c\n+++ b/builtin/merge.c\n@@ -5,8 +5,9 @@\n  *\n  * Based on git-merge.sh by Junio C Hamano.\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+\n #include \"abspath.h\"\n #include \"advice.h\"\n #include \"config.h\"\ndiff --git a/builtin/mktag.c b/builtin/mktag.c\nindex 5cd8a3e6fa0..6e188dce50a 100644\n--- a/builtin/mktag.c\n+++ b/builtin/mktag.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\ndiff --git a/builtin/mktree.c b/builtin/mktree.c\nindex 72a1af1bca5..3c16faa40e3 100644\n--- a/builtin/mktree.c\n+++ b/builtin/mktree.c\n@@ -3,6 +3,7 @@\n  *\n  * Copyright (c) Junio C Hamano, 2006, 2009\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\ndiff --git a/builtin/multi-pack-index.c b/builtin/multi-pack-index.c\nindex 154fc77075f..e397723fe09 100644\n--- a/builtin/multi-pack-index.c\n+++ b/builtin/multi-pack-index.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"config.h\"\ndiff --git a/builtin/mv.c b/builtin/mv.c\nindex 6e2eb9cf4b8..472a2787376 100644\n--- a/builtin/mv.c\n+++ b/builtin/mv.c\n@@ -3,6 +3,7 @@\n  *\n  * Copyright (C) 2006 Johannes Schindelin\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n \n #include \"builtin.h\"\n #include \"abspath.h\"\n@@ -18,7 +19,7 @@\n #include \"string-list.h\"\n #include \"parse-options.h\"\n #include \"read-cache-ll.h\"\n-#include \"repository.h\"\n+\n #include \"setup.h\"\n #include \"strvec.h\"\n #include \"submodule.h\"\ndiff --git a/builtin/name-rev.c b/builtin/name-rev.c\nindex 19d92fb382d..7f08c38629c 100644\n--- a/builtin/name-rev.c\n+++ b/builtin/name-rev.c\n@@ -1,8 +1,8 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"environment.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\n-#include \"repository.h\"\n #include \"config.h\"\n #include \"commit.h\"\n #include \"tag.h\"\ndiff --git a/builtin/notes.c b/builtin/notes.c\nindex 49d8364af60..55ce2eb919a 100644\n--- a/builtin/notes.c\n+++ b/builtin/notes.c\n@@ -6,7 +6,7 @@\n  * Based on git-notes.sh by Johannes Schindelin,\n  * and builtin/tag.c by Kristian Høgsberg and Carlos Rica.\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"editor.h\"\n@@ -17,7 +17,7 @@\n #include \"object-name.h\"\n #include \"object-store-ll.h\"\n #include \"path.h\"\n-#include \"repository.h\"\n+\n #include \"pretty.h\"\n #include \"refs.h\"\n #include \"exec-cmd.h\"\ndiff --git a/builtin/pack-objects.c b/builtin/pack-objects.c\nindex 0260a9886aa..ff2f906170a 100644\n--- a/builtin/pack-objects.c\n+++ b/builtin/pack-objects.c\n@@ -1,8 +1,8 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"environment.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\n-#include \"repository.h\"\n #include \"config.h\"\n #include \"attr.h\"\n #include \"object.h\"\ndiff --git a/builtin/pack-redundant.c b/builtin/pack-redundant.c\nindex 84f0d83affb..81f4494d466 100644\n--- a/builtin/pack-redundant.c\n+++ b/builtin/pack-redundant.c\n@@ -5,11 +5,12 @@\n * This file is licensed under the GPL v2.\n *\n */\n+#define USE_THE_REPOSITORY_VARIABLE\n \n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\n-#include \"repository.h\"\n+\n #include \"packfile.h\"\n #include \"object-store-ll.h\"\n \ndiff --git a/builtin/pack-refs.c b/builtin/pack-refs.c\nindex 67dabb39756..2d83c1ed2ac 100644\n--- a/builtin/pack-refs.c\n+++ b/builtin/pack-refs.c\n@@ -1,9 +1,9 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\n #include \"parse-options.h\"\n #include \"refs.h\"\n-#include \"repository.h\"\n #include \"revision.h\"\n \n static char const * const pack_refs_usage[] = {\ndiff --git a/builtin/patch-id.c b/builtin/patch-id.c\nindex fa31a1b7a60..704044c2eb9 100644\n--- a/builtin/patch-id.c\n+++ b/builtin/patch-id.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"diff.h\"\ndiff --git a/builtin/prune-packed.c b/builtin/prune-packed.c\nindex 4d63f26b0a1..0720d825c83 100644\n--- a/builtin/prune-packed.c\n+++ b/builtin/prune-packed.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"parse-options.h\"\ndiff --git a/builtin/prune.c b/builtin/prune.c\nindex cbd4c38fa0a..f439d1b5bb9 100644\n--- a/builtin/prune.c\n+++ b/builtin/prune.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"commit.h\"\n #include \"diff.h\"\ndiff --git a/builtin/pull.c b/builtin/pull.c\nindex 1a926f0b0d7..149f2013205 100644\n--- a/builtin/pull.c\n+++ b/builtin/pull.c\n@@ -6,6 +6,7 @@\n  * Fetch one or more remote refs and merge it/them into the current HEAD.\n  */\n \n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"config.h\"\ndiff --git a/builtin/push.c b/builtin/push.c\nindex 9636ad52f4d..238cd5da829 100644\n--- a/builtin/push.c\n+++ b/builtin/push.c\n@@ -1,6 +1,7 @@\n /*\n  * \"git push\"\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"branch.h\"\n@@ -13,7 +14,6 @@\n #include \"transport.h\"\n #include \"parse-options.h\"\n #include \"pkt-line.h\"\n-#include \"repository.h\"\n #include \"submodule.h\"\n #include \"submodule-config.h\"\n #include \"send-pack.h\"\ndiff --git a/builtin/range-diff.c b/builtin/range-diff.c\nindex 3e67259aecc..1b33ab66a7b 100644\n--- a/builtin/range-diff.c\n+++ b/builtin/range-diff.c\n@@ -1,10 +1,11 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"object-name.h\"\n #include \"parse-options.h\"\n #include \"range-diff.h\"\n #include \"config.h\"\n-#include \"repository.h\"\n+\n \n static const char * const builtin_range_diff_usage[] = {\n N_(\"git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>\"),\ndiff --git a/builtin/read-tree.c b/builtin/read-tree.c\nindex 89410db6a7a..d2a807a828b 100644\n--- a/builtin/read-tree.c\n+++ b/builtin/read-tree.c\n@@ -3,7 +3,7 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\n@@ -16,7 +16,6 @@\n #include \"cache-tree.h\"\n #include \"unpack-trees.h\"\n #include \"parse-options.h\"\n-#include \"repository.h\"\n #include \"resolve-undo.h\"\n #include \"setup.h\"\n #include \"sparse-index.h\"\ndiff --git a/builtin/rebase.c b/builtin/rebase.c\nindex 727d9df847f..d2ad7d08631 100644\n--- a/builtin/rebase.c\n+++ b/builtin/rebase.c\n@@ -3,8 +3,9 @@\n  *\n  * Copyright (c) 2018 Pratik Karki\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+\n #include \"abspath.h\"\n #include \"environment.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/receive-pack.c b/builtin/receive-pack.c\nindex 36a6229c2a4..c4b766c6137 100644\n--- a/builtin/receive-pack.c\n+++ b/builtin/receive-pack.c\n@@ -1,6 +1,7 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n-#include \"repository.h\"\n+\n #include \"config.h\"\n #include \"environment.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/reflog.c b/builtin/reflog.c\nindex 6250f5ad49f..22df6834f71 100644\n--- a/builtin/reflog.c\n+++ b/builtin/reflog.c\n@@ -1,7 +1,7 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\n-#include \"repository.h\"\n #include \"revision.h\"\n #include \"reachable.h\"\n #include \"wildmatch.h\"\ndiff --git a/builtin/refs.c b/builtin/refs.c\nindex 70bca724d2a..24978a7b7b0 100644\n--- a/builtin/refs.c\n+++ b/builtin/refs.c\n@@ -1,9 +1,9 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"fsck.h\"\n #include \"parse-options.h\"\n #include \"refs.h\"\n-#include \"repository.h\"\n #include \"strbuf.h\"\n \n #define REFS_MIGRATE_USAGE \\\ndiff --git a/builtin/remote-ext.c b/builtin/remote-ext.c\nindex 33c8ae0fc7d..119f33895e7 100644\n--- a/builtin/remote-ext.c\n+++ b/builtin/remote-ext.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"transport.h\"\n #include \"run-command.h\"\ndiff --git a/builtin/remote-fd.c b/builtin/remote-fd.c\nindex ae896eda57b..b27ea81e4fb 100644\n--- a/builtin/remote-fd.c\n+++ b/builtin/remote-fd.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"transport.h\"\n \ndiff --git a/builtin/remote.c b/builtin/remote.c\nindex a73eea9ae4c..76670ddd8b4 100644\n--- a/builtin/remote.c\n+++ b/builtin/remote.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/repack.c b/builtin/repack.c\nindex b0c7dd14338..f1295ffbb3b 100644\n--- a/builtin/repack.c\n+++ b/builtin/repack.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"dir.h\"\ndiff --git a/builtin/replace.c b/builtin/replace.c\nindex 293ae6d327f..2daed943735 100644\n--- a/builtin/replace.c\n+++ b/builtin/replace.c\n@@ -7,7 +7,7 @@\n  * and Carlos Rica <jasampler@gmail.com> that was itself based on\n  * git-tag.sh and mktag.c by Linus Torvalds.\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"editor.h\"\n@@ -22,7 +22,6 @@\n #include \"object-name.h\"\n #include \"object-store-ll.h\"\n #include \"replace-object.h\"\n-#include \"repository.h\"\n #include \"tag.h\"\n #include \"wildmatch.h\"\n \ndiff --git a/builtin/replay.c b/builtin/replay.c\nindex c8e9098fc12..2d12a4e403f 100644\n--- a/builtin/replay.c\n+++ b/builtin/replay.c\n@@ -4,6 +4,7 @@\n \n #include \"git-compat-util.h\"\n \n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"environment.h\"\n #include \"hex.h\"\ndiff --git a/builtin/rerere.c b/builtin/rerere.c\nindex ae345155834..f7143c3f5d5 100644\n--- a/builtin/rerere.c\n+++ b/builtin/rerere.c\n@@ -1,8 +1,9 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\n #include \"parse-options.h\"\n-#include \"repository.h\"\n+\n #include \"string-list.h\"\n #include \"rerere.h\"\n #include \"xdiff/xdiff.h\"\ndiff --git a/builtin/reset.c b/builtin/reset.c\nindex 75529072606..cb054c2cc0e 100644\n--- a/builtin/reset.c\n+++ b/builtin/reset.c\n@@ -7,7 +7,7 @@\n  *\n  * Copyright (c) 2005, 2006 Linus Torvalds and Junio C Hamano\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"config.h\"\ndiff --git a/builtin/rev-list.c b/builtin/rev-list.c\nindex a4186d47ce3..f62bcbf2b14 100644\n--- a/builtin/rev-list.c\n+++ b/builtin/rev-list.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"commit.h\"\ndiff --git a/builtin/rev-parse.c b/builtin/rev-parse.c\nindex 26190aaa3ed..f2d90f69952 100644\n--- a/builtin/rev-parse.c\n+++ b/builtin/rev-parse.c\n@@ -3,8 +3,9 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+\n #include \"abspath.h\"\n #include \"config.h\"\n #include \"commit.h\"\ndiff --git a/builtin/revert.c b/builtin/revert.c\nindex 5f2ec3ade73..55ba1092c52 100644\n--- a/builtin/revert.c\n+++ b/builtin/revert.c\n@@ -1,9 +1,9 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"git-compat-util.h\"\n #include \"builtin.h\"\n #include \"parse-options.h\"\n #include \"diff.h\"\n #include \"gettext.h\"\n-#include \"repository.h\"\n #include \"revision.h\"\n #include \"rerere.h\"\n #include \"sequencer.h\"\ndiff --git a/builtin/rm.c b/builtin/rm.c\nindex 59077efa4b4..eaff027258d 100644\n--- a/builtin/rm.c\n+++ b/builtin/rm.c\n@@ -3,7 +3,7 @@\n  *\n  * Copyright (C) Linus Torvalds 2006\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"config.h\"\n@@ -15,7 +15,7 @@\n #include \"object-name.h\"\n #include \"parse-options.h\"\n #include \"read-cache.h\"\n-#include \"repository.h\"\n+\n #include \"string-list.h\"\n #include \"setup.h\"\n #include \"sparse-index.h\"\ndiff --git a/builtin/send-pack.c b/builtin/send-pack.c\nindex 522c2f4d133..81fc96d423a 100644\n--- a/builtin/send-pack.c\n+++ b/builtin/send-pack.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"hex.h\"\ndiff --git a/builtin/shortlog.c b/builtin/shortlog.c\nindex 70eb7890334..3ed5c460786 100644\n--- a/builtin/shortlog.c\n+++ b/builtin/shortlog.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"commit.h\"\n@@ -5,7 +6,6 @@\n #include \"environment.h\"\n #include \"gettext.h\"\n #include \"string-list.h\"\n-#include \"repository.h\"\n #include \"revision.h\"\n #include \"utf8.h\"\n #include \"mailmap.h\"\ndiff --git a/builtin/show-branch.c b/builtin/show-branch.c\nindex 05c10628df9..cd6bdf63bc1 100644\n--- a/builtin/show-branch.c\n+++ b/builtin/show-branch.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"environment.h\"\n@@ -10,7 +11,7 @@\n #include \"strvec.h\"\n #include \"object-name.h\"\n #include \"parse-options.h\"\n-#include \"repository.h\"\n+\n #include \"dir.h\"\n #include \"commit-slab.h\"\n #include \"date.h\"\ndiff --git a/builtin/show-index.c b/builtin/show-index.c\nindex 9e1f7ac9ca5..f164c01bbea 100644\n--- a/builtin/show-index.c\n+++ b/builtin/show-index.c\n@@ -1,10 +1,10 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"gettext.h\"\n #include \"hash.h\"\n #include \"hex.h\"\n #include \"pack.h\"\n #include \"parse-options.h\"\n-#include \"repository.h\"\n \n static const char *const show_index_usage[] = {\n \t\"git show-index [--object-format=<hash-algorithm>]\",\ndiff --git a/builtin/show-ref.c b/builtin/show-ref.c\nindex 6ee05f09a69..285cd3e4338 100644\n--- a/builtin/show-ref.c\n+++ b/builtin/show-ref.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/sparse-checkout.c b/builtin/sparse-checkout.c\nindex 23f1548fe54..5e930e5d639 100644\n--- a/builtin/sparse-checkout.c\n+++ b/builtin/sparse-checkout.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"dir.h\"\n@@ -7,7 +8,6 @@\n #include \"object-name.h\"\n #include \"parse-options.h\"\n #include \"pathspec.h\"\n-#include \"repository.h\"\n #include \"strbuf.h\"\n #include \"string-list.h\"\n #include \"lockfile.h\"\ndiff --git a/builtin/stash.c b/builtin/stash.c\nindex b10d41e1f2b..4c268f1ac5a 100644\n--- a/builtin/stash.c\n+++ b/builtin/stash.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"config.h\"\ndiff --git a/builtin/stripspace.c b/builtin/stripspace.c\nindex 674ef939769..e147f3ff92c 100644\n--- a/builtin/stripspace.c\n+++ b/builtin/stripspace.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"environment.h\"\ndiff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c\nindex cc07ab46a33..51ff5fa54da 100644\n--- a/builtin/submodule--helper.c\n+++ b/builtin/submodule--helper.c\n@@ -1,9 +1,10 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"environment.h\"\n #include \"gettext.h\"\n #include \"hex.h\"\n-#include \"repository.h\"\n+\n #include \"config.h\"\n #include \"parse-options.h\"\n #include \"quote.h\"\ndiff --git a/builtin/symbolic-ref.c b/builtin/symbolic-ref.c\nindex 9bc70229468..299d23d76a8 100644\n--- a/builtin/symbolic-ref.c\n+++ b/builtin/symbolic-ref.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/tag.c b/builtin/tag.c\nindex a80838eb8e0..ca2166e7e21 100644\n--- a/builtin/tag.c\n+++ b/builtin/tag.c\n@@ -5,7 +5,7 @@\n  *                    Carlos Rica <jasampler@gmail.com>\n  * Based on git-tag.sh and mktag.c by Linus Torvalds.\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"config.h\"\ndiff --git a/builtin/unpack-file.c b/builtin/unpack-file.c\nindex 97886840f8d..6da28257539 100644\n--- a/builtin/unpack-file.c\n+++ b/builtin/unpack-file.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"hex.h\"\ndiff --git a/builtin/unpack-objects.c b/builtin/unpack-objects.c\nindex 3bcdaaeb5fa..02b8d02f63f 100644\n--- a/builtin/unpack-objects.c\n+++ b/builtin/unpack-objects.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"bulk-checkin.h\"\n #include \"config.h\"\ndiff --git a/builtin/update-index.c b/builtin/update-index.c\nindex 1d1d87d08e3..a1a98aa7bca 100644\n--- a/builtin/update-index.c\n+++ b/builtin/update-index.c\n@@ -3,7 +3,7 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"bulk-checkin.h\"\n #include \"config.h\"\n@@ -22,7 +22,6 @@\n #include \"pathspec.h\"\n #include \"dir.h\"\n #include \"read-cache.h\"\n-#include \"repository.h\"\n #include \"setup.h\"\n #include \"sparse-index.h\"\n #include \"split-index.h\"\ndiff --git a/builtin/update-ref.c b/builtin/update-ref.c\nindex 06826a90515..8a98615dc86 100644\n--- a/builtin/update-ref.c\n+++ b/builtin/update-ref.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\n@@ -6,7 +7,6 @@\n #include \"object-name.h\"\n #include \"parse-options.h\"\n #include \"quote.h\"\n-#include \"repository.h\"\n \n static const char * const git_update_ref_usage[] = {\n \tN_(\"git update-ref [<options>] -d <refname> [<old-oid>]\"),\ndiff --git a/builtin/update-server-info.c b/builtin/update-server-info.c\nindex a5b7d86727c..6769611a025 100644\n--- a/builtin/update-server-info.c\n+++ b/builtin/update-server-info.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/upload-archive.c b/builtin/upload-archive.c\nindex dd84c83f137..9e9343f1213 100644\n--- a/builtin/upload-archive.c\n+++ b/builtin/upload-archive.c\n@@ -1,12 +1,12 @@\n /*\n  * Copyright (c) 2006 Franck Bui-Huu\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"archive.h\"\n #include \"path.h\"\n #include \"pkt-line.h\"\n #include \"sideband.h\"\n-#include \"repository.h\"\n #include \"run-command.h\"\n #include \"strvec.h\"\n \ndiff --git a/builtin/upload-pack.c b/builtin/upload-pack.c\nindex 3b6c83fbce3..363091c31e8 100644\n--- a/builtin/upload-pack.c\n+++ b/builtin/upload-pack.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"exec-cmd.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/var.c b/builtin/var.c\nindex 4a5c2649d6f..2ecaed51b44 100644\n--- a/builtin/var.c\n+++ b/builtin/var.c\n@@ -3,7 +3,9 @@\n  *\n  * Copyright (C) Eric Biederman, 2005\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n+\n #include \"attr.h\"\n #include \"config.h\"\n #include \"editor.h\"\ndiff --git a/builtin/verify-commit.c b/builtin/verify-commit.c\nindex c5859e5b2b4..779b7988ca9 100644\n--- a/builtin/verify-commit.c\n+++ b/builtin/verify-commit.c\n@@ -5,11 +5,11 @@\n  *\n  * Based on git-verify-tag\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\n #include \"object-name.h\"\n-#include \"repository.h\"\n #include \"commit.h\"\n #include \"parse-options.h\"\n #include \"gpg-interface.h\"\ndiff --git a/builtin/verify-pack.c b/builtin/verify-pack.c\nindex 7ad456649d2..34e4ed715f3 100644\n--- a/builtin/verify-pack.c\n+++ b/builtin/verify-pack.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/verify-tag.c b/builtin/verify-tag.c\nindex a7bef524191..f6b97048a57 100644\n--- a/builtin/verify-tag.c\n+++ b/builtin/verify-tag.c\n@@ -5,6 +5,7 @@\n  *\n  * Based on git-verify-tag.sh\n  */\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"gettext.h\"\ndiff --git a/builtin/worktree.c b/builtin/worktree.c\nindex 3b47f9832fa..c22b2e95f50 100644\n--- a/builtin/worktree.c\n+++ b/builtin/worktree.c\n@@ -1,3 +1,4 @@\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"abspath.h\"\n #include \"advice.h\"\n@@ -17,7 +18,6 @@\n #include \"read-cache-ll.h\"\n #include \"refs.h\"\n #include \"remote.h\"\n-#include \"repository.h\"\n #include \"run-command.h\"\n #include \"hook.h\"\n #include \"sigchain.h\"\ndiff --git a/builtin/write-tree.c b/builtin/write-tree.c\nindex 1b467d6ed23..de4ebf767d4 100644\n--- a/builtin/write-tree.c\n+++ b/builtin/write-tree.c\n@@ -3,7 +3,7 @@\n  *\n  * Copyright (C) Linus Torvalds, 2005\n  */\n-\n+#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"config.h\"\n #include \"environment.h\"\n@@ -12,7 +12,6 @@\n #include \"tree.h\"\n #include \"cache-tree.h\"\n #include \"parse-options.h\"\n-#include \"repository.h\"\n \n static const char * const write_tree_usage[] = {\n \tN_(\"git write-tree [--missing-ok] [--prefix=<prefix>/]\"),\n-- \ngitgitgadget\n\n"},{"id":"502781","messageId":"d32f8ade1e0b11f802f831da00058dbdb4bd2aa5.1726262178.git.gitgitgadget@gmail.com","threadId":"62067","inReplyTo":"pull.1778.v3.git.git.1726262177.gitgitgadget@gmail.com","subject":"[PATCH v3 4/4] add: pass in repo variable instead of global the_repository","fromName":"John Cai via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2024-09-13T21:16:17Z","receivedAt":"2024-09-13T21:16:28Z","isPatch":true,"sender":{"key":"johncai86@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2354211?v=4"},"body":"From: John Cai <johncai86@gmail.com>\n\nWith the repository variable available in the builtin function as an\nargument, pass this down into helper functions instead of using the\nglobal the_repository.\n\nSigned-off-by: John Cai <johncai86@gmail.com>\n---\n builtin/add.c    | 116 +++++++++++++++++++++++++----------------------\n builtin/commit.c |   2 +-\n commit.h         |   5 +-\n 3 files changed, 68 insertions(+), 55 deletions(-)\n\ndiff --git a/builtin/add.c b/builtin/add.c\nindex c893ff48d26..773b7224a49 100644\n--- a/builtin/add.c\n+++ b/builtin/add.c\n@@ -3,7 +3,6 @@\n  *\n  * Copyright (C) 2006 Linus Torvalds\n  */\n-#define USE_THE_REPOSITORY_VARIABLE\n #include \"builtin.h\"\n #include \"advice.h\"\n #include \"config.h\"\n@@ -35,24 +34,27 @@ static int pathspec_file_nul;\n static int include_sparse;\n static const char *pathspec_from_file;\n \n-static int chmod_pathspec(struct pathspec *pathspec, char flip, int show_only)\n+static int chmod_pathspec(struct repository *repo,\n+\t\t\t  struct pathspec *pathspec,\n+\t\t\t  char flip,\n+\t\t\t  int show_only)\n {\n \tint i, ret = 0;\n \n-\tfor (i = 0; i < the_repository->index->cache_nr; i++) {\n-\t\tstruct cache_entry *ce = the_repository->index->cache[i];\n+\tfor (i = 0; i < repo->index->cache_nr; i++) {\n+\t\tstruct cache_entry *ce = repo->index->cache[i];\n \t\tint err;\n \n \t\tif (!include_sparse &&\n \t\t    (ce_skip_worktree(ce) ||\n-\t\t     !path_in_sparse_checkout(ce->name, the_repository->index)))\n+\t\t     !path_in_sparse_checkout(ce->name, repo->index)))\n \t\t\tcontinue;\n \n-\t\tif (pathspec && !ce_path_match(the_repository->index, ce, pathspec, NULL))\n+\t\tif (pathspec && !ce_path_match(repo->index, ce, pathspec, NULL))\n \t\t\tcontinue;\n \n \t\tif (!show_only)\n-\t\t\terr = chmod_index_entry(the_repository->index, ce, flip);\n+\t\t\terr = chmod_index_entry(repo->index, ce, flip);\n \t\telse\n \t\t\terr = S_ISREG(ce->ce_mode) ? 0 : -1;\n \n@@ -63,31 +65,36 @@ static int chmod_pathspec(struct pathspec *pathspec, char flip, int show_only)\n \treturn ret;\n }\n \n-static int renormalize_tracked_files(const struct pathspec *pathspec, int flags)\n+static int renormalize_tracked_files(struct repository *repo,\n+\t\t\t\t     const struct pathspec *pathspec,\n+\t\t\t\t     int flags)\n {\n \tint i, retval = 0;\n \n-\tfor (i = 0; i < the_repository->index->cache_nr; i++) {\n-\t\tstruct cache_entry *ce = the_repository->index->cache[i];\n+\tfor (i = 0; i < repo->index->cache_nr; i++) {\n+\t\tstruct cache_entry *ce = repo->index->cache[i];\n \n \t\tif (!include_sparse &&\n \t\t    (ce_skip_worktree(ce) ||\n-\t\t     !path_in_sparse_checkout(ce->name, the_repository->index)))\n+\t\t     !path_in_sparse_checkout(ce->name, repo->index)))\n \t\t\tcontinue;\n \t\tif (ce_stage(ce))\n \t\t\tcontinue; /* do not touch unmerged paths */\n \t\tif (!S_ISREG(ce->ce_mode) && !S_ISLNK(ce->ce_mode))\n \t\t\tcontinue; /* do not touch non blobs */\n-\t\tif (pathspec && !ce_path_match(the_repository->index, ce, pathspec, NULL))\n+\t\tif (pathspec && !ce_path_match(repo->index, ce, pathspec, NULL))\n \t\t\tcontinue;\n-\t\tretval |= add_file_to_index(the_repository->index, ce->name,\n+\t\tretval |= add_file_to_index(repo->index, ce->name,\n \t\t\t\t\t    flags | ADD_CACHE_RENORMALIZE);\n \t}\n \n \treturn retval;\n }\n \n-static char *prune_directory(struct dir_struct *dir, struct pathspec *pathspec, int prefix)\n+static char *prune_directory(struct repository *repo,\n+\t\t\t     struct dir_struct *dir,\n+\t\t\t     struct pathspec *pathspec,\n+\t\t\t     int prefix)\n {\n \tchar *seen;\n \tint i;\n@@ -99,16 +106,16 @@ static char *prune_directory(struct dir_struct *dir, struct pathspec *pathspec,\n \ti = dir->nr;\n \twhile (--i >= 0) {\n \t\tstruct dir_entry *entry = *src++;\n-\t\tif (dir_path_match(the_repository->index, entry, pathspec, prefix, seen))\n+\t\tif (dir_path_match(repo->index, entry, pathspec, prefix, seen))\n \t\t\t*dst++ = entry;\n \t}\n \tdir->nr = dst - dir->entries;\n-\tadd_pathspec_matches_against_index(pathspec, the_repository->index, seen,\n+\tadd_pathspec_matches_against_index(pathspec, repo->index, seen,\n \t\t\t\t\t   PS_IGNORE_SKIP_WORKTREE);\n \treturn seen;\n }\n \n-static int refresh(int verbose, const struct pathspec *pathspec)\n+static int refresh(struct repository *repo, int verbose, const struct pathspec *pathspec)\n {\n \tchar *seen;\n \tint i, ret = 0;\n@@ -118,14 +125,14 @@ static int refresh(int verbose, const struct pathspec *pathspec)\n \t\t    (verbose ? REFRESH_IN_PORCELAIN : REFRESH_QUIET);\n \n \tseen = xcalloc(pathspec->nr, 1);\n-\trefresh_index(the_repository->index, flags, pathspec, seen,\n+\trefresh_index(repo->index, flags, pathspec, seen,\n \t\t      _(\"Unstaged changes after refreshing the index:\"));\n \tfor (i = 0; i < pathspec->nr; i++) {\n \t\tif (!seen[i]) {\n \t\t\tconst char *path = pathspec->items[i].original;\n \n \t\t\tif (matches_skip_worktree(pathspec, i, &skip_worktree_seen) ||\n-\t\t\t    !path_in_sparse_checkout(path, the_repository->index)) {\n+\t\t\t    !path_in_sparse_checkout(path, repo->index)) {\n \t\t\t\tstring_list_append(&only_match_skip_worktree,\n \t\t\t\t\t\t   pathspec->items[i].original);\n \t\t\t} else {\n@@ -146,7 +153,10 @@ static int refresh(int verbose, const struct pathspec *pathspec)\n \treturn ret;\n }\n \n-int interactive_add(const char **argv, const char *prefix, int patch)\n+int interactive_add(struct repository *repo,\n+\t\t    const char **argv,\n+\t\t    const char *prefix,\n+\t\t    int patch)\n {\n \tstruct pathspec pathspec;\n \tint ret;\n@@ -158,31 +168,31 @@ int interactive_add(const char **argv, const char *prefix, int patch)\n \t\t       prefix, argv);\n \n \tif (patch)\n-\t\tret = !!run_add_p(the_repository, ADD_P_ADD, NULL, &pathspec);\n+\t\tret = !!run_add_p(repo, ADD_P_ADD, NULL, &pathspec);\n \telse\n-\t\tret = !!run_add_i(the_repository, &pathspec);\n+\t\tret = !!run_add_i(repo, &pathspec);\n \n \tclear_pathspec(&pathspec);\n \treturn ret;\n }\n \n-static int edit_patch(int argc,\n+static int edit_patch(struct repository *repo,\n+\t\t      int argc,\n \t\t      const char **argv,\n-\t\t      const char *prefix,\n-\t\t      struct repository *repo UNUSED)\n+\t\t      const char *prefix)\n {\n-\tchar *file = git_pathdup(\"ADD_EDIT.patch\");\n+\tchar *file = repo_git_path(repo, \"ADD_EDIT.patch\");\n \tstruct child_process child = CHILD_PROCESS_INIT;\n \tstruct rev_info rev;\n \tint out;\n \tstruct stat st;\n \n-\tgit_config(git_diff_basic_config, NULL); /* no \"diff\" UI options */\n+\trepo_config(repo, git_diff_basic_config, NULL);\n \n-\tif (repo_read_index(the_repository) < 0)\n+\tif (repo_read_index(repo) < 0)\n \t\tdie(_(\"could not read the index\"));\n \n-\trepo_init_revisions(the_repository, &rev, prefix);\n+\trepo_init_revisions(repo, &rev, prefix);\n \trev.diffopt.context = 7;\n \n \targc = setup_revisions(argc, argv, &rev, NULL);\n@@ -320,7 +330,7 @@ static void check_embedded_repo(const char *path)\n \tstrbuf_release(&name);\n }\n \n-static int add_files(struct dir_struct *dir, int flags)\n+static int add_files(struct repository *repo, struct dir_struct *dir, int flags)\n {\n \tint i, exit_status = 0;\n \tstruct string_list matched_sparse_paths = STRING_LIST_INIT_NODUP;\n@@ -336,12 +346,12 @@ static int add_files(struct dir_struct *dir, int flags)\n \n \tfor (i = 0; i < dir->nr; i++) {\n \t\tif (!include_sparse &&\n-\t\t    !path_in_sparse_checkout(dir->entries[i]->name, the_repository->index)) {\n+\t\t    !path_in_sparse_checkout(dir->entries[i]->name, repo->index)) {\n \t\t\tstring_list_append(&matched_sparse_paths,\n \t\t\t\t\t   dir->entries[i]->name);\n \t\t\tcontinue;\n \t\t}\n-\t\tif (add_file_to_index(the_repository->index, dir->entries[i]->name, flags)) {\n+\t\tif (add_file_to_index(repo->index, dir->entries[i]->name, flags)) {\n \t\t\tif (!ignore_add_errors)\n \t\t\t\tdie(_(\"adding files failed\"));\n \t\t\texit_status = 1;\n@@ -363,7 +373,7 @@ static int add_files(struct dir_struct *dir, int flags)\n int cmd_add(int argc,\n \t    const char **argv,\n \t    const char *prefix,\n-\t    struct repository *repo UNUSED)\n+\t    struct repository *repo)\n {\n \tint exit_status = 0;\n \tstruct pathspec pathspec;\n@@ -375,7 +385,7 @@ int cmd_add(int argc,\n \tchar *ps_matched = NULL;\n \tstruct lock_file lock_file = LOCK_INIT;\n \n-\tgit_config(add_config, NULL);\n+\trepo_config(repo, add_config, NULL);\n \n \targc = parse_options(argc, argv, prefix, builtin_add_options,\n \t\t\t  builtin_add_usage, PARSE_OPT_KEEP_ARGV0);\n@@ -386,13 +396,13 @@ int cmd_add(int argc,\n \t\t\tdie(_(\"options '%s' and '%s' cannot be used together\"), \"--dry-run\", \"--interactive/--patch\");\n \t\tif (pathspec_from_file)\n \t\t\tdie(_(\"options '%s' and '%s' cannot be used together\"), \"--pathspec-from-file\", \"--interactive/--patch\");\n-\t\texit(interactive_add(argv + 1, prefix, patch_interactive));\n+\t\texit(interactive_add(repo, argv + 1, prefix, patch_interactive));\n \t}\n \n \tif (edit_interactive) {\n \t\tif (pathspec_from_file)\n \t\t\tdie(_(\"options '%s' and '%s' cannot be used together\"), \"--pathspec-from-file\", \"--edit\");\n-\t\treturn(edit_patch(argc, argv, prefix, the_repository));\n+\t\treturn(edit_patch(repo, argc, argv, prefix));\n \t}\n \targc--;\n \targv++;\n@@ -415,10 +425,10 @@ int cmd_add(int argc,\n \tadd_new_files = !take_worktree_changes && !refresh_only && !add_renormalize;\n \trequire_pathspec = !(take_worktree_changes || (0 < addremove_explicit));\n \n-\tprepare_repo_settings(the_repository);\n-\tthe_repository->settings.command_requires_full_index = 0;\n+\tprepare_repo_settings(repo);\n+\trepo->settings.command_requires_full_index = 0;\n \n-\trepo_hold_locked_index(the_repository, &lock_file, LOCK_DIE_ON_ERROR);\n+\trepo_hold_locked_index(repo, &lock_file, LOCK_DIE_ON_ERROR);\n \n \t/*\n \t * Check the \"pathspec '%s' did not match any files\" block\n@@ -459,11 +469,11 @@ int cmd_add(int argc,\n \t\t (!(addremove || take_worktree_changes)\n \t\t  ? ADD_CACHE_IGNORE_REMOVAL : 0));\n \n-\tif (repo_read_index_preload(the_repository, &pathspec, 0) < 0)\n+\tif (repo_read_index_preload(repo, &pathspec, 0) < 0)\n \t\tdie(_(\"index file corrupt\"));\n \n-\tdie_in_unpopulated_submodule(the_repository->index, prefix);\n-\tdie_path_inside_submodule(the_repository->index, &pathspec);\n+\tdie_in_unpopulated_submodule(repo->index, prefix);\n+\tdie_path_inside_submodule(repo->index, &pathspec);\n \n \tif (add_new_files) {\n \t\tint baselen;\n@@ -475,13 +485,13 @@ int cmd_add(int argc,\n \t\t}\n \n \t\t/* This picks up the paths that are not tracked */\n-\t\tbaselen = fill_directory(&dir, the_repository->index, &pathspec);\n+\t\tbaselen = fill_directory(&dir, repo->index, &pathspec);\n \t\tif (pathspec.nr)\n-\t\t\tseen = prune_directory(&dir, &pathspec, baselen);\n+\t\t\tseen = prune_directory(repo, &dir, &pathspec, baselen);\n \t}\n \n \tif (refresh_only) {\n-\t\texit_status |= refresh(verbose, &pathspec);\n+\t\texit_status |= refresh(repo, verbose, &pathspec);\n \t\tgoto finish;\n \t}\n \n@@ -492,7 +502,7 @@ int cmd_add(int argc,\n \n \t\tif (!seen)\n \t\t\tseen = find_pathspecs_matching_against_index(&pathspec,\n-\t\t\t\t\tthe_repository->index, PS_IGNORE_SKIP_WORKTREE);\n+\t\t\t\t\trepo->index, PS_IGNORE_SKIP_WORKTREE);\n \n \t\t/*\n \t\t * file_exists() assumes exact match\n@@ -528,8 +538,8 @@ int cmd_add(int argc,\n \t\t\t    !file_exists(path)) {\n \t\t\t\tif (ignore_missing) {\n \t\t\t\t\tint dtype = DT_UNKNOWN;\n-\t\t\t\t\tif (is_excluded(&dir, the_repository->index, path, &dtype))\n-\t\t\t\t\t\tdir_add_ignored(&dir, the_repository->index,\n+\t\t\t\t\tif (is_excluded(&dir, repo->index, path, &dtype))\n+\t\t\t\t\t\tdir_add_ignored(&dir, repo->index,\n \t\t\t\t\t\t\t\tpath, pathspec.items[i].len);\n \t\t\t\t} else\n \t\t\t\t\tdie(_(\"pathspec '%s' did not match any files\"),\n@@ -552,9 +562,9 @@ int cmd_add(int argc,\n \n \tps_matched = xcalloc(pathspec.nr, 1);\n \tif (add_renormalize)\n-\t\texit_status |= renormalize_tracked_files(&pathspec, flags);\n+\t\texit_status |= renormalize_tracked_files(repo, &pathspec, flags);\n \telse\n-\t\texit_status |= add_files_to_cache(the_repository, prefix,\n+\t\texit_status |= add_files_to_cache(repo, prefix,\n \t\t\t\t\t\t  &pathspec, ps_matched,\n \t\t\t\t\t\t  include_sparse, flags);\n \n@@ -563,14 +573,14 @@ int cmd_add(int argc,\n \t\texit(128);\n \n \tif (add_new_files)\n-\t\texit_status |= add_files(&dir, flags);\n+\t\texit_status |= add_files(repo, &dir, flags);\n \n \tif (chmod_arg && pathspec.nr)\n-\t\texit_status |= chmod_pathspec(&pathspec, chmod_arg[0], show_only);\n+\t\texit_status |= chmod_pathspec(repo, &pathspec, chmod_arg[0], show_only);\n \tend_odb_transaction();\n \n finish:\n-\tif (write_locked_index(the_repository->index, &lock_file,\n+\tif (write_locked_index(repo->index, &lock_file,\n \t\t\t       COMMIT_LOCK | SKIP_IF_UNCHANGED))\n \t\tdie(_(\"unable to write new index file\"));\n \ndiff --git a/builtin/commit.c b/builtin/commit.c\nindex fd1cc42c5a6..6c79923ee04 100644\n--- a/builtin/commit.c\n+++ b/builtin/commit.c\n@@ -395,7 +395,7 @@ static const char *prepare_index(const char **argv, const char *prefix,\n \t\told_index_env = xstrdup_or_null(getenv(INDEX_ENVIRONMENT));\n \t\tsetenv(INDEX_ENVIRONMENT, the_repository->index_file, 1);\n \n-\t\tif (interactive_add(argv, prefix, patch_interactive) != 0)\n+\t\tif (interactive_add(the_repository, argv, prefix, patch_interactive) != 0)\n \t\t\tdie(_(\"interactive add failed\"));\n \n \t\tthe_repository->index_file = old_repo_index_file;\ndiff --git a/commit.h b/commit.h\nindex 0e5fce543c2..c3ddaaf30f9 100644\n--- a/commit.h\n+++ b/commit.h\n@@ -253,7 +253,10 @@ struct oid_array;\n struct ref;\n int for_each_commit_graft(each_commit_graft_fn, void *);\n \n-int interactive_add(const char **argv, const char *prefix, int patch);\n+int interactive_add(struct repository *repo,\n+\t\t    const char **argv,\n+\t\t    const char *prefix,\n+\t\t    int patch);\n \n struct commit_extra_header {\n \tstruct commit_extra_header *next;\n-- \ngitgitgadget\n"},{"id":"502783","messageId":"xmqqcyl7w87y.fsf@gitster.g","threadId":"62067","inReplyTo":"7becd3751fc73a51a1791427b2232fc94f1c9ae9.1726262178.git.gitgitgadget@gmail.com","subject":"Re: [PATCH v3 2/4] builtin: remove USE_THE_REPOSITORY_VARIABLE from builtin.h","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2024-09-13T21:32:17Z","receivedAt":"2024-09-13T21:32:20Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"John Cai via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n\n> From: John Cai <johncai86@gmail.com>\n>\n> Instead of including USE_THE_REPOSITORY_VARIABLE by default on every\n> builtin, remove it from builtin.h and add it to all the builtins that\n> reference the_repository.\n\nI'll do\n    \"reference the_repository\" -> \"include builtin.h\"\nwhile queuing.\n\nThe next step removes #define from the ones that do not reference\nthe_repository, and because it is not empty, by definition, this\nstep cannot be adding #define only to those that reference\nthe_repository.\n\n> Also, remove the include statement for repository.h since it gets\n> brought in through builtin.h.\n>\n> The next step will be to migrate each builtin\n> from having to use the_repository.\n\nThanks.\n"},{"id":"502784","messageId":"xmqq8qvvw82c.fsf@gitster.g","threadId":"62067","inReplyTo":"d32f8ade1e0b11f802f831da00058dbdb4bd2aa5.1726262178.git.gitgitgadget@gmail.com","subject":"Re: [PATCH v3 4/4] add: pass in repo variable instead of global the_repository","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2024-09-13T21:35:39Z","receivedAt":"2024-09-13T21:35:42Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"John Cai via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n\n> From: John Cai <johncai86@gmail.com>\n>\n> With the repository variable available in the builtin function as an\n> argument, pass this down into helper functions instead of using the\n> global the_repository.\n>\n> Signed-off-by: John Cai <johncai86@gmail.com>\n> ---\n>  builtin/add.c    | 116 +++++++++++++++++++++++++----------------------\n>  builtin/commit.c |   2 +-\n>  commit.h         |   5 +-\n>  3 files changed, 68 insertions(+), 55 deletions(-)\n\nLooking good.\n\nLet me mark the series for 'next'.\n\nThanks.\n"}]}