Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2023-04-06 23:38:31 +0300
committerJunio C Hamano <gitster@pobox.com>2023-04-06 23:38:31 +0300
commit6047b28eb7e1a0b0061c5310034f7b5683ea401a (patch)
treeaaf1292a72a358ebefa2e5e12756a84ecf1fba02
parent72871b198f50962a555685726e42f435cdd4efa1 (diff)
parentec2f02696157d3781fbfd410f0017c49cc1eda01 (diff)
Merge branch 'en/header-split-cleanup'
Split key function and data structure definitions out of cache.h to new header files and adjust the users. * en/header-split-cleanup: csum-file.h: remove unnecessary inclusion of cache.h write-or-die.h: move declarations for write-or-die.c functions from cache.h treewide: remove cache.h inclusion due to setup.h changes setup.h: move declarations for setup.c functions from cache.h treewide: remove cache.h inclusion due to environment.h changes environment.h: move declarations for environment.c functions from cache.h treewide: remove unnecessary includes of cache.h wrapper.h: move declarations for wrapper.c functions from cache.h path.h: move function declarations for path.c functions from cache.h cache.h: remove expand_user_path() abspath.h: move absolute path functions from cache.h environment: move comment_line_char from cache.h treewide: remove unnecessary cache.h inclusion from several sources treewide: remove unnecessary inclusion of gettext.h treewide: be explicit about dependence on gettext.h treewide: remove unnecessary cache.h inclusion from a few headers
-rw-r--r--abspath.c4
-rw-r--r--abspath.h33
-rw-r--r--add-interactive.c1
-rw-r--r--add-patch.c2
-rw-r--r--apply.c5
-rw-r--r--archive-tar.c2
-rw-r--r--archive-zip.c2
-rw-r--r--archive.c4
-rw-r--r--attr.c3
-rw-r--r--bisect.c2
-rw-r--r--blame.c2
-rw-r--r--branch.c2
-rw-r--r--builtin/add.c1
-rw-r--r--builtin/am.c4
-rw-r--r--builtin/apply.c1
-rw-r--r--builtin/archive.c1
-rw-r--r--builtin/bisect.c3
-rw-r--r--builtin/blame.c4
-rw-r--r--builtin/branch.c3
-rw-r--r--builtin/bugreport.c5
-rw-r--r--builtin/bundle.c3
-rw-r--r--builtin/cat-file.c3
-rw-r--r--builtin/check-attr.c4
-rw-r--r--builtin/check-ignore.c2
-rw-r--r--builtin/check-mailmap.c2
-rw-r--r--builtin/check-ref-format.c1
-rw-r--r--builtin/checkout--worker.c1
-rw-r--r--builtin/checkout-index.c2
-rw-r--r--builtin/checkout.c3
-rw-r--r--builtin/clean.c3
-rw-r--r--builtin/clone.c4
-rw-r--r--builtin/column.c1
-rw-r--r--builtin/commit-graph.c2
-rw-r--r--builtin/commit-tree.c1
-rw-r--r--builtin/commit.c2
-rw-r--r--builtin/config.c5
-rw-r--r--builtin/count-objects.c2
-rw-r--r--builtin/credential-cache--daemon.c2
-rw-r--r--builtin/credential-cache.c3
-rw-r--r--builtin/credential-store.c2
-rw-r--r--builtin/describe.c3
-rw-r--r--builtin/diagnose.c2
-rw-r--r--builtin/diff-index.c1
-rw-r--r--builtin/diff-tree.c1
-rw-r--r--builtin/diff.c2
-rw-r--r--builtin/difftool.c5
-rw-r--r--builtin/fast-export.c1
-rw-r--r--builtin/fast-import.c4
-rw-r--r--builtin/fetch-pack.c1
-rw-r--r--builtin/fetch.c2
-rw-r--r--builtin/fmt-merge-msg.c2
-rw-r--r--builtin/for-each-ref.c1
-rw-r--r--builtin/for-each-repo.c1
-rw-r--r--builtin/fsck.c1
-rw-r--r--builtin/fsmonitor--daemon.c3
-rw-r--r--builtin/gc.c5
-rw-r--r--builtin/get-tar-commit-id.c1
-rw-r--r--builtin/grep.c3
-rw-r--r--builtin/hash-object.c4
-rw-r--r--builtin/help.c2
-rw-r--r--builtin/hook.c1
-rw-r--r--builtin/index-pack.c4
-rw-r--r--builtin/init-db.c5
-rw-r--r--builtin/interpret-trailers.c1
-rw-r--r--builtin/log.c4
-rw-r--r--builtin/ls-files.c2
-rw-r--r--builtin/ls-remote.c1
-rw-r--r--builtin/ls-tree.c1
-rw-r--r--builtin/mailinfo.c3
-rw-r--r--builtin/mailsplit.c1
-rw-r--r--builtin/merge-base.c1
-rw-r--r--builtin/merge-file.c3
-rw-r--r--builtin/merge-recursive.c1
-rw-r--r--builtin/merge-tree.c1
-rw-r--r--builtin/merge.c4
-rw-r--r--builtin/mktag.c1
-rw-r--r--builtin/mktree.c1
-rw-r--r--builtin/multi-pack-index.c3
-rw-r--r--builtin/mv.c4
-rw-r--r--builtin/name-rev.c2
-rw-r--r--builtin/notes.c2
-rw-r--r--builtin/pack-objects.c3
-rw-r--r--builtin/pack-redundant.c1
-rw-r--r--builtin/pack-refs.c1
-rw-r--r--builtin/patch-id.c1
-rw-r--r--builtin/prune-packed.c1
-rw-r--r--builtin/prune.c2
-rw-r--r--builtin/pull.c1
-rw-r--r--builtin/push.c2
-rw-r--r--builtin/range-diff.c1
-rw-r--r--builtin/read-tree.c2
-rw-r--r--builtin/rebase.c4
-rw-r--r--builtin/receive-pack.c4
-rw-r--r--builtin/reflog.c1
-rw-r--r--builtin/remote.c1
-rw-r--r--builtin/repack.c2
-rw-r--r--builtin/replace.c2
-rw-r--r--builtin/rerere.c2
-rw-r--r--builtin/reset.c3
-rw-r--r--builtin/rev-list.c2
-rw-r--r--builtin/rev-parse.c4
-rw-r--r--builtin/revert.c1
-rw-r--r--builtin/rm.c2
-rw-r--r--builtin/send-pack.c1
-rw-r--r--builtin/shortlog.c3
-rw-r--r--builtin/show-branch.c2
-rw-r--r--builtin/show-index.c1
-rw-r--r--builtin/show-ref.c1
-rw-r--r--builtin/sparse-checkout.c3
-rw-r--r--builtin/stash.c4
-rw-r--r--builtin/stripspace.c3
-rw-r--r--builtin/submodule--helper.c4
-rw-r--r--builtin/symbolic-ref.c1
-rw-r--r--builtin/tag.c3
-rw-r--r--builtin/unpack-file.c1
-rw-r--r--builtin/unpack-objects.c2
-rw-r--r--builtin/update-index.c4
-rw-r--r--builtin/update-ref.c1
-rw-r--r--builtin/update-server-info.c1
-rw-r--r--builtin/upload-pack.c1
-rw-r--r--builtin/verify-commit.c1
-rw-r--r--builtin/verify-pack.c1
-rw-r--r--builtin/verify-tag.c1
-rw-r--r--builtin/worktree.c4
-rw-r--r--builtin/write-tree.c2
-rw-r--r--bulk-checkin.c4
-rw-r--r--bulk-checkin.h2
-rw-r--r--bundle-uri.c2
-rw-r--r--bundle.c3
-rw-r--r--bundle.h1
-rw-r--r--cache-tree.c3
-rw-r--r--cache.h571
-rw-r--r--chdir-notify.c1
-rw-r--r--chunk-format.c2
-rw-r--r--color.c1
-rw-r--r--combine-diff.c1
-rw-r--r--commit-graph.c4
-rw-r--r--commit.c3
-rw-r--r--common-main.c2
-rw-r--r--compat/disk.h2
-rw-r--r--compat/fsmonitor/fsm-health-win32.c1
-rw-r--r--compat/fsmonitor/fsm-listen-darwin.c1
-rw-r--r--compat/fsmonitor/fsm-listen-win32.c1
-rw-r--r--compat/fsmonitor/fsm-path-utils-darwin.c1
-rw-r--r--compat/fsmonitor/fsm-path-utils-win32.c1
-rw-r--r--compat/linux/procinfo.c2
-rw-r--r--compat/mingw.c4
-rw-r--r--compat/precompose_utf8.c2
-rw-r--r--compat/simple-ipc/ipc-shared.c2
-rw-r--r--compat/simple-ipc/ipc-unix-socket.c1
-rw-r--r--compat/simple-ipc/ipc-win32.c2
-rw-r--r--compat/terminal.c4
-rw-r--r--config.c7
-rw-r--r--connect.c2
-rw-r--r--connected.c3
-rw-r--r--convert.c2
-rw-r--r--copy.c1
-rw-r--r--credential.c2
-rw-r--r--csum-file.c3
-rw-r--r--csum-file.h2
-rw-r--r--daemon.c4
-rw-r--r--date.c1
-rw-r--r--delta-islands.c3
-rw-r--r--diagnose.c2
-rw-r--r--diff-lib.c1
-rw-r--r--diff-no-index.c2
-rw-r--r--diff.c5
-rw-r--r--dir.c5
-rw-r--r--editor.c3
-rw-r--r--entry.c3
-rw-r--r--environment.c5
-rw-r--r--environment.h220
-rw-r--r--exec-cmd.c3
-rw-r--r--fetch-pack.c5
-rw-r--r--fmt-merge-msg.c3
-rw-r--r--fsck.c2
-rw-r--r--fsmonitor-ipc.c1
-rw-r--r--fsmonitor.c1
-rw-r--r--gettext.c4
-rw-r--r--git.c3
-rw-r--r--gpg-interface.c6
-rw-r--r--grep.c3
-rw-r--r--http-backend.c5
-rw-r--r--http-fetch.c2
-rw-r--r--http-push.c2
-rw-r--r--imap-send.c3
-rw-r--r--line-log.c2
-rw-r--r--list-objects-filter-options.h1
-rw-r--r--list-objects-filter.c1
-rw-r--r--list-objects.c1
-rw-r--r--ll-merge.c1
-rw-r--r--lockfile.c4
-rw-r--r--log-tree.c2
-rw-r--r--ls-refs.c4
-rw-r--r--mailmap.c2
-rw-r--r--merge-ort-wrappers.c1
-rw-r--r--merge-ort.c2
-rw-r--r--merge-recursive.c3
-rw-r--r--merge.c1
-rw-r--r--midx.c4
-rw-r--r--name-hash.c2
-rw-r--r--negotiator/default.c2
-rw-r--r--negotiator/skipping.c2
-rw-r--r--notes-cache.c2
-rw-r--r--notes-merge.c2
-rw-r--r--notes-utils.c4
-rw-r--r--notes.c1
-rw-r--r--object-file.c7
-rw-r--r--object-name.c3
-rw-r--r--object.c1
-rw-r--r--pack-bitmap-write.c5
-rw-r--r--pack-bitmap.c3
-rw-r--r--pack-check.c1
-rw-r--r--pack-mtimes.c3
-rw-r--r--pack-revindex.c1
-rw-r--r--pack-write.c2
-rw-r--r--pack.h2
-rw-r--r--packfile.c5
-rw-r--r--packfile.h4
-rw-r--r--parallel-checkout.c2
-rw-r--r--parse-options-cb.c2
-rw-r--r--parse-options.c3
-rw-r--r--parse-options.h2
-rw-r--r--patch-ids.c2
-rw-r--r--path.c6
-rw-r--r--path.h62
-rw-r--r--pathspec.c4
-rw-r--r--pkt-line.c3
-rw-r--r--preload-index.c2
-rw-r--r--pretty.c2
-rw-r--r--progress.c1
-rw-r--r--promisor-remote.c1
-rw-r--r--prompt.c3
-rw-r--r--protocol.c1
-rw-r--r--prune-packed.c2
-rw-r--r--range-diff.c2
-rw-r--r--reachable.c3
-rw-r--r--read-cache.c3
-rw-r--r--rebase-interactive.c3
-rw-r--r--ref-filter.c4
-rw-r--r--ref-filter.h1
-rw-r--r--reflog.c3
-rw-r--r--refs.c6
-rw-r--r--refs.h1
-rw-r--r--refs/files-backend.c7
-rw-r--r--refs/iterator.c2
-rw-r--r--refs/packed-backend.c4
-rw-r--r--refspec.c1
-rw-r--r--remote-curl.c4
-rw-r--r--remote.c6
-rw-r--r--replace-object.c3
-rw-r--r--repository.c2
-rw-r--r--rerere.c3
-rw-r--r--rerere.h1
-rw-r--r--reset.c1
-rw-r--r--revision.c3
-rw-r--r--run-command.c2
-rw-r--r--scalar.c2
-rw-r--r--send-pack.c4
-rw-r--r--sequencer.c4
-rw-r--r--server-info.c4
-rw-r--r--setup.c4
-rw-r--r--setup.h168
-rw-r--r--shallow.c3
-rw-r--r--sideband.c2
-rw-r--r--sparse-index.c2
-rw-r--r--split-index.c1
-rw-r--r--strbuf.c6
-rw-r--r--streaming.c2
-rw-r--r--streaming.h4
-rw-r--r--submodule-config.c2
-rw-r--r--submodule.c6
-rw-r--r--symlinks.c2
-rw-r--r--t/helper/test-advise.c2
-rw-r--r--t/helper/test-bitmap.c3
-rw-r--r--t/helper/test-bloom.c4
-rw-r--r--t/helper/test-bundle-uri.c1
-rw-r--r--t/helper/test-cache-tree.c2
-rw-r--r--t/helper/test-config.c2
-rw-r--r--t/helper/test-delta.c2
-rw-r--r--t/helper/test-dump-cache-tree.c2
-rw-r--r--t/helper/test-dump-fsmonitor.c1
-rw-r--r--t/helper/test-dump-split-index.c1
-rw-r--r--t/helper/test-dump-untracked-cache.c1
-rw-r--r--t/helper/test-fast-rebase.c5
-rw-r--r--t/helper/test-fsmonitor-client.c2
-rw-r--r--t/helper/test-hash.c1
-rw-r--r--t/helper/test-lazy-init-name-hash.c2
-rw-r--r--t/helper/test-match-trees.c1
-rw-r--r--t/helper/test-oid-array.c1
-rw-r--r--t/helper/test-oidmap.c1
-rw-r--r--t/helper/test-oidtree.c1
-rw-r--r--t/helper/test-pack-mtimes.c2
-rw-r--r--t/helper/test-parse-pathspec-file.c1
-rw-r--r--t/helper/test-partial-clone.c4
-rw-r--r--t/helper/test-path-utils.c3
-rw-r--r--t/helper/test-pkt-line.c3
-rw-r--r--t/helper/test-proc-receive.c4
-rw-r--r--t/helper/test-progress.c1
-rw-r--r--t/helper/test-reach.c3
-rw-r--r--t/helper/test-read-cache.c2
-rw-r--r--t/helper/test-read-graph.c2
-rw-r--r--t/helper/test-read-midx.c1
-rw-r--r--t/helper/test-ref-store.c2
-rw-r--r--t/helper/test-repository.c3
-rw-r--r--t/helper/test-revision-walking.c2
-rw-r--r--t/helper/test-run-command.c1
-rw-r--r--t/helper/test-scrap-cache-tree.c1
-rw-r--r--t/helper/test-serve-v2.c3
-rw-r--r--t/helper/test-submodule-config.c1
-rw-r--r--t/helper/test-submodule-nested-repo-config.c2
-rw-r--r--t/helper/test-submodule.c2
-rw-r--r--t/helper/test-subprocess.c2
-rw-r--r--t/helper/test-trace2.c2
-rw-r--r--t/helper/test-userdiff.c2
-rw-r--r--t/helper/test-write-cache.c1
-rw-r--r--tag.c2
-rw-r--r--tempfile.c4
-rw-r--r--tmp-objdir.c2
-rw-r--r--trace.c4
-rw-r--r--trace2/tr2_cfg.c4
-rw-r--r--trace2/tr2_cmd_name.c3
-rw-r--r--trace2/tr2_dst.c4
-rw-r--r--trace2/tr2_sid.c3
-rw-r--r--trailer.c4
-rw-r--r--transport-helper.c3
-rw-r--r--transport.c4
-rw-r--r--transport.h1
-rw-r--r--tree-walk.c1
-rw-r--r--unpack-trees.c3
-rw-r--r--upload-pack.c3
-rw-r--r--usage.c4
-rw-r--r--walker.c1
-rw-r--r--worktree.c5
-rw-r--r--wrapper.c3
-rw-r--r--wrapper.h36
-rw-r--r--write-or-die.c4
-rw-r--r--write-or-die.h78
-rw-r--r--wt-status.c3
-rw-r--r--xdiff-interface.c2
340 files changed, 1311 insertions, 669 deletions
diff --git a/abspath.c b/abspath.c
index 9a81c5525b..d032f5dce5 100644
--- a/abspath.c
+++ b/abspath.c
@@ -1,4 +1,6 @@
-#include "cache.h"
+#include "git-compat-util.h"
+#include "abspath.h"
+#include "strbuf.h"
/*
* Do not use this for inspecting *tracked* content. When path is a
diff --git a/abspath.h b/abspath.h
new file mode 100644
index 0000000000..7cd3de5e9d
--- /dev/null
+++ b/abspath.h
@@ -0,0 +1,33 @@
+#ifndef ABSPATH_H
+#define ABSPATH_H
+
+int is_directory(const char *);
+char *strbuf_realpath(struct strbuf *resolved, const char *path,
+ int die_on_error);
+char *strbuf_realpath_forgiving(struct strbuf *resolved, const char *path,
+ int die_on_error);
+char *real_pathdup(const char *path, int die_on_error);
+const char *absolute_path(const char *path);
+char *absolute_pathdup(const char *path);
+
+/*
+ * Concatenate "prefix" (if len is non-zero) and "path", with no
+ * connecting characters (so "prefix" should end with a "/").
+ * Unlike prefix_path, this should be used if the named file does
+ * not have to interact with index entry; i.e. name of a random file
+ * on the filesystem.
+ *
+ * The return value is always a newly allocated string (even if the
+ * prefix was empty).
+ */
+char *prefix_filename(const char *prefix, const char *path);
+
+/* Likewise, but path=="-" always yields "-" */
+char *prefix_filename_except_for_dash(const char *prefix, const char *path);
+
+static inline int is_absolute_path(const char *path)
+{
+ return is_dir_sep(path[0]) || has_dos_drive_prefix(path);
+}
+
+#endif /* ABSPATH_H */
diff --git a/add-interactive.c b/add-interactive.c
index 14ccea150a..757a9929d4 100644
--- a/add-interactive.c
+++ b/add-interactive.c
@@ -3,6 +3,7 @@
#include "color.h"
#include "config.h"
#include "diffcore.h"
+#include "gettext.h"
#include "hex.h"
#include "revision.h"
#include "refs.h"
diff --git a/add-patch.c b/add-patch.c
index 6a32b49b29..1e1ee2df59 100644
--- a/add-patch.c
+++ b/add-patch.c
@@ -1,6 +1,8 @@
#include "cache.h"
#include "add-interactive.h"
#include "alloc.h"
+#include "environment.h"
+#include "gettext.h"
#include "strbuf.h"
#include "run-command.h"
#include "strvec.h"
diff --git a/apply.c b/apply.c
index 23789bb2d1..9b7288bc92 100644
--- a/apply.c
+++ b/apply.c
@@ -8,6 +8,7 @@
*/
#include "cache.h"
+#include "abspath.h"
#include "alloc.h"
#include "config.h"
#include "object-store.h"
@@ -15,6 +16,8 @@
#include "delta.h"
#include "diff.h"
#include "dir.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "xdiff-interface.h"
#include "ll-merge.h"
@@ -24,6 +27,8 @@
#include "rerere.h"
#include "apply.h"
#include "entry.h"
+#include "setup.h"
+#include "wrapper.h"
struct gitdiff_data {
struct strbuf *root;
diff --git a/archive-tar.c b/archive-tar.c
index ee27fa0b39..497dad0b3a 100644
--- a/archive-tar.c
+++ b/archive-tar.c
@@ -4,12 +4,14 @@
#include "git-compat-util.h"
#include "alloc.h"
#include "config.h"
+#include "gettext.h"
#include "hex.h"
#include "tar.h"
#include "archive.h"
#include "object-store.h"
#include "streaming.h"
#include "run-command.h"
+#include "write-or-die.h"
#define RECORDSIZE (512)
#define BLOCKSIZE (RECORDSIZE * 20)
diff --git a/archive-zip.c b/archive-zip.c
index c5d1f72eb8..e6f5c10a14 100644
--- a/archive-zip.c
+++ b/archive-zip.c
@@ -4,11 +4,13 @@
#include "cache.h"
#include "config.h"
#include "archive.h"
+#include "gettext.h"
#include "hex.h"
#include "streaming.h"
#include "utf8.h"
#include "object-store.h"
#include "userdiff.h"
+#include "write-or-die.h"
#include "xdiff-interface.h"
#include "date.h"
diff --git a/archive.c b/archive.c
index 933e5b39b9..f1b8e9ce48 100644
--- a/archive.c
+++ b/archive.c
@@ -1,7 +1,11 @@
#include "git-compat-util.h"
+#include "abspath.h"
#include "alloc.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
+#include "setup.h"
#include "refs.h"
#include "object-store.h"
#include "commit.h"
diff --git a/attr.c b/attr.c
index 657ee52229..2d8aeb8b58 100644
--- a/attr.c
+++ b/attr.c
@@ -9,13 +9,16 @@
#include "cache.h"
#include "alloc.h"
#include "config.h"
+#include "environment.h"
#include "exec-cmd.h"
#include "attr.h"
#include "dir.h"
+#include "gettext.h"
#include "utf8.h"
#include "quote.h"
#include "revision.h"
#include "object-store.h"
+#include "setup.h"
#include "thread-utils.h"
const char git_attr__true[] = "(builtin)true";
diff --git a/bisect.c b/bisect.c
index d55f2a4da5..0a5f2ed354 100644
--- a/bisect.c
+++ b/bisect.c
@@ -2,6 +2,8 @@
#include "config.h"
#include "commit.h"
#include "diff.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "revision.h"
#include "refs.h"
diff --git a/blame.c b/blame.c
index 8f0ae97ddb..2c427bcdbf 100644
--- a/blame.c
+++ b/blame.c
@@ -5,7 +5,9 @@
#include "mergesort.h"
#include "diff.h"
#include "diffcore.h"
+#include "gettext.h"
#include "hex.h"
+#include "setup.h"
#include "tag.h"
#include "blame.h"
#include "alloc.h"
diff --git a/branch.c b/branch.c
index 6fa61d1251..99a0e7889e 100644
--- a/branch.c
+++ b/branch.c
@@ -2,6 +2,8 @@
#include "cache.h"
#include "config.h"
#include "branch.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "refs.h"
#include "refspec.h"
diff --git a/builtin/add.c b/builtin/add.c
index 61dd386d10..f12054d9be 100644
--- a/builtin/add.c
+++ b/builtin/add.c
@@ -9,6 +9,7 @@
#include "builtin.h"
#include "lockfile.h"
#include "dir.h"
+#include "gettext.h"
#include "pathspec.h"
#include "exec-cmd.h"
#include "cache-tree.h"
diff --git a/builtin/am.c b/builtin/am.c
index d89660d138..cd1e20f24e 100644
--- a/builtin/am.c
+++ b/builtin/am.c
@@ -5,9 +5,12 @@
*/
#define USE_THE_INDEX_VARIABLE
#include "cache.h"
+#include "abspath.h"
#include "config.h"
#include "builtin.h"
+#include "environment.h"
#include "exec-cmd.h"
+#include "gettext.h"
#include "hex.h"
#include "parse-options.h"
#include "dir.h"
@@ -36,6 +39,7 @@
#include "packfile.h"
#include "repository.h"
#include "pretty.h"
+#include "wrapper.h"
/**
* Returns the length of the first line of msg.
diff --git a/builtin/apply.c b/builtin/apply.c
index 555219de40..fe72c0ec3e 100644
--- a/builtin/apply.c
+++ b/builtin/apply.c
@@ -1,5 +1,6 @@
#include "cache.h"
#include "builtin.h"
+#include "gettext.h"
#include "parse-options.h"
#include "apply.h"
diff --git a/builtin/archive.c b/builtin/archive.c
index d0a583ea95..d13934f1a8 100644
--- a/builtin/archive.c
+++ b/builtin/archive.c
@@ -5,6 +5,7 @@
#include "cache.h"
#include "builtin.h"
#include "archive.h"
+#include "gettext.h"
#include "transport.h"
#include "parse-options.h"
#include "pkt-line.h"
diff --git a/builtin/bisect.c b/builtin/bisect.c
index c77564053a..26f07357a0 100644
--- a/builtin/bisect.c
+++ b/builtin/bisect.c
@@ -1,5 +1,7 @@
#include "builtin.h"
#include "cache.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "parse-options.h"
#include "bisect.h"
@@ -10,6 +12,7 @@
#include "prompt.h"
#include "quote.h"
#include "revision.h"
+#include "wrapper.h"
static GIT_PATH_FUNC(git_path_bisect_terms, "BISECT_TERMS")
static GIT_PATH_FUNC(git_path_bisect_expected_rev, "BISECT_EXPECTED_REV")
diff --git a/builtin/blame.c b/builtin/blame.c
index 7f92f9c1d3..a8d2114adc 100644
--- a/builtin/blame.c
+++ b/builtin/blame.c
@@ -10,6 +10,8 @@
#include "config.h"
#include "color.h"
#include "builtin.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "repository.h"
#include "commit.h"
@@ -29,7 +31,9 @@
#include "object-store.h"
#include "blame.h"
#include "refs.h"
+#include "setup.h"
#include "tag.h"
+#include "write-or-die.h"
static char blame_usage[] = N_("git blame [<options>] [<rev-opts>] [<rev>] [--] <file>");
static char annotate_usage[] = N_("git annotate [<options>] [<rev-opts>] [<rev>] [--] <file>");
diff --git a/builtin/branch.c b/builtin/branch.c
index 43f6839b33..6413a016c5 100644
--- a/builtin/branch.c
+++ b/builtin/branch.c
@@ -8,9 +8,11 @@
#include "cache.h"
#include "config.h"
#include "color.h"
+#include "environment.h"
#include "refs.h"
#include "commit.h"
#include "builtin.h"
+#include "gettext.h"
#include "remote.h"
#include "parse-options.h"
#include "branch.h"
@@ -24,6 +26,7 @@
#include "worktree.h"
#include "help.h"
#include "commit-reach.h"
+#include "wrapper.h"
static const char * const builtin_branch_usage[] = {
N_("git branch [<options>] [-r | -a] [--merged] [--no-merged]"),
diff --git a/builtin/bugreport.c b/builtin/bugreport.c
index 5bc254be80..52955e1d38 100644
--- a/builtin/bugreport.c
+++ b/builtin/bugreport.c
@@ -1,4 +1,6 @@
#include "builtin.h"
+#include "abspath.h"
+#include "gettext.h"
#include "parse-options.h"
#include "strbuf.h"
#include "help.h"
@@ -6,7 +8,8 @@
#include "hook.h"
#include "hook-list.h"
#include "diagnose.h"
-
+#include "setup.h"
+#include "wrapper.h"
static void get_system_info(struct strbuf *sys_info)
{
diff --git a/builtin/bundle.c b/builtin/bundle.c
index 666f01bccd..e68fc83d94 100644
--- a/builtin/bundle.c
+++ b/builtin/bundle.c
@@ -1,4 +1,7 @@
#include "builtin.h"
+#include "abspath.h"
+#include "gettext.h"
+#include "setup.h"
#include "strvec.h"
#include "parse-options.h"
#include "cache.h"
diff --git a/builtin/cat-file.c b/builtin/cat-file.c
index 44d202aa55..04d4bb6c77 100644
--- a/builtin/cat-file.c
+++ b/builtin/cat-file.c
@@ -9,6 +9,8 @@
#include "config.h"
#include "builtin.h"
#include "diff.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "ident.h"
#include "parse-options.h"
@@ -21,6 +23,7 @@
#include "replace-object.h"
#include "promisor-remote.h"
#include "mailmap.h"
+#include "write-or-die.h"
enum batch_mode {
BATCH_MODE_CONTENTS,
diff --git a/builtin/check-attr.c b/builtin/check-attr.c
index d7a40e674c..1dbe9d6ca8 100644
--- a/builtin/check-attr.c
+++ b/builtin/check-attr.c
@@ -3,8 +3,12 @@
#include "cache.h"
#include "config.h"
#include "attr.h"
+#include "environment.h"
+#include "gettext.h"
#include "quote.h"
+#include "setup.h"
#include "parse-options.h"
+#include "write-or-die.h"
static int all_attrs;
static int cached_attrs;
diff --git a/builtin/check-ignore.c b/builtin/check-ignore.c
index ab776061c7..9401dad007 100644
--- a/builtin/check-ignore.c
+++ b/builtin/check-ignore.c
@@ -3,10 +3,12 @@
#include "cache.h"
#include "config.h"
#include "dir.h"
+#include "gettext.h"
#include "quote.h"
#include "pathspec.h"
#include "parse-options.h"
#include "submodule.h"
+#include "write-or-die.h"
static int quiet, verbose, stdin_paths, show_non_matching, no_index;
static const char * const check_ignore_usage[] = {
diff --git a/builtin/check-mailmap.c b/builtin/check-mailmap.c
index 96db3ddb4b..002d2941e9 100644
--- a/builtin/check-mailmap.c
+++ b/builtin/check-mailmap.c
@@ -1,9 +1,11 @@
#include "builtin.h"
#include "config.h"
+#include "gettext.h"
#include "ident.h"
#include "mailmap.h"
#include "parse-options.h"
#include "string-list.h"
+#include "write-or-die.h"
static int use_stdin;
static const char * const check_mailmap_usage[] = {
diff --git a/builtin/check-ref-format.c b/builtin/check-ref-format.c
index 462eefe102..57f0505070 100644
--- a/builtin/check-ref-format.c
+++ b/builtin/check-ref-format.c
@@ -5,6 +5,7 @@
#include "cache.h"
#include "refs.h"
#include "builtin.h"
+#include "setup.h"
#include "strbuf.h"
static const char builtin_check_ref_format_usage[] =
diff --git a/builtin/checkout--worker.c b/builtin/checkout--worker.c
index 0a7d762573..2120dd1d30 100644
--- a/builtin/checkout--worker.c
+++ b/builtin/checkout--worker.c
@@ -2,6 +2,7 @@
#include "alloc.h"
#include "config.h"
#include "entry.h"
+#include "gettext.h"
#include "parallel-checkout.h"
#include "parse-options.h"
#include "pkt-line.h"
diff --git a/builtin/checkout-index.c b/builtin/checkout-index.c
index cf6fba97ba..7df673e3e7 100644
--- a/builtin/checkout-index.c
+++ b/builtin/checkout-index.c
@@ -8,12 +8,14 @@
#include "builtin.h"
#include "config.h"
#include "dir.h"
+#include "gettext.h"
#include "lockfile.h"
#include "quote.h"
#include "cache-tree.h"
#include "parse-options.h"
#include "entry.h"
#include "parallel-checkout.h"
+#include "setup.h"
#define CHECKOUT_ALL 4
static int nul_term_line;
diff --git a/builtin/checkout.c b/builtin/checkout.c
index fcede4600a..38a8cd6a96 100644
--- a/builtin/checkout.c
+++ b/builtin/checkout.c
@@ -9,6 +9,8 @@
#include "config.h"
#include "diff.h"
#include "dir.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "hook.h"
#include "ll-merge.h"
@@ -21,6 +23,7 @@
#include "resolve-undo.h"
#include "revision.h"
#include "run-command.h"
+#include "setup.h"
#include "submodule.h"
#include "submodule-config.h"
#include "tree.h"
diff --git a/builtin/clean.c b/builtin/clean.c
index 10aaa8c603..14c0d555ea 100644
--- a/builtin/clean.c
+++ b/builtin/clean.c
@@ -8,10 +8,13 @@
#define USE_THE_INDEX_VARIABLE
#include "builtin.h"
+#include "abspath.h"
#include "cache.h"
#include "config.h"
#include "dir.h"
+#include "gettext.h"
#include "parse-options.h"
+#include "setup.h"
#include "string-list.h"
#include "quote.h"
#include "column.h"
diff --git a/builtin/clone.c b/builtin/clone.c
index e50e7e2c06..c171def1f3 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -10,7 +10,10 @@
#define USE_THE_INDEX_VARIABLE
#include "builtin.h"
+#include "abspath.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "lockfile.h"
#include "parse-options.h"
@@ -30,6 +33,7 @@
#include "branch.h"
#include "remote.h"
#include "run-command.h"
+#include "setup.h"
#include "connected.h"
#include "packfile.h"
#include "list-objects-filter-options.h"
diff --git a/builtin/column.c b/builtin/column.c
index 158fdf53d9..de623a16c2 100644
--- a/builtin/column.c
+++ b/builtin/column.c
@@ -1,6 +1,7 @@
#include "builtin.h"
#include "cache.h"
#include "config.h"
+#include "gettext.h"
#include "strbuf.h"
#include "parse-options.h"
#include "string-list.h"
diff --git a/builtin/commit-graph.c b/builtin/commit-graph.c
index d3be7f3b31..9011426976 100644
--- a/builtin/commit-graph.c
+++ b/builtin/commit-graph.c
@@ -1,6 +1,8 @@
#include "builtin.h"
#include "config.h"
#include "dir.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "lockfile.h"
#include "parse-options.h"
diff --git a/builtin/commit-tree.c b/builtin/commit-tree.c
index b046c19306..15be167f87 100644
--- a/builtin/commit-tree.c
+++ b/builtin/commit-tree.c
@@ -5,6 +5,7 @@
*/
#include "cache.h"
#include "config.h"
+#include "gettext.h"
#include "hex.h"
#include "object-store.h"
#include "repository.h"
diff --git a/builtin/commit.c b/builtin/commit.c
index b8b4893ab2..9d8e1ea91a 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -12,10 +12,12 @@
#include "cache-tree.h"
#include "color.h"
#include "dir.h"
+#include "environment.h"
#include "builtin.h"
#include "diff.h"
#include "diffcore.h"
#include "commit.h"
+#include "gettext.h"
#include "revision.h"
#include "wt-status.h"
#include "run-command.h"
diff --git a/builtin/config.c b/builtin/config.c
index 49d832d409..fe79fb60c4 100644
--- a/builtin/config.c
+++ b/builtin/config.c
@@ -1,12 +1,17 @@
#include "builtin.h"
+#include "abspath.h"
#include "alloc.h"
#include "config.h"
#include "color.h"
+#include "environment.h"
+#include "gettext.h"
#include "ident.h"
#include "parse-options.h"
#include "urlmatch.h"
#include "quote.h"
+#include "setup.h"
#include "worktree.h"
+#include "wrapper.h"
static const char *const builtin_config_usage[] = {
N_("git config [<options>]"),
diff --git a/builtin/count-objects.c b/builtin/count-objects.c
index bb21bc43e4..f3d8f1bcbb 100644
--- a/builtin/count-objects.c
+++ b/builtin/count-objects.c
@@ -7,6 +7,8 @@
#include "cache.h"
#include "config.h"
#include "dir.h"
+#include "environment.h"
+#include "gettext.h"
#include "repository.h"
#include "builtin.h"
#include "parse-options.h"
diff --git a/builtin/credential-cache--daemon.c b/builtin/credential-cache--daemon.c
index 6e509d02c3..62c09a271d 100644
--- a/builtin/credential-cache--daemon.c
+++ b/builtin/credential-cache--daemon.c
@@ -1,5 +1,7 @@
#include "builtin.h"
+#include "abspath.h"
#include "alloc.h"
+#include "gettext.h"
#include "parse-options.h"
#ifndef NO_UNIX_SOCKETS
diff --git a/builtin/credential-cache.c b/builtin/credential-cache.c
index 78c02ad531..508da4c6e4 100644
--- a/builtin/credential-cache.c
+++ b/builtin/credential-cache.c
@@ -1,5 +1,8 @@
#include "builtin.h"
+#include "gettext.h"
#include "parse-options.h"
+#include "wrapper.h"
+#include "write-or-die.h"
#ifndef NO_UNIX_SOCKETS
diff --git a/builtin/credential-store.c b/builtin/credential-store.c
index 62a4f3c265..8977604eb9 100644
--- a/builtin/credential-store.c
+++ b/builtin/credential-store.c
@@ -1,9 +1,11 @@
#include "builtin.h"
#include "config.h"
+#include "gettext.h"
#include "lockfile.h"
#include "credential.h"
#include "string-list.h"
#include "parse-options.h"
+#include "write-or-die.h"
static struct lock_file credential_lock;
diff --git a/builtin/describe.c b/builtin/describe.c
index 3e5595e0ed..0125d4ddba 100644
--- a/builtin/describe.c
+++ b/builtin/describe.c
@@ -1,6 +1,8 @@
#define USE_THE_INDEX_VARIABLE
#include "cache.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "lockfile.h"
#include "commit.h"
@@ -13,6 +15,7 @@
#include "revision.h"
#include "diff.h"
#include "hashmap.h"
+#include "setup.h"
#include "strvec.h"
#include "run-command.h"
#include "object-store.h"
diff --git a/builtin/diagnose.c b/builtin/diagnose.c
index d52015c67a..0f8b64994c 100644
--- a/builtin/diagnose.c
+++ b/builtin/diagnose.c
@@ -1,4 +1,6 @@
#include "builtin.h"
+#include "abspath.h"
+#include "gettext.h"
#include "parse-options.h"
#include "diagnose.h"
diff --git a/builtin/diff-index.c b/builtin/diff-index.c
index 35dc9b23ee..b9a19bb7d3 100644
--- a/builtin/diff-index.c
+++ b/builtin/diff-index.c
@@ -5,6 +5,7 @@
#include "commit.h"
#include "revision.h"
#include "builtin.h"
+#include "setup.h"
#include "submodule.h"
static const char diff_cache_usage[] =
diff --git a/builtin/diff-tree.c b/builtin/diff-tree.c
index a393efa4f0..385c2d0230 100644
--- a/builtin/diff-tree.c
+++ b/builtin/diff-tree.c
@@ -3,6 +3,7 @@
#include "config.h"
#include "diff.h"
#include "commit.h"
+#include "gettext.h"
#include "hex.h"
#include "log-tree.h"
#include "builtin.h"
diff --git a/builtin/diff.c b/builtin/diff.c
index 99e7660881..5a6a5d7f4b 100644
--- a/builtin/diff.c
+++ b/builtin/diff.c
@@ -11,6 +11,7 @@
#include "color.h"
#include "commit.h"
#include "blob.h"
+#include "gettext.h"
#include "tag.h"
#include "diff.h"
#include "diff-merges.h"
@@ -18,6 +19,7 @@
#include "revision.h"
#include "log-tree.h"
#include "builtin.h"
+#include "setup.h"
#include "submodule.h"
#include "oid-array.h"
diff --git a/builtin/difftool.c b/builtin/difftool.c
index 74466332b5..e010a21bfb 100644
--- a/builtin/difftool.c
+++ b/builtin/difftool.c
@@ -13,10 +13,13 @@
*/
#define USE_THE_INDEX_VARIABLE
#include "cache.h"
+#include "abspath.h"
#include "config.h"
#include "builtin.h"
#include "run-command.h"
+#include "environment.h"
#include "exec-cmd.h"
+#include "gettext.h"
#include "hex.h"
#include "parse-options.h"
#include "strvec.h"
@@ -25,6 +28,8 @@
#include "object-store.h"
#include "dir.h"
#include "entry.h"
+#include "setup.h"
+#include "wrapper.h"
static int trust_exit_code;
diff --git a/builtin/fast-export.c b/builtin/fast-export.c
index 9844d4f3f4..8224bf4bc1 100644
--- a/builtin/fast-export.c
+++ b/builtin/fast-export.c
@@ -6,6 +6,7 @@
#include "builtin.h"
#include "cache.h"
#include "config.h"
+#include "gettext.h"
#include "hex.h"
#include "refs.h"
#include "refspec.h"
diff --git a/builtin/fast-import.c b/builtin/fast-import.c
index 6dbe1b165e..1fb95275d7 100644
--- a/builtin/fast-import.c
+++ b/builtin/fast-import.c
@@ -1,5 +1,8 @@
#include "builtin.h"
+#include "abspath.h"
#include "cache.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "repository.h"
#include "config.h"
@@ -21,6 +24,7 @@
#include "commit-reach.h"
#include "khash.h"
#include "date.h"
+#include "wrapper.h"
#define PACK_ID_BITS 16
#define MAX_PACK_ID ((1<<PACK_ID_BITS)-1)
diff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c
index 0d75e474f0..5f341b794d 100644
--- a/builtin/fetch-pack.c
+++ b/builtin/fetch-pack.c
@@ -1,5 +1,6 @@
#include "builtin.h"
#include "alloc.h"
+#include "gettext.h"
#include "hex.h"
#include "pkt-line.h"
#include "fetch-pack.h"
diff --git a/builtin/fetch.c b/builtin/fetch.c
index 46995f0f40..662a842479 100644
--- a/builtin/fetch.c
+++ b/builtin/fetch.c
@@ -3,6 +3,8 @@
*/
#include "cache.h"
#include "config.h"
+#include "gettext.h"
+#include "environment.h"
#include "hex.h"
#include "repository.h"
#include "refs.h"
diff --git a/builtin/fmt-merge-msg.c b/builtin/fmt-merge-msg.c
index 8d8fd393f8..cc81241642 100644
--- a/builtin/fmt-merge-msg.c
+++ b/builtin/fmt-merge-msg.c
@@ -1,7 +1,9 @@
#include "builtin.h"
#include "config.h"
#include "fmt-merge-msg.h"
+#include "gettext.h"
#include "parse-options.h"
+#include "wrapper.h"
static const char * const fmt_merge_msg_usage[] = {
N_("git fmt-merge-msg [-m <message>] [--log[=<n>] | --no-log] [--file <file>]"),
diff --git a/builtin/for-each-ref.c b/builtin/for-each-ref.c
index 6b3d07ef40..0bdc49a6e1 100644
--- a/builtin/for-each-ref.c
+++ b/builtin/for-each-ref.c
@@ -1,6 +1,7 @@
#include "builtin.h"
#include "cache.h"
#include "config.h"
+#include "gettext.h"
#include "refs.h"
#include "object.h"
#include "parse-options.h"
diff --git a/builtin/for-each-repo.c b/builtin/for-each-repo.c
index ce8f7a9908..598ca16c46 100644
--- a/builtin/for-each-repo.c
+++ b/builtin/for-each-repo.c
@@ -1,6 +1,7 @@
#include "cache.h"
#include "config.h"
#include "builtin.h"
+#include "gettext.h"
#include "parse-options.h"
#include "run-command.h"
#include "string-list.h"
diff --git a/builtin/fsck.c b/builtin/fsck.c
index 4537d9f0f2..095b39d398 100644
--- a/builtin/fsck.c
+++ b/builtin/fsck.c
@@ -1,5 +1,6 @@
#include "builtin.h"
#include "cache.h"
+#include "gettext.h"
#include "hex.h"
#include "repository.h"
#include "config.h"
diff --git a/builtin/fsmonitor--daemon.c b/builtin/fsmonitor--daemon.c
index 3d4f2ae1d0..42af6a2cc7 100644
--- a/builtin/fsmonitor--daemon.c
+++ b/builtin/fsmonitor--daemon.c
@@ -1,6 +1,9 @@
#include "builtin.h"
+#include "abspath.h"
#include "alloc.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "parse-options.h"
#include "fsmonitor.h"
#include "fsmonitor-ipc.h"
diff --git a/builtin/gc.c b/builtin/gc.c
index 42a5b7092f..edd98d35a5 100644
--- a/builtin/gc.c
+++ b/builtin/gc.c
@@ -11,6 +11,8 @@
*/
#include "builtin.h"
+#include "abspath.h"
+#include "environment.h"
#include "hex.h"
#include "repository.h"
#include "config.h"
@@ -32,7 +34,10 @@
#include "refs.h"
#include "remote.h"
#include "exec-cmd.h"
+#include "gettext.h"
#include "hook.h"
+#include "setup.h"
+#include "wrapper.h"
#define FAILED_RUN "failed to run %s"
diff --git a/builtin/get-tar-commit-id.c b/builtin/get-tar-commit-id.c
index 4324d39fb4..d5b871b21d 100644
--- a/builtin/get-tar-commit-id.c
+++ b/builtin/get-tar-commit-id.c
@@ -6,6 +6,7 @@
#include "tar.h"
#include "builtin.h"
#include "quote.h"
+#include "wrapper.h"
static const char builtin_get_tar_commit_id_usage[] =
"git get-tar-commit-id";
diff --git a/builtin/grep.c b/builtin/grep.c
index 49fc0c6909..a1b68d90bd 100644
--- a/builtin/grep.c
+++ b/builtin/grep.c
@@ -5,6 +5,7 @@
*/
#include "cache.h"
#include "alloc.h"
+#include "gettext.h"
#include "hex.h"
#include "repository.h"
#include "config.h"
@@ -22,10 +23,12 @@
#include "quote.h"
#include "dir.h"
#include "pathspec.h"
+#include "setup.h"
#include "submodule.h"
#include "submodule-config.h"
#include "object-store.h"
#include "packfile.h"
+#include "write-or-die.h"
static const char *grep_prefix;
diff --git a/builtin/hash-object.c b/builtin/hash-object.c
index 1848768b97..a15fe4fd3f 100644
--- a/builtin/hash-object.c
+++ b/builtin/hash-object.c
@@ -5,13 +5,17 @@
* Copyright (C) Junio C Hamano, 2005
*/
#include "builtin.h"
+#include "abspath.h"
#include "config.h"
+#include "gettext.h"
#include "hex.h"
#include "object-store.h"
#include "blob.h"
#include "quote.h"
#include "parse-options.h"
#include "exec-cmd.h"
+#include "setup.h"
+#include "write-or-die.h"
/*
* This is to create corrupt objects for debugging and as such it
diff --git a/builtin/help.c b/builtin/help.c
index 53f2812dfb..87333a02ec 100644
--- a/builtin/help.c
+++ b/builtin/help.c
@@ -5,11 +5,13 @@
#include "config.h"
#include "builtin.h"
#include "exec-cmd.h"
+#include "gettext.h"
#include "parse-options.h"
#include "run-command.h"
#include "config-list.h"
#include "help.h"
#include "alias.h"
+#include "setup.h"
#ifndef DEFAULT_HELP_FORMAT
#define DEFAULT_HELP_FORMAT "man"
diff --git a/builtin/hook.c b/builtin/hook.c
index f95b7965c5..88051795c7 100644
--- a/builtin/hook.c
+++ b/builtin/hook.c
@@ -1,6 +1,7 @@
#include "cache.h"
#include "builtin.h"
#include "config.h"
+#include "gettext.h"
#include "hook.h"
#include "parse-options.h"
#include "strbuf.h"
diff --git a/builtin/index-pack.c b/builtin/index-pack.c
index 6bd95f54d6..b17e79cd40 100644
--- a/builtin/index-pack.c
+++ b/builtin/index-pack.c
@@ -2,6 +2,8 @@
#include "alloc.h"
#include "config.h"
#include "delta.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "pack.h"
#include "csum-file.h"
@@ -18,6 +20,8 @@
#include "object-store.h"
#include "replace-object.h"
#include "promisor-remote.h"
+#include "setup.h"
+#include "wrapper.h"
static const char index_pack_usage[] =
"git index-pack [-v] [-o <index-file>] [--keep | --keep=<msg>] [--[no-]rev-index] [--verify] [--strict] (<pack-file> | --stdin [--fix-thin] [<pack-file>])";
diff --git a/builtin/init-db.c b/builtin/init-db.c
index dcaaf102ea..ba6e0b20fa 100644
--- a/builtin/init-db.c
+++ b/builtin/init-db.c
@@ -4,12 +4,17 @@
* Copyright (C) Linus Torvalds, 2005
*/
#include "cache.h"
+#include "abspath.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "refs.h"
#include "builtin.h"
#include "exec-cmd.h"
#include "parse-options.h"
+#include "setup.h"
#include "worktree.h"
+#include "wrapper.h"
#ifndef DEFAULT_GIT_TEMPLATE_DIR
#define DEFAULT_GIT_TEMPLATE_DIR "/usr/share/git-core/templates"
diff --git a/builtin/interpret-trailers.c b/builtin/interpret-trailers.c
index e58627c72a..107ac28f0e 100644
--- a/builtin/interpret-trailers.c
+++ b/builtin/interpret-trailers.c
@@ -7,6 +7,7 @@
#include "cache.h"
#include "builtin.h"
+#include "gettext.h"
#include "parse-options.h"
#include "string-list.h"
#include "trailer.h"
diff --git a/builtin/log.c b/builtin/log.c
index a087222aea..7d19578963 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -5,8 +5,11 @@
* 2006 Junio Hamano
*/
#include "git-compat-util.h"
+#include "abspath.h"
#include "alloc.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "refs.h"
#include "object-store.h"
@@ -37,6 +40,7 @@
#include "commit-reach.h"
#include "range-diff.h"
#include "tmp-objdir.h"
+#include "write-or-die.h"
#define MAIL_DEFAULT_WRAP 72
#define COVER_FROM_AUTO_MAX_SUBJECT_LEN 100
diff --git a/builtin/ls-files.c b/builtin/ls-files.c
index 7fc82d7f76..ed35fa8d8e 100644
--- a/builtin/ls-files.c
+++ b/builtin/ls-files.c
@@ -11,6 +11,7 @@
#include "quote.h"
#include "dir.h"
#include "builtin.h"
+#include "gettext.h"
#include "strbuf.h"
#include "tree.h"
#include "cache-tree.h"
@@ -19,6 +20,7 @@
#include "string-list.h"
#include "pathspec.h"
#include "run-command.h"
+#include "setup.h"
#include "submodule.h"
#include "submodule-config.h"
diff --git a/builtin/ls-remote.c b/builtin/ls-remote.c
index a9de0575ce..3c74c4a104 100644
--- a/builtin/ls-remote.c
+++ b/builtin/ls-remote.c
@@ -1,5 +1,6 @@
#include "builtin.h"
#include "cache.h"
+#include "gettext.h"
#include "hex.h"
#include "transport.h"
#include "ref-filter.h"
diff --git a/builtin/ls-tree.c b/builtin/ls-tree.c
index 568088b6d6..f32e6be219 100644
--- a/builtin/ls-tree.c
+++ b/builtin/ls-tree.c
@@ -5,6 +5,7 @@
*/
#include "cache.h"
#include "config.h"
+#include "gettext.h"
#include "hex.h"
#include "object-store.h"
#include "blob.h"
diff --git a/builtin/mailinfo.c b/builtin/mailinfo.c
index 01d16ef9e5..a032a1c388 100644
--- a/builtin/mailinfo.c
+++ b/builtin/mailinfo.c
@@ -3,7 +3,10 @@
* email to figure out authorship and subject
*/
#include "cache.h"
+#include "abspath.h"
#include "builtin.h"
+#include "environment.h"
+#include "gettext.h"
#include "utf8.h"
#include "strbuf.h"
#include "mailinfo.h"
diff --git a/builtin/mailsplit.c b/builtin/mailsplit.c
index 91e93f0c77..0b6193a091 100644
--- a/builtin/mailsplit.c
+++ b/builtin/mailsplit.c
@@ -6,6 +6,7 @@
*/
#include "cache.h"
#include "builtin.h"
+#include "gettext.h"
#include "string-list.h"
#include "strbuf.h"
diff --git a/builtin/merge-base.c b/builtin/merge-base.c
index 671e424c26..3f22273b40 100644
--- a/builtin/merge-base.c
+++ b/builtin/merge-base.c
@@ -2,6 +2,7 @@
#include "cache.h"
#include "config.h"
#include "commit.h"
+#include "gettext.h"
#include "hex.h"
#include "refs.h"
#include "diff.h"
diff --git a/builtin/merge-file.c b/builtin/merge-file.c
index c923bbf2ab..781818d08f 100644
--- a/builtin/merge-file.c
+++ b/builtin/merge-file.c
@@ -1,6 +1,9 @@
#include "builtin.h"
+#include "abspath.h"
#include "cache.h"
#include "config.h"
+#include "gettext.h"
+#include "setup.h"
#include "xdiff/xdiff.h"
#include "xdiff-interface.h"
#include "parse-options.h"
diff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c
index c1e3ca1216..91ed55f3ab 100644
--- a/builtin/merge-recursive.c
+++ b/builtin/merge-recursive.c
@@ -1,6 +1,7 @@
#include "cache.h"
#include "builtin.h"
#include "commit.h"
+#include "gettext.h"
#include "tag.h"
#include "merge-recursive.h"
#include "xdiff-interface.h"
diff --git a/builtin/merge-tree.c b/builtin/merge-tree.c
index 590532706e..803e380856 100644
--- a/builtin/merge-tree.c
+++ b/builtin/merge-tree.c
@@ -3,6 +3,7 @@
#include "tree-walk.h"
#include "xdiff-interface.h"
#include "help.h"
+#include "gettext.h"
#include "hex.h"
#include "commit.h"
#include "commit-reach.h"
diff --git a/builtin/merge.c b/builtin/merge.c
index 6538a4bae9..a99be9610e 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -8,8 +8,11 @@
#define USE_THE_INDEX_VARIABLE
#include "cache.h"
+#include "abspath.h"
#include "alloc.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "parse-options.h"
#include "builtin.h"
@@ -46,6 +49,7 @@
#include "commit-reach.h"
#include "wt-status.h"
#include "commit-graph.h"
+#include "wrapper.h"
#define DEFAULT_TWOHEAD (1<<0)
#define DEFAULT_OCTOPUS (1<<1)
diff --git a/builtin/mktag.c b/builtin/mktag.c
index 9385320013..b3f6d7ea38 100644
--- a/builtin/mktag.c
+++ b/builtin/mktag.c
@@ -1,4 +1,5 @@
#include "builtin.h"
+#include "gettext.h"
#include "hex.h"
#include "parse-options.h"
#include "tag.h"
diff --git a/builtin/mktree.c b/builtin/mktree.c
index 848c7b4747..09a7bd5c5c 100644
--- a/builtin/mktree.c
+++ b/builtin/mktree.c
@@ -5,6 +5,7 @@
*/
#include "builtin.h"
#include "alloc.h"
+#include "gettext.h"
#include "hex.h"
#include "quote.h"
#include "tree.h"
diff --git a/builtin/multi-pack-index.c b/builtin/multi-pack-index.c
index 9a18a82b05..1b5083f8b2 100644
--- a/builtin/multi-pack-index.c
+++ b/builtin/multi-pack-index.c
@@ -1,6 +1,9 @@
#include "builtin.h"
+#include "abspath.h"
#include "cache.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "parse-options.h"
#include "midx.h"
#include "trace2.h"
diff --git a/builtin/mv.c b/builtin/mv.c
index 8129050377..b7c5ffbd8c 100644
--- a/builtin/mv.c
+++ b/builtin/mv.c
@@ -5,14 +5,18 @@
*/
#define USE_THE_INDEX_VARIABLE
#include "builtin.h"
+#include "abspath.h"
#include "alloc.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "pathspec.h"
#include "lockfile.h"
#include "dir.h"
#include "cache-tree.h"
#include "string-list.h"
#include "parse-options.h"
+#include "setup.h"
#include "submodule.h"
#include "entry.h"
diff --git a/builtin/name-rev.c b/builtin/name-rev.c
index 9d0dd0ad01..831d360a78 100644
--- a/builtin/name-rev.c
+++ b/builtin/name-rev.c
@@ -1,5 +1,7 @@
#include "builtin.h"
#include "alloc.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "repository.h"
#include "config.h"
diff --git a/builtin/notes.c b/builtin/notes.c
index 859a56591a..4ff44f1e3d 100644
--- a/builtin/notes.c
+++ b/builtin/notes.c
@@ -10,6 +10,7 @@
#include "cache.h"
#include "config.h"
#include "builtin.h"
+#include "gettext.h"
#include "hex.h"
#include "notes.h"
#include "object-store.h"
@@ -24,6 +25,7 @@
#include "notes-merge.h"
#include "notes-utils.h"
#include "worktree.h"
+#include "write-or-die.h"
static const char * const git_notes_usage[] = {
N_("git notes [--ref <notes-ref>] [list [<object>]]"),
diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c
index bfaef00556..77d88f85b0 100644
--- a/builtin/pack-objects.c
+++ b/builtin/pack-objects.c
@@ -1,5 +1,7 @@
#include "builtin.h"
#include "alloc.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "repository.h"
#include "config.h"
@@ -40,6 +42,7 @@
#include "promisor-remote.h"
#include "pack-mtimes.h"
#include "parse-options.h"
+#include "wrapper.h"
/*
* Objects we are going to pack are collected in the `to_pack` structure.
diff --git a/builtin/pack-redundant.c b/builtin/pack-redundant.c
index d50c2d6693..43e9d12dfd 100644
--- a/builtin/pack-redundant.c
+++ b/builtin/pack-redundant.c
@@ -7,6 +7,7 @@
*/
#include "builtin.h"
+#include "gettext.h"
#include "hex.h"
#include "repository.h"
#include "packfile.h"
diff --git a/builtin/pack-refs.c b/builtin/pack-refs.c
index 27c2ca06ac..9833815fb3 100644
--- a/builtin/pack-refs.c
+++ b/builtin/pack-refs.c
@@ -1,5 +1,6 @@
#include "builtin.h"
#include "config.h"
+#include "gettext.h"
#include "parse-options.h"
#include "refs.h"
#include "repository.h"
diff --git a/builtin/patch-id.c b/builtin/patch-id.c
index 338b15cd7b..9d5585d3a7 100644
--- a/builtin/patch-id.c
+++ b/builtin/patch-id.c
@@ -2,6 +2,7 @@
#include "builtin.h"
#include "config.h"
#include "diff.h"
+#include "gettext.h"
#include "hex.h"
#include "parse-options.h"
diff --git a/builtin/prune-packed.c b/builtin/prune-packed.c
index da3273a268..ca3578e158 100644
--- a/builtin/prune-packed.c
+++ b/builtin/prune-packed.c
@@ -1,4 +1,5 @@
#include "builtin.h"
+#include "gettext.h"
#include "parse-options.h"
#include "prune-packed.h"
diff --git a/builtin/prune.c b/builtin/prune.c
index 202f736774..5c0952f5c6 100644
--- a/builtin/prune.c
+++ b/builtin/prune.c
@@ -1,6 +1,8 @@
#include "cache.h"
#include "commit.h"
#include "diff.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "revision.h"
#include "builtin.h"
diff --git a/builtin/pull.c b/builtin/pull.c
index bc0f29064b..5405d09f22 100644
--- a/builtin/pull.c
+++ b/builtin/pull.c
@@ -9,6 +9,7 @@
#include "cache.h"
#include "config.h"
#include "builtin.h"
+#include "gettext.h"
#include "hex.h"
#include "parse-options.h"
#include "exec-cmd.h"
diff --git a/builtin/push.c b/builtin/push.c
index 12a402aea3..fa550b8f80 100644
--- a/builtin/push.c
+++ b/builtin/push.c
@@ -4,6 +4,8 @@
#include "cache.h"
#include "branch.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "refs.h"
#include "refspec.h"
#include "run-command.h"
diff --git a/builtin/range-diff.c b/builtin/range-diff.c
index 556ee84b6d..b72af527f0 100644
--- a/builtin/range-diff.c
+++ b/builtin/range-diff.c
@@ -1,5 +1,6 @@
#include "cache.h"
#include "builtin.h"
+#include "gettext.h"
#include "parse-options.h"
#include "range-diff.h"
#include "config.h"
diff --git a/builtin/read-tree.c b/builtin/read-tree.c
index fe19852634..600d4f748f 100644
--- a/builtin/read-tree.c
+++ b/builtin/read-tree.c
@@ -7,6 +7,7 @@
#define USE_THE_INDEX_VARIABLE
#include "cache.h"
#include "config.h"
+#include "gettext.h"
#include "hex.h"
#include "lockfile.h"
#include "object.h"
@@ -18,6 +19,7 @@
#include "builtin.h"
#include "parse-options.h"
#include "resolve-undo.h"
+#include "setup.h"
#include "submodule.h"
#include "submodule-config.h"
diff --git a/builtin/rebase.c b/builtin/rebase.c
index a70d94d075..680fe3c145 100644
--- a/builtin/rebase.c
+++ b/builtin/rebase.c
@@ -6,6 +6,9 @@
#define USE_THE_INDEX_VARIABLE
#include "builtin.h"
+#include "abspath.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "run-command.h"
#include "exec-cmd.h"
@@ -30,6 +33,7 @@
#include "rebase-interactive.h"
#include "reset.h"
#include "hook.h"
+#include "wrapper.h"
static char const * const builtin_rebase_usage[] = {
N_("git rebase [-i] [options] [--exec <cmd>] "
diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index 5123c56f9d..9109552533 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -1,6 +1,9 @@
#include "builtin.h"
+#include "abspath.h"
#include "repository.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "lockfile.h"
#include "pack.h"
@@ -32,6 +35,7 @@
#include "worktree.h"
#include "shallow.h"
#include "parse-options.h"
+#include "wrapper.h"
static const char * const receive_pack_usage[] = {
N_("git receive-pack <git-dir>"),
diff --git a/builtin/reflog.c b/builtin/reflog.c
index 9b000bb6bc..a1fa0c855f 100644
--- a/builtin/reflog.c
+++ b/builtin/reflog.c
@@ -1,5 +1,6 @@
#include "builtin.h"
#include "config.h"
+#include "gettext.h"
#include "revision.h"
#include "reachable.h"
#include "worktree.h"
diff --git a/builtin/remote.c b/builtin/remote.c
index a6b100dce7..1e0b137d97 100644
--- a/builtin/remote.c
+++ b/builtin/remote.c
@@ -1,5 +1,6 @@
#include "builtin.h"
#include "config.h"
+#include "gettext.h"
#include "parse-options.h"
#include "transport.h"
#include "remote.h"
diff --git a/builtin/repack.c b/builtin/repack.c
index ab4c55b50f..df4d8e0f0b 100644
--- a/builtin/repack.c
+++ b/builtin/repack.c
@@ -2,6 +2,8 @@
#include "alloc.h"
#include "config.h"
#include "dir.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "parse-options.h"
#include "run-command.h"
diff --git a/builtin/replace.c b/builtin/replace.c
index 44ec170967..d2adc8ab61 100644
--- a/builtin/replace.c
+++ b/builtin/replace.c
@@ -11,6 +11,8 @@
#include "cache.h"
#include "config.h"
#include "builtin.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "refs.h"
#include "parse-options.h"
diff --git a/builtin/rerere.c b/builtin/rerere.c
index 94ffb8c21a..d4a03707b1 100644
--- a/builtin/rerere.c
+++ b/builtin/rerere.c
@@ -2,9 +2,11 @@
#include "cache.h"
#include "config.h"
#include "dir.h"
+#include "gettext.h"
#include "parse-options.h"
#include "string-list.h"
#include "rerere.h"
+#include "wrapper.h"
#include "xdiff/xdiff.h"
#include "xdiff-interface.h"
#include "pathspec.h"
diff --git a/builtin/reset.c b/builtin/reset.c
index c2a390b3a0..0ed329236c 100644
--- a/builtin/reset.c
+++ b/builtin/reset.c
@@ -10,6 +10,8 @@
#define USE_THE_INDEX_VARIABLE
#include "builtin.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "lockfile.h"
#include "tag.h"
@@ -24,6 +26,7 @@
#include "parse-options.h"
#include "unpack-trees.h"
#include "cache-tree.h"
+#include "setup.h"
#include "submodule.h"
#include "submodule-config.h"
#include "dir.h"
diff --git a/builtin/rev-list.c b/builtin/rev-list.c
index e88affc276..a3dbbb6338 100644
--- a/builtin/rev-list.c
+++ b/builtin/rev-list.c
@@ -2,6 +2,8 @@
#include "config.h"
#include "commit.h"
#include "diff.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "revision.h"
#include "list-objects.h"
diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c
index 5662101a10..1af2089f9b 100644
--- a/builtin/rev-parse.c
+++ b/builtin/rev-parse.c
@@ -5,9 +5,12 @@
*/
#define USE_THE_INDEX_VARIABLE
#include "cache.h"
+#include "abspath.h"
#include "alloc.h"
#include "config.h"
#include "commit.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "refs.h"
#include "quote.h"
@@ -15,6 +18,7 @@
#include "parse-options.h"
#include "diff.h"
#include "revision.h"
+#include "setup.h"
#include "split-index.h"
#include "submodule.h"
#include "commit-reach.h"
diff --git a/builtin/revert.c b/builtin/revert.c
index 287721fd37..f72761bf88 100644
--- a/builtin/revert.c
+++ b/builtin/revert.c
@@ -4,6 +4,7 @@
#include "builtin.h"
#include "parse-options.h"
#include "diff.h"
+#include "gettext.h"
#include "revision.h"
#include "rerere.h"
#include "dir.h"
diff --git a/builtin/rm.c b/builtin/rm.c
index e093cb9996..6be9281742 100644
--- a/builtin/rm.c
+++ b/builtin/rm.c
@@ -11,9 +11,11 @@
#include "lockfile.h"
#include "dir.h"
#include "cache-tree.h"
+#include "gettext.h"
#include "tree-walk.h"
#include "parse-options.h"
#include "string-list.h"
+#include "setup.h"
#include "submodule.h"
#include "pathspec.h"
diff --git a/builtin/send-pack.c b/builtin/send-pack.c
index 640125fe95..4784143004 100644
--- a/builtin/send-pack.c
+++ b/builtin/send-pack.c
@@ -17,6 +17,7 @@
#include "gettext.h"
#include "protocol.h"
#include "parse-options.h"
+#include "write-or-die.h"
static const char * const send_pack_usage[] = {
N_("git send-pack [--mirror] [--dry-run] [--force]\n"
diff --git a/builtin/shortlog.c b/builtin/shortlog.c
index f287a6acd0..46f4e0832a 100644
--- a/builtin/shortlog.c
+++ b/builtin/shortlog.c
@@ -3,10 +3,13 @@
#include "config.h"
#include "commit.h"
#include "diff.h"
+#include "environment.h"
+#include "gettext.h"
#include "string-list.h"
#include "revision.h"
#include "utf8.h"
#include "mailmap.h"
+#include "setup.h"
#include "shortlog.h"
#include "parse-options.h"
#include "trailer.h"
diff --git a/builtin/show-branch.c b/builtin/show-branch.c
index 70bc461638..463a8d11c3 100644
--- a/builtin/show-branch.c
+++ b/builtin/show-branch.c
@@ -1,5 +1,7 @@
#include "cache.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "pretty.h"
#include "refs.h"
diff --git a/builtin/show-index.c b/builtin/show-index.c
index 98ec40ddf4..d4bbbbcd6c 100644
--- a/builtin/show-index.c
+++ b/builtin/show-index.c
@@ -1,5 +1,6 @@
#include "builtin.h"
#include "cache.h"
+#include "gettext.h"
#include "hex.h"
#include "pack.h"
#include "parse-options.h"
diff --git a/builtin/show-ref.c b/builtin/show-ref.c
index 63a5bb1efa..138d30a005 100644
--- a/builtin/show-ref.c
+++ b/builtin/show-ref.c
@@ -1,6 +1,7 @@
#include "builtin.h"
#include "cache.h"
#include "config.h"
+#include "gettext.h"
#include "hex.h"
#include "refs.h"
#include "object-store.h"
diff --git a/builtin/sparse-checkout.c b/builtin/sparse-checkout.c
index d73d3d2d82..090bf33510 100644
--- a/builtin/sparse-checkout.c
+++ b/builtin/sparse-checkout.c
@@ -2,6 +2,8 @@
#include "cache.h"
#include "config.h"
#include "dir.h"
+#include "environment.h"
+#include "gettext.h"
#include "parse-options.h"
#include "pathspec.h"
#include "repository.h"
@@ -14,6 +16,7 @@
#include "unpack-trees.h"
#include "wt-status.h"
#include "quote.h"
+#include "setup.h"
#include "sparse-index.h"
#include "worktree.h"
diff --git a/builtin/stash.c b/builtin/stash.c
index 6a3122cdd2..735d27039e 100644
--- a/builtin/stash.c
+++ b/builtin/stash.c
@@ -1,6 +1,9 @@
#define USE_THE_INDEX_VARIABLE
#include "builtin.h"
+#include "abspath.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "parse-options.h"
#include "refs.h"
@@ -15,6 +18,7 @@
#include "entry.h"
#include "rerere.h"
#include "revision.h"
+#include "setup.h"
#include "log-tree.h"
#include "diffcore.h"
#include "exec-cmd.h"
diff --git a/builtin/stripspace.c b/builtin/stripspace.c
index 1e34cf2beb..9451eb69ff 100644
--- a/builtin/stripspace.c
+++ b/builtin/stripspace.c
@@ -1,8 +1,11 @@
#include "builtin.h"
#include "cache.h"
#include "config.h"
+#include "gettext.h"
#include "parse-options.h"
+#include "setup.h"
#include "strbuf.h"
+#include "write-or-die.h"
static void comment_lines(struct strbuf *buf)
{
diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index b836c0f6b7..569068e6a2 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -1,6 +1,9 @@
#define USE_THE_INDEX_VARIABLE
#include "builtin.h"
+#include "abspath.h"
#include "alloc.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "repository.h"
#include "cache.h"
@@ -9,6 +12,7 @@
#include "quote.h"
#include "pathspec.h"
#include "dir.h"
+#include "setup.h"
#include "submodule.h"
#include "submodule-config.h"
#include "string-list.h"
diff --git a/builtin/symbolic-ref.c b/builtin/symbolic-ref.c
index e00768a8b7..10198a74fa 100644
--- a/builtin/symbolic-ref.c
+++ b/builtin/symbolic-ref.c
@@ -1,6 +1,7 @@
#include "builtin.h"
#include "config.h"
#include "cache.h"
+#include "gettext.h"
#include "refs.h"
#include "parse-options.h"
diff --git a/builtin/tag.c b/builtin/tag.c
index f8705df14d..782bb3aa2f 100644
--- a/builtin/tag.c
+++ b/builtin/tag.c
@@ -9,6 +9,8 @@
#include "cache.h"
#include "config.h"
#include "builtin.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "refs.h"
#include "object-store.h"
@@ -22,6 +24,7 @@
#include "column.h"
#include "ref-filter.h"
#include "date.h"
+#include "write-or-die.h"
static const char * const git_tag_usage[] = {
N_("git tag [-a | -s | -u <key-id>] [-f] [-m <msg> | -F <file>] [-e]\n"
diff --git a/builtin/unpack-file.c b/builtin/unpack-file.c
index 40fd42158d..00179180c7 100644
--- a/builtin/unpack-file.c
+++ b/builtin/unpack-file.c
@@ -2,6 +2,7 @@
#include "config.h"
#include "hex.h"
#include "object-store.h"
+#include "wrapper.h"
static char *create_temp_file(struct object_id *oid)
{
diff --git a/builtin/unpack-objects.c b/builtin/unpack-objects.c
index 1d3493b1eb..585e81b106 100644
--- a/builtin/unpack-objects.c
+++ b/builtin/unpack-objects.c
@@ -2,6 +2,8 @@
#include "cache.h"
#include "bulk-checkin.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "object-store.h"
#include "object.h"
diff --git a/builtin/update-index.c b/builtin/update-index.c
index 11dc135271..03cda5e60d 100644
--- a/builtin/update-index.c
+++ b/builtin/update-index.c
@@ -7,6 +7,8 @@
#include "cache.h"
#include "bulk-checkin.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "lockfile.h"
#include "quote.h"
@@ -18,8 +20,10 @@
#include "parse-options.h"
#include "pathspec.h"
#include "dir.h"
+#include "setup.h"
#include "split-index.h"
#include "fsmonitor.h"
+#include "write-or-die.h"
/*
* Default to not allowing changes to the list of files. The
diff --git a/builtin/update-ref.c b/builtin/update-ref.c
index 1ba0727ba7..3ffd75b3e7 100644
--- a/builtin/update-ref.c
+++ b/builtin/update-ref.c
@@ -1,5 +1,6 @@
#include "cache.h"
#include "config.h"
+#include "gettext.h"
#include "refs.h"
#include "builtin.h"
#include "parse-options.h"
diff --git a/builtin/update-server-info.c b/builtin/update-server-info.c
index d2239c9ef4..e7bff27ae4 100644
--- a/builtin/update-server-info.c
+++ b/builtin/update-server-info.c
@@ -1,6 +1,7 @@
#include "cache.h"
#include "config.h"
#include "builtin.h"
+#include "gettext.h"
#include "parse-options.h"
static const char * const update_server_info_usage[] = {
diff --git a/builtin/upload-pack.c b/builtin/upload-pack.c
index 7a3c68720f..beb9dd0861 100644
--- a/builtin/upload-pack.c
+++ b/builtin/upload-pack.c
@@ -1,6 +1,7 @@
#include "cache.h"
#include "builtin.h"
#include "exec-cmd.h"
+#include "gettext.h"
#include "pkt-line.h"
#include "parse-options.h"
#include "protocol.h"
diff --git a/builtin/verify-commit.c b/builtin/verify-commit.c
index 2a0c927ee9..4d10aa98b1 100644
--- a/builtin/verify-commit.c
+++ b/builtin/verify-commit.c
@@ -8,6 +8,7 @@
#include "cache.h"
#include "config.h"
#include "builtin.h"
+#include "gettext.h"
#include "object-store.h"
#include "repository.h"
#include "commit.h"
diff --git a/builtin/verify-pack.c b/builtin/verify-pack.c
index 27d6f75fd8..190fd69540 100644
--- a/builtin/verify-pack.c
+++ b/builtin/verify-pack.c
@@ -1,6 +1,7 @@
#include "builtin.h"
#include "cache.h"
#include "config.h"
+#include "gettext.h"
#include "run-command.h"
#include "parse-options.h"
diff --git a/builtin/verify-tag.c b/builtin/verify-tag.c
index 2a9aac43b8..28d0da6845 100644
--- a/builtin/verify-tag.c
+++ b/builtin/verify-tag.c
@@ -8,6 +8,7 @@
#include "cache.h"
#include "config.h"
#include "builtin.h"
+#include "gettext.h"
#include "tag.h"
#include "run-command.h"
#include "parse-options.h"
diff --git a/builtin/worktree.c b/builtin/worktree.c
index 84e2888fa2..39e9e5c9ce 100644
--- a/builtin/worktree.c
+++ b/builtin/worktree.c
@@ -1,8 +1,11 @@
#include "cache.h"
+#include "abspath.h"
#include "checkout.h"
#include "config.h"
#include "builtin.h"
#include "dir.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "parse-options.h"
#include "strvec.h"
@@ -14,6 +17,7 @@
#include "submodule.h"
#include "utf8.h"
#include "worktree.h"
+#include "wrapper.h"
#include "quote.h"
#define BUILTIN_WORKTREE_ADD_USAGE \
diff --git a/builtin/write-tree.c b/builtin/write-tree.c
index 7ad0d05945..6085f64d10 100644
--- a/builtin/write-tree.c
+++ b/builtin/write-tree.c
@@ -7,6 +7,8 @@
#include "builtin.h"
#include "cache.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "tree.h"
#include "cache-tree.h"
diff --git a/bulk-checkin.c b/bulk-checkin.c
index 556a34ba7d..6362b6aabc 100644
--- a/bulk-checkin.c
+++ b/bulk-checkin.c
@@ -1,9 +1,11 @@
/*
* Copyright (c) 2011, Google Inc.
*/
-#include "git-compat-util.h"
+#include "cache.h"
#include "alloc.h"
#include "bulk-checkin.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "lockfile.h"
#include "repository.h"
diff --git a/bulk-checkin.h b/bulk-checkin.h
index 8281b9cb15..48fe9a6e91 100644
--- a/bulk-checkin.h
+++ b/bulk-checkin.h
@@ -4,7 +4,7 @@
#ifndef BULK_CHECKIN_H
#define BULK_CHECKIN_H
-#include "cache.h"
+#include "object.h"
void prepare_loose_object_bulk_checkin(void);
void fsync_loose_object_bulk_checkin(int fd, const char *filename);
diff --git a/bundle-uri.c b/bundle-uri.c
index 177c181040..1ff1cf51da 100644
--- a/bundle-uri.c
+++ b/bundle-uri.c
@@ -1,6 +1,8 @@
#include "cache.h"
#include "bundle-uri.h"
#include "bundle.h"
+#include "environment.h"
+#include "gettext.h"
#include "object-store.h"
#include "refs.h"
#include "run-command.h"
diff --git a/bundle.c b/bundle.c
index 73f0b1b89d..6471489975 100644
--- a/bundle.c
+++ b/bundle.c
@@ -1,6 +1,8 @@
#include "cache.h"
#include "lockfile.h"
#include "bundle.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "object-store.h"
#include "repository.h"
@@ -14,6 +16,7 @@
#include "strvec.h"
#include "list-objects-filter-options.h"
#include "connected.h"
+#include "write-or-die.h"
static const char v2_bundle_signature[] = "# v2 git bundle\n";
static const char v3_bundle_signature[] = "# v3 git bundle\n";
diff --git a/bundle.h b/bundle.h
index 9f2bd733a6..021adbdcbb 100644
--- a/bundle.h
+++ b/bundle.h
@@ -2,7 +2,6 @@
#define BUNDLE_H
#include "strvec.h"
-#include "cache.h"
#include "string-list.h"
#include "list-objects-filter-options.h"
diff --git a/cache-tree.c b/cache-tree.c
index 29ea7bd364..ff14b527da 100644
--- a/cache-tree.c
+++ b/cache-tree.c
@@ -1,5 +1,6 @@
-#include "git-compat-util.h"
+#include "cache.h"
#include "alloc.h"
+#include "environment.h"
#include "hex.h"
#include "lockfile.h"
#include "tree.h"
diff --git a/cache.h b/cache.h
index 0ede885656..82d7b112b4 100644
--- a/cache.h
+++ b/cache.h
@@ -452,174 +452,6 @@ static inline enum object_type object_type(unsigned int mode)
OBJ_BLOB;
}
-/* Double-check local_repo_env below if you add to this list. */
-#define GIT_DIR_ENVIRONMENT "GIT_DIR"
-#define GIT_COMMON_DIR_ENVIRONMENT "GIT_COMMON_DIR"
-#define GIT_NAMESPACE_ENVIRONMENT "GIT_NAMESPACE"
-#define GIT_WORK_TREE_ENVIRONMENT "GIT_WORK_TREE"
-#define GIT_PREFIX_ENVIRONMENT "GIT_PREFIX"
-#define DEFAULT_GIT_DIR_ENVIRONMENT ".git"
-#define DB_ENVIRONMENT "GIT_OBJECT_DIRECTORY"
-#define INDEX_ENVIRONMENT "GIT_INDEX_FILE"
-#define GRAFT_ENVIRONMENT "GIT_GRAFT_FILE"
-#define GIT_SHALLOW_FILE_ENVIRONMENT "GIT_SHALLOW_FILE"
-#define TEMPLATE_DIR_ENVIRONMENT "GIT_TEMPLATE_DIR"
-#define CONFIG_ENVIRONMENT "GIT_CONFIG"
-#define CONFIG_DATA_ENVIRONMENT "GIT_CONFIG_PARAMETERS"
-#define CONFIG_COUNT_ENVIRONMENT "GIT_CONFIG_COUNT"
-#define EXEC_PATH_ENVIRONMENT "GIT_EXEC_PATH"
-#define CEILING_DIRECTORIES_ENVIRONMENT "GIT_CEILING_DIRECTORIES"
-#define NO_REPLACE_OBJECTS_ENVIRONMENT "GIT_NO_REPLACE_OBJECTS"
-#define GIT_REPLACE_REF_BASE_ENVIRONMENT "GIT_REPLACE_REF_BASE"
-#define GITATTRIBUTES_FILE ".gitattributes"
-#define INFOATTRIBUTES_FILE "info/attributes"
-#define ATTRIBUTE_MACRO_PREFIX "[attr]"
-#define GITMODULES_FILE ".gitmodules"
-#define GITMODULES_INDEX ":.gitmodules"
-#define GITMODULES_HEAD "HEAD:.gitmodules"
-#define GIT_NOTES_REF_ENVIRONMENT "GIT_NOTES_REF"
-#define GIT_NOTES_DEFAULT_REF "refs/notes/commits"
-#define GIT_NOTES_DISPLAY_REF_ENVIRONMENT "GIT_NOTES_DISPLAY_REF"
-#define GIT_NOTES_REWRITE_REF_ENVIRONMENT "GIT_NOTES_REWRITE_REF"
-#define GIT_NOTES_REWRITE_MODE_ENVIRONMENT "GIT_NOTES_REWRITE_MODE"
-#define GIT_LITERAL_PATHSPECS_ENVIRONMENT "GIT_LITERAL_PATHSPECS"
-#define GIT_GLOB_PATHSPECS_ENVIRONMENT "GIT_GLOB_PATHSPECS"
-#define GIT_NOGLOB_PATHSPECS_ENVIRONMENT "GIT_NOGLOB_PATHSPECS"
-#define GIT_ICASE_PATHSPECS_ENVIRONMENT "GIT_ICASE_PATHSPECS"
-#define GIT_QUARANTINE_ENVIRONMENT "GIT_QUARANTINE_PATH"
-#define GIT_OPTIONAL_LOCKS_ENVIRONMENT "GIT_OPTIONAL_LOCKS"
-#define GIT_TEXT_DOMAIN_DIR_ENVIRONMENT "GIT_TEXTDOMAINDIR"
-
-/*
- * Environment variable used in handshaking the wire protocol.
- * Contains a colon ':' separated list of keys with optional values
- * 'key[=value]'. Presence of unknown keys and values must be
- * ignored.
- */
-#define GIT_PROTOCOL_ENVIRONMENT "GIT_PROTOCOL"
-/* HTTP header used to handshake the wire protocol */
-#define GIT_PROTOCOL_HEADER "Git-Protocol"
-
-/*
- * This environment variable is expected to contain a boolean indicating
- * whether we should or should not treat:
- *
- * GIT_DIR=foo.git git ...
- *
- * as if GIT_WORK_TREE=. was given. It's not expected that users will make use
- * of this, but we use it internally to communicate to sub-processes that we
- * are in a bare repo. If not set, defaults to true.
- */
-#define GIT_IMPLICIT_WORK_TREE_ENVIRONMENT "GIT_IMPLICIT_WORK_TREE"
-
-/*
- * Repository-local GIT_* environment variables; these will be cleared
- * when git spawns a sub-process that runs inside another repository.
- * The array is NULL-terminated, which makes it easy to pass in the "env"
- * parameter of a run-command invocation, or to do a simple walk.
- */
-extern const char * const local_repo_env[];
-
-void setup_git_env(const char *git_dir);
-
-/*
- * Returns true iff we have a configured git repository (either via
- * setup_git_directory, or in the environment via $GIT_DIR).
- */
-int have_git_dir(void);
-
-extern int is_bare_repository_cfg;
-int is_bare_repository(void);
-int is_inside_git_dir(void);
-extern char *git_work_tree_cfg;
-int is_inside_work_tree(void);
-const char *get_git_dir(void);
-const char *get_git_common_dir(void);
-const char *get_object_directory(void);
-char *get_index_file(void);
-char *get_graft_file(struct repository *r);
-void set_git_dir(const char *path, int make_realpath);
-int get_common_dir_noenv(struct strbuf *sb, const char *gitdir);
-int get_common_dir(struct strbuf *sb, const char *gitdir);
-const char *get_git_namespace(void);
-const char *strip_namespace(const char *namespaced_ref);
-const char *get_git_work_tree(void);
-
-/*
- * Return true if the given path is a git directory; note that this _just_
- * looks at the directory itself. If you want to know whether "foo/.git"
- * is a repository, you must feed that path, not just "foo".
- */
-int is_git_directory(const char *path);
-
-/*
- * Return 1 if the given path is the root of a git repository or
- * submodule, else 0. Will not return 1 for bare repositories with the
- * exception of creating a bare repository in "foo/.git" and calling
- * is_git_repository("foo").
- *
- * If we run into read errors, we err on the side of saying "yes, it is",
- * as we usually consider sub-repos precious, and would prefer to err on the
- * side of not disrupting or deleting them.
- */
-int is_nonbare_repository_dir(struct strbuf *path);
-
-#define READ_GITFILE_ERR_STAT_FAILED 1
-#define READ_GITFILE_ERR_NOT_A_FILE 2
-#define READ_GITFILE_ERR_OPEN_FAILED 3
-#define READ_GITFILE_ERR_READ_FAILED 4
-#define READ_GITFILE_ERR_INVALID_FORMAT 5
-#define READ_GITFILE_ERR_NO_PATH 6
-#define READ_GITFILE_ERR_NOT_A_REPO 7
-#define READ_GITFILE_ERR_TOO_LARGE 8
-void read_gitfile_error_die(int error_code, const char *path, const char *dir);
-const char *read_gitfile_gently(const char *path, int *return_error_code);
-#define read_gitfile(path) read_gitfile_gently((path), NULL)
-const char *resolve_gitdir_gently(const char *suspect, int *return_error_code);
-#define resolve_gitdir(path) resolve_gitdir_gently((path), NULL)
-
-void set_git_work_tree(const char *tree);
-
-#define ALTERNATE_DB_ENVIRONMENT "GIT_ALTERNATE_OBJECT_DIRECTORIES"
-
-void setup_work_tree(void);
-/*
- * Find the commondir and gitdir of the repository that contains the current
- * working directory, without changing the working directory or other global
- * state. The result is appended to commondir and gitdir. If the discovered
- * gitdir does not correspond to a worktree, then 'commondir' and 'gitdir' will
- * both have the same result appended to the buffer. The return value is
- * either 0 upon success and non-zero if no repository was found.
- */
-int discover_git_directory(struct strbuf *commondir,
- struct strbuf *gitdir);
-const char *setup_git_directory_gently(int *);
-const char *setup_git_directory(void);
-char *prefix_path(const char *prefix, int len, const char *path);
-char *prefix_path_gently(const char *prefix, int len, int *remaining, const char *path);
-
-/*
- * Concatenate "prefix" (if len is non-zero) and "path", with no
- * connecting characters (so "prefix" should end with a "/").
- * Unlike prefix_path, this should be used if the named file does
- * not have to interact with index entry; i.e. name of a random file
- * on the filesystem.
- *
- * The return value is always a newly allocated string (even if the
- * prefix was empty).
- */
-char *prefix_filename(const char *prefix, const char *path);
-
-/* Likewise, but path=="-" always yields "-" */
-char *prefix_filename_except_for_dash(const char *prefix, const char *path);
-
-int check_filename(const char *prefix, const char *name);
-void verify_filename(const char *prefix,
- const char *name,
- int diagnose_misspelt_rev);
-void verify_non_filename(const char *prefix, const char *name);
-int path_inside_repo(const char *prefix, const char *path);
-
#define INIT_DB_QUIET 0x0001
#define INIT_DB_EXIST_OK 0x0002
@@ -628,9 +460,6 @@ int init_db(const char *git_dir, const char *real_git_dir,
const char *initial_branch, unsigned int flags);
void initialize_repository_version(int hash_algo, int reinit);
-void sanitize_stdfds(void);
-int daemonize(void);
-
/* Initialize and use the cache information */
struct lock_file;
void preload_index(struct index_state *index,
@@ -855,229 +684,7 @@ void set_alternate_index_output(const char *);
extern int verify_index_checksum;
extern int verify_ce_order;
-/* Environment bits from configuration mechanism */
-extern int trust_executable_bit;
-extern int trust_ctime;
-extern int check_stat;
extern int quote_path_fully;
-extern int has_symlinks;
-extern int minimum_abbrev, default_abbrev;
-extern int ignore_case;
-extern int assume_unchanged;
-extern int prefer_symlink_refs;
-extern int warn_ambiguous_refs;
-extern int warn_on_object_refname_ambiguity;
-extern char *apply_default_whitespace;
-extern char *apply_default_ignorewhitespace;
-extern const char *git_attributes_file;
-extern const char *git_hooks_path;
-extern int zlib_compression_level;
-extern int pack_compression_level;
-extern size_t packed_git_window_size;
-extern size_t packed_git_limit;
-extern size_t delta_base_cache_limit;
-extern unsigned long big_file_threshold;
-extern unsigned long pack_size_limit_cfg;
-
-/*
- * Accessors for the core.sharedrepository config which lazy-load the value
- * from the config (if not already set). The "reset" function can be
- * used to unset "set" or cached value, meaning that the value will be loaded
- * fresh from the config file on the next call to get_shared_repository().
- */
-void set_shared_repository(int value);
-int get_shared_repository(void);
-void reset_shared_repository(void);
-
-/*
- * These values are used to help identify parts of a repository to fsync.
- * FSYNC_COMPONENT_NONE identifies data that will not be a persistent part of the
- * repository and so shouldn't be fsynced.
- */
-enum fsync_component {
- FSYNC_COMPONENT_NONE,
- FSYNC_COMPONENT_LOOSE_OBJECT = 1 << 0,
- FSYNC_COMPONENT_PACK = 1 << 1,
- FSYNC_COMPONENT_PACK_METADATA = 1 << 2,
- FSYNC_COMPONENT_COMMIT_GRAPH = 1 << 3,
- FSYNC_COMPONENT_INDEX = 1 << 4,
- FSYNC_COMPONENT_REFERENCE = 1 << 5,
-};
-
-#define FSYNC_COMPONENTS_OBJECTS (FSYNC_COMPONENT_LOOSE_OBJECT | \
- FSYNC_COMPONENT_PACK)
-
-#define FSYNC_COMPONENTS_DERIVED_METADATA (FSYNC_COMPONENT_PACK_METADATA | \
- FSYNC_COMPONENT_COMMIT_GRAPH)
-
-#define FSYNC_COMPONENTS_DEFAULT ((FSYNC_COMPONENTS_OBJECTS | \
- FSYNC_COMPONENTS_DERIVED_METADATA) & \
- ~FSYNC_COMPONENT_LOOSE_OBJECT)
-
-#define FSYNC_COMPONENTS_COMMITTED (FSYNC_COMPONENTS_OBJECTS | \
- FSYNC_COMPONENT_REFERENCE)
-
-#define FSYNC_COMPONENTS_ADDED (FSYNC_COMPONENTS_COMMITTED | \
- FSYNC_COMPONENT_INDEX)
-
-#define FSYNC_COMPONENTS_ALL (FSYNC_COMPONENT_LOOSE_OBJECT | \
- FSYNC_COMPONENT_PACK | \
- FSYNC_COMPONENT_PACK_METADATA | \
- FSYNC_COMPONENT_COMMIT_GRAPH | \
- FSYNC_COMPONENT_INDEX | \
- FSYNC_COMPONENT_REFERENCE)
-
-#ifndef FSYNC_COMPONENTS_PLATFORM_DEFAULT
-#define FSYNC_COMPONENTS_PLATFORM_DEFAULT FSYNC_COMPONENTS_DEFAULT
-#endif
-
-/*
- * A bitmask indicating which components of the repo should be fsynced.
- */
-extern enum fsync_component fsync_components;
-extern int fsync_object_files;
-extern int use_fsync;
-
-enum fsync_method {
- FSYNC_METHOD_FSYNC,
- FSYNC_METHOD_WRITEOUT_ONLY,
- FSYNC_METHOD_BATCH,
-};
-
-extern enum fsync_method fsync_method;
-extern int core_preload_index;
-extern int precomposed_unicode;
-extern int protect_hfs;
-extern int protect_ntfs;
-
-extern int core_apply_sparse_checkout;
-extern int core_sparse_checkout_cone;
-extern int sparse_expect_files_outside_of_patterns;
-
-/*
- * Returns the boolean value of $GIT_OPTIONAL_LOCKS (or the default value).
- */
-int use_optional_locks(void);
-
-/*
- * The character that begins a commented line in user-editable file
- * that is subject to stripspace.
- */
-extern char comment_line_char;
-extern int auto_comment_line_char;
-
-enum log_refs_config {
- LOG_REFS_UNSET = -1,
- LOG_REFS_NONE = 0,
- LOG_REFS_NORMAL,
- LOG_REFS_ALWAYS
-};
-extern enum log_refs_config log_all_ref_updates;
-
-enum rebase_setup_type {
- AUTOREBASE_NEVER = 0,
- AUTOREBASE_LOCAL,
- AUTOREBASE_REMOTE,
- AUTOREBASE_ALWAYS
-};
-
-enum push_default_type {
- PUSH_DEFAULT_NOTHING = 0,
- PUSH_DEFAULT_MATCHING,
- PUSH_DEFAULT_SIMPLE,
- PUSH_DEFAULT_UPSTREAM,
- PUSH_DEFAULT_CURRENT,
- PUSH_DEFAULT_UNSPECIFIED
-};
-
-extern enum rebase_setup_type autorebase;
-extern enum push_default_type push_default;
-
-enum object_creation_mode {
- OBJECT_CREATION_USES_HARDLINKS = 0,
- OBJECT_CREATION_USES_RENAMES = 1
-};
-
-extern enum object_creation_mode object_creation_mode;
-
-extern char *notes_ref_name;
-
-extern int grafts_replace_parents;
-
-/*
- * GIT_REPO_VERSION is the version we write by default. The
- * _READ variant is the highest number we know how to
- * handle.
- */
-#define GIT_REPO_VERSION 0
-#define GIT_REPO_VERSION_READ 1
-extern int repository_format_precious_objects;
-extern int repository_format_worktree_config;
-
-/*
- * You _have_ to initialize a `struct repository_format` using
- * `= REPOSITORY_FORMAT_INIT` before calling `read_repository_format()`.
- */
-struct repository_format {
- int version;
- int precious_objects;
- char *partial_clone; /* value of extensions.partialclone */
- int worktree_config;
- int is_bare;
- int hash_algo;
- int sparse_index;
- char *work_tree;
- struct string_list unknown_extensions;
- struct string_list v1_only_extensions;
-};
-
-/*
- * Always use this to initialize a `struct repository_format`
- * to a well-defined, default state before calling
- * `read_repository()`.
- */
-#define REPOSITORY_FORMAT_INIT \
-{ \
- .version = -1, \
- .is_bare = -1, \
- .hash_algo = GIT_HASH_SHA1, \
- .unknown_extensions = STRING_LIST_INIT_DUP, \
- .v1_only_extensions = STRING_LIST_INIT_DUP, \
-}
-
-/*
- * Read the repository format characteristics from the config file "path" into
- * "format" struct. Returns the numeric version. On error, or if no version is
- * found in the configuration, -1 is returned, format->version is set to -1,
- * and all other fields in the struct are set to the default configuration
- * (REPOSITORY_FORMAT_INIT). Always initialize the struct using
- * REPOSITORY_FORMAT_INIT before calling this function.
- */
-int read_repository_format(struct repository_format *format, const char *path);
-
-/*
- * Free the memory held onto by `format`, but not the struct itself.
- * (No need to use this after `read_repository_format()` fails.)
- */
-void clear_repository_format(struct repository_format *format);
-
-/*
- * Verify that the repository described by repository_format is something we
- * can read. If it is, return 0. Otherwise, return -1, and "err" will describe
- * any errors encountered.
- */
-int verify_repository_format(const struct repository_format *format,
- struct strbuf *err);
-
-/*
- * Check the repository format version in the path found in get_git_dir(),
- * and die if it is a version we don't understand. Generally one would
- * set_git_dir() before calling this, and use it only for "are we in a valid
- * repo?".
- *
- * If successful and fmt is not NULL, fill fmt with data.
- */
-void check_repository_format(struct repository_format *fmt);
#define MTIME_CHANGED 0x0001
#define CTIME_CHANGED 0x0002
@@ -1105,28 +712,6 @@ void check_repository_format(struct repository_format *fmt);
const char *repo_find_unique_abbrev(struct repository *r, const struct object_id *oid, int len);
int repo_find_unique_abbrev_r(struct repository *r, char *hex, const struct object_id *oid, int len);
-/* set default permissions by passing mode arguments to open(2) */
-int git_mkstemps_mode(char *pattern, int suffix_len, int mode);
-int git_mkstemp_mode(char *pattern, int mode);
-
-/*
- * NOTE NOTE NOTE!!
- *
- * PERM_UMASK, OLD_PERM_GROUP and OLD_PERM_EVERYBODY enumerations must
- * not be changed. Old repositories have core.sharedrepository written in
- * numeric format, and therefore these values are preserved for compatibility
- * reasons.
- */
-enum sharedrepo {
- PERM_UMASK = 0,
- OLD_PERM_GROUP = 1,
- OLD_PERM_EVERYBODY = 2,
- PERM_GROUP = 0660,
- PERM_EVERYBODY = 0664
-};
-int git_config_perm(const char *var, const char *value);
-int adjust_shared_perm(const char *path);
-
/*
* Create the directory containing the named path, using care to be
* somewhat safe against races. Return one of the scld_error values to
@@ -1161,68 +746,6 @@ enum scld_error safe_create_leading_directories_const(const char *path);
enum scld_error safe_create_leading_directories_no_share(char *path);
int mkdir_in_gitdir(const char *path);
-char *interpolate_path(const char *path, int real_home);
-/* NEEDSWORK: remove this synonym once in-flight topics have migrated */
-#define expand_user_path interpolate_path
-const char *enter_repo(const char *path, int strict);
-static inline int is_absolute_path(const char *path)
-{
- return is_dir_sep(path[0]) || has_dos_drive_prefix(path);
-}
-int is_directory(const char *);
-char *strbuf_realpath(struct strbuf *resolved, const char *path,
- int die_on_error);
-char *strbuf_realpath_forgiving(struct strbuf *resolved, const char *path,
- int die_on_error);
-char *real_pathdup(const char *path, int die_on_error);
-const char *absolute_path(const char *path);
-char *absolute_pathdup(const char *path);
-const char *remove_leading_path(const char *in, const char *prefix);
-const char *relative_path(const char *in, const char *prefix, struct strbuf *sb);
-int normalize_path_copy_len(char *dst, const char *src, int *prefix_len);
-int normalize_path_copy(char *dst, const char *src);
-int longest_ancestor_length(const char *path, struct string_list *prefixes);
-char *strip_path_suffix(const char *path, const char *suffix);
-int daemon_avoid_alias(const char *path);
-
-/*
- * These functions match their is_hfs_dotgit() counterparts; see utf8.h for
- * details.
- */
-int is_ntfs_dotgit(const char *name);
-int is_ntfs_dotgitmodules(const char *name);
-int is_ntfs_dotgitignore(const char *name);
-int is_ntfs_dotgitattributes(const char *name);
-int is_ntfs_dotmailmap(const char *name);
-
-/*
- * Returns true iff "str" could be confused as a command-line option when
- * passed to a sub-program like "ssh". Note that this has nothing to do with
- * shell-quoting, which should be handled separately; we're assuming here that
- * the string makes it verbatim to the sub-program.
- */
-int looks_like_command_line_option(const char *str);
-
-/**
- * Return a newly allocated string with the evaluation of
- * "$XDG_CONFIG_HOME/$subdir/$filename" if $XDG_CONFIG_HOME is non-empty, otherwise
- * "$HOME/.config/$subdir/$filename". Return NULL upon error.
- */
-char *xdg_config_home_for(const char *subdir, const char *filename);
-
-/**
- * Return a newly allocated string with the evaluation of
- * "$XDG_CONFIG_HOME/git/$filename" if $XDG_CONFIG_HOME is non-empty, otherwise
- * "$HOME/.config/git/$filename". Return NULL upon error.
- */
-char *xdg_config_home(const char *filename);
-
-/**
- * Return a newly allocated string with the evaluation of
- * "$XDG_CACHE_HOME/git/$filename" if $XDG_CACHE_HOME is non-empty, otherwise
- * "$HOME/.cache/git/$filename". Return NULL upon error.
- */
-char *xdg_cache_home(const char *filename);
int git_open_cloexec(const char *name, int flags);
#define git_open(name) git_open_cloexec(name, O_RDONLY)
@@ -1378,8 +901,6 @@ int repo_interpret_branch_name(struct repository *r,
struct strbuf *buf,
const struct interpret_branch_name_options *options);
-int validate_headref(const char *ref);
-
int base_name_compare(const char *name1, size_t len1, int mode1,
const char *name2, size_t len2, int mode2);
int df_name_compare(const char *name1, size_t len1, int mode1,
@@ -1439,21 +960,6 @@ struct pack_entry {
};
/*
- * Create a temporary file rooted in the object database directory, or
- * die on failure. The filename is taken from "pattern", which should have the
- * usual "XXXXXX" trailer, and the resulting filename is written into the
- * "template" buffer. Returns the open descriptor.
- */
-int odb_mkstemp(struct strbuf *temp_filename, const char *pattern);
-
-/*
- * Create a pack .keep file named "name" (which should generally be the output
- * of odb_pack_name). Returns a file descriptor opened for writing, or -1 on
- * error.
- */
-int odb_pack_keep(const char *name);
-
-/*
* Set this to 0 to prevent oid_object_info_extended() from fetching missing
* blobs. This has a difference only if extensions.partialClone is set.
*
@@ -1464,62 +970,15 @@ extern int fetch_if_missing;
/* Dumb servers support */
int update_server_info(int);
-const char *get_log_output_encoding(void);
-const char *get_commit_output_encoding(void);
-
-extern const char *git_commit_encoding;
-extern const char *git_log_output_encoding;
extern const char *git_mailmap_file;
extern const char *git_mailmap_blob;
-/* IO helper functions */
-void maybe_flush_or_die(FILE *, const char *);
-__attribute__((format (printf, 2, 3)))
-void fprintf_or_die(FILE *, const char *fmt, ...);
-void fwrite_or_die(FILE *f, const void *buf, size_t count);
-void fflush_or_die(FILE *f);
-
#define COPY_READ_ERROR (-2)
#define COPY_WRITE_ERROR (-3)
int copy_fd(int ifd, int ofd);
int copy_file(const char *dst, const char *src, int mode);
int copy_file_with_time(const char *dst, const char *src, int mode);
-void write_or_die(int fd, const void *buf, size_t count);
-void fsync_or_die(int fd, const char *);
-int fsync_component(enum fsync_component component, int fd);
-void fsync_component_or_die(enum fsync_component component, int fd, const char *msg);
-
-static inline int batch_fsync_enabled(enum fsync_component component)
-{
- return (fsync_components & component) && (fsync_method == FSYNC_METHOD_BATCH);
-}
-
-ssize_t read_in_full(int fd, void *buf, size_t count);
-ssize_t write_in_full(int fd, const void *buf, size_t count);
-ssize_t pread_in_full(int fd, void *buf, size_t count, off_t offset);
-
-static inline ssize_t write_str_in_full(int fd, const char *str)
-{
- return write_in_full(fd, str, strlen(str));
-}
-
-/**
- * Open (and truncate) the file at path, write the contents of buf to it,
- * and close it. Dies if any errors are encountered.
- */
-void write_file_buf(const char *path, const char *buf, size_t len);
-
-/**
- * Like write_file_buf(), but format the contents into a buffer first.
- * Additionally, write_file() will append a newline if one is not already
- * present, making it convenient to write text files:
- *
- * write_file(path, "counter: %d", ctr);
- */
-__attribute__((format (printf, 2, 3)))
-void write_file(const char *path, const char *fmt, ...);
-
/* pager.c */
void setup_pager(void);
int pager_in_use(void);
@@ -1530,10 +989,6 @@ int decimal_width(uintmax_t);
int check_pager_config(const char *cmd);
void prepare_pager_args(struct child_process *, const char *pager);
-extern const char *editor_program;
-extern const char *askpass_program;
-extern const char *excludes_file;
-
/* base85 */
int decode_85(char *dst, const char *line, int linelen);
void encode_85(char *buf, const unsigned char *data, int bytes);
@@ -1585,15 +1040,6 @@ int ws_blank_line(const char *line, int len);
void overlay_tree_on_index(struct index_state *istate,
const char *tree_name, const char *prefix);
-/* setup.c */
-struct startup_info {
- int have_repository;
- const char *prefix;
- const char *original_cwd;
-};
-extern struct startup_info *startup_info;
-extern const char *tmp_original_cwd;
-
/* merge.c */
struct commit_list;
int try_merge_command(struct repository *r,
@@ -1637,21 +1083,4 @@ void stat_validity_update(struct stat_validity *sv, int fd);
int versioncmp(const char *s1, const char *s2);
-/*
- * Create a directory and (if share is nonzero) adjust its permissions
- * according to the shared_repository setting. Only use this for
- * directories under $GIT_DIR. Don't use it for working tree
- * directories.
- */
-void safe_create_dir(const char *dir, int share);
-
-/*
- * Should we print an ellipsis after an abbreviated SHA-1 value
- * when doing diff-raw output or indicating a detached HEAD?
- */
-int print_sha1_ellipsis(void);
-
-/* Return 1 if the file is empty or does not exists, 0 otherwise. */
-int is_empty_or_missing_file(const char *filename);
-
#endif /* CACHE_H */
diff --git a/chdir-notify.c b/chdir-notify.c
index 5f7f2c2ac2..929ec01b3a 100644
--- a/chdir-notify.c
+++ b/chdir-notify.c
@@ -1,4 +1,5 @@
#include "cache.h"
+#include "abspath.h"
#include "chdir-notify.h"
#include "list.h"
#include "strbuf.h"
diff --git a/chunk-format.c b/chunk-format.c
index f65e9a1e42..60a73c1b14 100644
--- a/chunk-format.c
+++ b/chunk-format.c
@@ -2,6 +2,8 @@
#include "alloc.h"
#include "chunk-format.h"
#include "csum-file.h"
+#include "gettext.h"
+#include "trace2.h"
/*
* When writing a chunk-based file format, collect the chunks in
diff --git a/color.c b/color.c
index 6b577ce0a7..672dcbb73a 100644
--- a/color.c
+++ b/color.c
@@ -1,6 +1,7 @@
#include "cache.h"
#include "config.h"
#include "color.h"
+#include "gettext.h"
#include "hex.h"
static int git_use_color_default = GIT_COLOR_AUTO;
diff --git a/combine-diff.c b/combine-diff.c
index 2095396394..44ef6a1a81 100644
--- a/combine-diff.c
+++ b/combine-diff.c
@@ -4,6 +4,7 @@
#include "blob.h"
#include "diff.h"
#include "diffcore.h"
+#include "environment.h"
#include "hex.h"
#include "quote.h"
#include "xdiff-interface.h"
diff --git a/commit-graph.c b/commit-graph.c
index ff9590043b..b1e737c01b 100644
--- a/commit-graph.c
+++ b/commit-graph.c
@@ -1,5 +1,6 @@
-#include "git-compat-util.h"
+#include "cache.h"
#include "config.h"
+#include "gettext.h"
#include "hex.h"
#include "lockfile.h"
#include "pack.h"
@@ -21,6 +22,7 @@
#include "json-writer.h"
#include "trace2.h"
#include "chunk-format.h"
+#include "wrapper.h"
void git_test_write_commit_graph_or_die(void)
{
diff --git a/commit.c b/commit.c
index 8e22bebd0e..6d844da9a6 100644
--- a/commit.c
+++ b/commit.c
@@ -2,6 +2,8 @@
#include "tag.h"
#include "commit.h"
#include "commit-graph.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "repository.h"
#include "object-store.h"
@@ -21,6 +23,7 @@
#include "refs.h"
#include "commit-reach.h"
#include "run-command.h"
+#include "setup.h"
#include "shallow.h"
#include "hook.h"
diff --git a/common-main.c b/common-main.c
index 0a22861f1c..b83cb5cf06 100644
--- a/common-main.c
+++ b/common-main.c
@@ -1,6 +1,8 @@
#include "cache.h"
#include "exec-cmd.h"
+#include "gettext.h"
#include "attr.h"
+#include "setup.h"
/*
* Many parts of Git have subprograms communicate via pipe, expect the
diff --git a/compat/disk.h b/compat/disk.h
index 50a32e3d8a..6c979c27d8 100644
--- a/compat/disk.h
+++ b/compat/disk.h
@@ -2,6 +2,8 @@
#define COMPAT_DISK_H
#include "git-compat-util.h"
+#include "abspath.h"
+#include "gettext.h"
static int get_disk_info(struct strbuf *out)
{
diff --git a/compat/fsmonitor/fsm-health-win32.c b/compat/fsmonitor/fsm-health-win32.c
index 2ea08c1d4e..fe11bdd9ce 100644
--- a/compat/fsmonitor/fsm-health-win32.c
+++ b/compat/fsmonitor/fsm-health-win32.c
@@ -3,6 +3,7 @@
#include "fsmonitor.h"
#include "fsm-health.h"
#include "fsmonitor--daemon.h"
+#include "gettext.h"
/*
* Every minute wake up and test our health.
diff --git a/compat/fsmonitor/fsm-listen-darwin.c b/compat/fsmonitor/fsm-listen-darwin.c
index 97a55a6f0a..5eb6402ab8 100644
--- a/compat/fsmonitor/fsm-listen-darwin.c
+++ b/compat/fsmonitor/fsm-listen-darwin.c
@@ -28,6 +28,7 @@
#include "fsm-listen.h"
#include "fsmonitor--daemon.h"
#include "fsmonitor-path-utils.h"
+#include "gettext.h"
struct fsm_listen_data
{
diff --git a/compat/fsmonitor/fsm-listen-win32.c b/compat/fsmonitor/fsm-listen-win32.c
index 03df8d951b..7b07b74ba5 100644
--- a/compat/fsmonitor/fsm-listen-win32.c
+++ b/compat/fsmonitor/fsm-listen-win32.c
@@ -3,6 +3,7 @@
#include "fsmonitor.h"
#include "fsm-listen.h"
#include "fsmonitor--daemon.h"
+#include "gettext.h"
/*
* The documentation of ReadDirectoryChangesW() states that the maximum
diff --git a/compat/fsmonitor/fsm-path-utils-darwin.c b/compat/fsmonitor/fsm-path-utils-darwin.c
index ce5a8febe0..45eb4a9b9e 100644
--- a/compat/fsmonitor/fsm-path-utils-darwin.c
+++ b/compat/fsmonitor/fsm-path-utils-darwin.c
@@ -1,5 +1,6 @@
#include "fsmonitor.h"
#include "fsmonitor-path-utils.h"
+#include "gettext.h"
#include <dirent.h>
#include <errno.h>
#include <fcntl.h>
diff --git a/compat/fsmonitor/fsm-path-utils-win32.c b/compat/fsmonitor/fsm-path-utils-win32.c
index 0d95bbb416..4024baafb9 100644
--- a/compat/fsmonitor/fsm-path-utils-win32.c
+++ b/compat/fsmonitor/fsm-path-utils-win32.c
@@ -1,6 +1,7 @@
#include "cache.h"
#include "fsmonitor.h"
#include "fsmonitor-path-utils.h"
+#include "gettext.h"
/*
* Check remote working directory protocol.
diff --git a/compat/linux/procinfo.c b/compat/linux/procinfo.c
index bc2f9382a1..4bb2d66227 100644
--- a/compat/linux/procinfo.c
+++ b/compat/linux/procinfo.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "strbuf.h"
#include "strvec.h"
diff --git a/compat/mingw.c b/compat/mingw.c
index 3afbde7894..94c5a1daa4 100644
--- a/compat/mingw.c
+++ b/compat/mingw.c
@@ -7,10 +7,14 @@
#include "../strbuf.h"
#include "../run-command.h"
#include "../cache.h"
+#include "../abspath.h"
#include "../alloc.h"
#include "win32/lazyload.h"
#include "../config.h"
+#include "../environment.h"
+#include "../wrapper.h"
#include "dir.h"
+#include "gettext.h"
#define SECURITY_WIN32
#include <sspi.h>
diff --git a/compat/precompose_utf8.c b/compat/precompose_utf8.c
index cce1d57a46..8a9881db07 100644
--- a/compat/precompose_utf8.c
+++ b/compat/precompose_utf8.c
@@ -7,6 +7,8 @@
#include "cache.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "utf8.h"
#include "precompose_utf8.h"
diff --git a/compat/simple-ipc/ipc-shared.c b/compat/simple-ipc/ipc-shared.c
index 1b9d359ab6..e5e1dda8cc 100644
--- a/compat/simple-ipc/ipc-shared.c
+++ b/compat/simple-ipc/ipc-shared.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "simple-ipc.h"
#include "strbuf.h"
#include "pkt-line.h"
diff --git a/compat/simple-ipc/ipc-unix-socket.c b/compat/simple-ipc/ipc-unix-socket.c
index 28a79289d4..152db60a31 100644
--- a/compat/simple-ipc/ipc-unix-socket.c
+++ b/compat/simple-ipc/ipc-unix-socket.c
@@ -1,4 +1,5 @@
#include "cache.h"
+#include "gettext.h"
#include "simple-ipc.h"
#include "strbuf.h"
#include "pkt-line.h"
diff --git a/compat/simple-ipc/ipc-win32.c b/compat/simple-ipc/ipc-win32.c
index 20ea7b65e0..997f614434 100644
--- a/compat/simple-ipc/ipc-win32.c
+++ b/compat/simple-ipc/ipc-win32.c
@@ -1,4 +1,6 @@
#include "cache.h"
+#include "abspath.h"
+#include "gettext.h"
#include "simple-ipc.h"
#include "strbuf.h"
#include "pkt-line.h"
diff --git a/compat/terminal.c b/compat/terminal.c
index ea490a7ced..d87e321189 100644
--- a/compat/terminal.c
+++ b/compat/terminal.c
@@ -1,10 +1,12 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "compat/terminal.h"
+#include "gettext.h"
#include "sigchain.h"
#include "strbuf.h"
#include "run-command.h"
#include "string-list.h"
#include "hashmap.h"
+#include "wrapper.h"
#if defined(HAVE_DEV_TTY) || defined(GIT_WINDOWS_NATIVE)
diff --git a/config.c b/config.c
index 03f38b621f..493f47df8a 100644
--- a/config.c
+++ b/config.c
@@ -5,12 +5,14 @@
* Copyright (C) Johannes Schindelin, 2005
*
*/
-#include "git-compat-util.h"
+#include "cache.h"
+#include "abspath.h"
#include "alloc.h"
#include "date.h"
#include "branch.h"
#include "config.h"
#include "environment.h"
+#include "gettext.h"
#include "ident.h"
#include "repository.h"
#include "lockfile.h"
@@ -25,7 +27,10 @@
#include "color.h"
#include "replace-object.h"
#include "refs.h"
+#include "setup.h"
#include "worktree.h"
+#include "wrapper.h"
+#include "write-or-die.h"
struct config_source {
struct config_source *prev;
diff --git a/connect.c b/connect.c
index ed486116ee..c0c8a38178 100644
--- a/connect.c
+++ b/connect.c
@@ -1,6 +1,8 @@
#include "git-compat-util.h"
#include "cache.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "pkt-line.h"
#include "quote.h"
diff --git a/connected.c b/connected.c
index 0b7be81237..d672521da4 100644
--- a/connected.c
+++ b/connected.c
@@ -1,4 +1,5 @@
-#include "cache.h"
+#include "git-compat-util.h"
+#include "gettext.h"
#include "hex.h"
#include "object-store.h"
#include "run-command.h"
diff --git a/convert.c b/convert.c
index 349c7e4af1..da06e2f51c 100644
--- a/convert.c
+++ b/convert.c
@@ -1,5 +1,6 @@
#include "cache.h"
#include "config.h"
+#include "gettext.h"
#include "hex.h"
#include "object-store.h"
#include "attr.h"
@@ -10,6 +11,7 @@
#include "sub-process.h"
#include "utf8.h"
#include "ll-merge.h"
+#include "wrapper.h"
/*
* convert.c - convert a file when checking it out and checking it in.
diff --git a/copy.c b/copy.c
index 4de6a110f0..c3250f0822 100644
--- a/copy.c
+++ b/copy.c
@@ -1,4 +1,5 @@
#include "cache.h"
+#include "wrapper.h"
int copy_fd(int ifd, int ofd)
{
diff --git a/credential.c b/credential.c
index ea40a2a410..e6417bf880 100644
--- a/credential.c
+++ b/credential.c
@@ -1,6 +1,8 @@
#include "cache.h"
+#include "abspath.h"
#include "config.h"
#include "credential.h"
+#include "gettext.h"
#include "string-list.h"
#include "run-command.h"
#include "url.h"
diff --git a/csum-file.c b/csum-file.c
index cce13c0f04..82ae2973d3 100644
--- a/csum-file.c
+++ b/csum-file.c
@@ -7,9 +7,10 @@
* files. Useful when you write a file that you want to be
* able to verify hasn't been messed with afterwards.
*/
-#include "cache.h"
+#include "git-compat-util.h"
#include "progress.h"
#include "csum-file.h"
+#include "wrapper.h"
static void verify_buffer_or_die(struct hashfile *f,
const void *buf,
diff --git a/csum-file.h b/csum-file.h
index 793a59da12..566e05cbd2 100644
--- a/csum-file.h
+++ b/csum-file.h
@@ -1,8 +1,8 @@
#ifndef CSUM_FILE_H
#define CSUM_FILE_H
-#include "cache.h"
#include "hash.h"
+#include "write-or-die.h"
struct progress;
diff --git a/daemon.c b/daemon.c
index 8908e7f8d2..db8a31a6ea 100644
--- a/daemon.c
+++ b/daemon.c
@@ -1,10 +1,14 @@
#include "cache.h"
+#include "abspath.h"
#include "alloc.h"
#include "config.h"
+#include "environment.h"
#include "pkt-line.h"
#include "run-command.h"
+#include "setup.h"
#include "strbuf.h"
#include "string-list.h"
+#include "wrapper.h"
#ifdef NO_INITGROUPS
#define initgroups(x, y) (0) /* nothing */
diff --git a/date.c b/date.c
index 6f45eeb356..1fb2cd1b53 100644
--- a/date.c
+++ b/date.c
@@ -6,6 +6,7 @@
#include "cache.h"
#include "date.h"
+#include "gettext.h"
/*
* This is like mktime, but without normalization of tm_wday and tm_yday.
diff --git a/delta-islands.c b/delta-islands.c
index 7a412ccbf6..40f2ccfb55 100644
--- a/delta-islands.c
+++ b/delta-islands.c
@@ -1,9 +1,10 @@
-#include "git-compat-util.h"
+#include "cache.h"
#include "alloc.h"
#include "attr.h"
#include "object.h"
#include "blob.h"
#include "commit.h"
+#include "gettext.h"
#include "hex.h"
#include "tag.h"
#include "tree.h"
diff --git a/diagnose.c b/diagnose.c
index 998f517c48..f1aebf0b50 100644
--- a/diagnose.c
+++ b/diagnose.c
@@ -4,11 +4,13 @@
#include "archive.h"
#include "dir.h"
#include "help.h"
+#include "gettext.h"
#include "hex.h"
#include "strvec.h"
#include "object-store.h"
#include "packfile.h"
#include "parse-options.h"
+#include "write-or-die.h"
struct archive_dir {
const char *path;
diff --git a/diff-lib.c b/diff-lib.c
index 628e13c8b0..4169dd8cb1 100644
--- a/diff-lib.c
+++ b/diff-lib.c
@@ -6,6 +6,7 @@
#include "commit.h"
#include "diff.h"
#include "diffcore.h"
+#include "gettext.h"
#include "hex.h"
#include "revision.h"
#include "cache-tree.h"
diff --git a/diff-no-index.c b/diff-no-index.c
index a3cf358baf..934a24bee5 100644
--- a/diff-no-index.c
+++ b/diff-no-index.c
@@ -5,12 +5,14 @@
*/
#include "cache.h"
+#include "abspath.h"
#include "color.h"
#include "commit.h"
#include "blob.h"
#include "tag.h"
#include "diff.h"
#include "diffcore.h"
+#include "gettext.h"
#include "revision.h"
#include "log-tree.h"
#include "parse-options.h"
diff --git a/diff.c b/diff.c
index b0a810fbee..78b0fdd8ca 100644
--- a/diff.c
+++ b/diff.c
@@ -2,8 +2,11 @@
* Copyright (C) 2005 Junio C Hamano
*/
#include "cache.h"
+#include "abspath.h"
#include "alloc.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "tempfile.h"
#include "quote.h"
#include "diff.h"
@@ -30,7 +33,9 @@
#include "help.h"
#include "promisor-remote.h"
#include "dir.h"
+#include "setup.h"
#include "strmap.h"
+#include "wrapper.h"
#ifdef NO_FAST_WORKING_DIRECTORY
#define FAST_WORKING_DIRECTORY 0
diff --git a/dir.c b/dir.c
index b06a100514..18fd14c46b 100644
--- a/dir.c
+++ b/dir.c
@@ -6,9 +6,12 @@
* Junio Hamano, 2005-2006
*/
#include "git-compat-util.h"
+#include "abspath.h"
#include "alloc.h"
#include "config.h"
#include "dir.h"
+#include "environment.h"
+#include "gettext.h"
#include "object-store.h"
#include "attr.h"
#include "refs.h"
@@ -18,7 +21,9 @@
#include "varint.h"
#include "ewah/ewok.h"
#include "fsmonitor.h"
+#include "setup.h"
#include "submodule-config.h"
+#include "wrapper.h"
/*
* Tells read_directory_recursive how a file or directory should be treated.
diff --git a/editor.c b/editor.c
index 008c04fe2f..d632d79066 100644
--- a/editor.c
+++ b/editor.c
@@ -1,5 +1,8 @@
#include "cache.h"
+#include "abspath.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "strbuf.h"
#include "strvec.h"
#include "run-command.h"
diff --git a/entry.c b/entry.c
index 8c21f98b9e..d89e61fa64 100644
--- a/entry.c
+++ b/entry.c
@@ -2,6 +2,8 @@
#include "blob.h"
#include "object-store.h"
#include "dir.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "streaming.h"
#include "submodule.h"
@@ -9,6 +11,7 @@
#include "fsmonitor.h"
#include "entry.h"
#include "parallel-checkout.h"
+#include "wrapper.h"
static void create_directories(const char *path, int path_len,
const struct checkout *state)
diff --git a/environment.c b/environment.c
index 89d89110e4..63c697e7e9 100644
--- a/environment.c
+++ b/environment.c
@@ -8,8 +8,10 @@
* are.
*/
#include "cache.h"
+#include "abspath.h"
#include "branch.h"
#include "environment.h"
+#include "gettext.h"
#include "repository.h"
#include "config.h"
#include "refs.h"
@@ -20,7 +22,10 @@
#include "replace-object.h"
#include "tmp-objdir.h"
#include "chdir-notify.h"
+#include "setup.h"
#include "shallow.h"
+#include "wrapper.h"
+#include "write-or-die.h"
int trust_executable_bit = 1;
int trust_ctime = 1;
diff --git a/environment.h b/environment.h
index d438b5c8f3..a63f0c6a24 100644
--- a/environment.h
+++ b/environment.h
@@ -3,10 +3,230 @@
#include "strvec.h"
+struct repository;
+
+/*
+ * The character that begins a commented line in user-editable file
+ * that is subject to stripspace.
+ */
+extern char comment_line_char;
+extern int auto_comment_line_char;
+
/*
* Wrapper of getenv() that returns a strdup value. This value is kept
* in argv to be freed later.
*/
const char *getenv_safe(struct strvec *argv, const char *name);
+/* Double-check local_repo_env below if you add to this list. */
+#define GIT_DIR_ENVIRONMENT "GIT_DIR"
+#define GIT_COMMON_DIR_ENVIRONMENT "GIT_COMMON_DIR"
+#define GIT_NAMESPACE_ENVIRONMENT "GIT_NAMESPACE"
+#define GIT_WORK_TREE_ENVIRONMENT "GIT_WORK_TREE"
+#define GIT_PREFIX_ENVIRONMENT "GIT_PREFIX"
+#define DEFAULT_GIT_DIR_ENVIRONMENT ".git"
+#define DB_ENVIRONMENT "GIT_OBJECT_DIRECTORY"
+#define INDEX_ENVIRONMENT "GIT_INDEX_FILE"
+#define GRAFT_ENVIRONMENT "GIT_GRAFT_FILE"
+#define GIT_SHALLOW_FILE_ENVIRONMENT "GIT_SHALLOW_FILE"
+#define TEMPLATE_DIR_ENVIRONMENT "GIT_TEMPLATE_DIR"
+#define CONFIG_ENVIRONMENT "GIT_CONFIG"
+#define CONFIG_DATA_ENVIRONMENT "GIT_CONFIG_PARAMETERS"
+#define CONFIG_COUNT_ENVIRONMENT "GIT_CONFIG_COUNT"
+#define EXEC_PATH_ENVIRONMENT "GIT_EXEC_PATH"
+#define CEILING_DIRECTORIES_ENVIRONMENT "GIT_CEILING_DIRECTORIES"
+#define NO_REPLACE_OBJECTS_ENVIRONMENT "GIT_NO_REPLACE_OBJECTS"
+#define GIT_REPLACE_REF_BASE_ENVIRONMENT "GIT_REPLACE_REF_BASE"
+#define GITATTRIBUTES_FILE ".gitattributes"
+#define INFOATTRIBUTES_FILE "info/attributes"
+#define ATTRIBUTE_MACRO_PREFIX "[attr]"
+#define GITMODULES_FILE ".gitmodules"
+#define GITMODULES_INDEX ":.gitmodules"
+#define GITMODULES_HEAD "HEAD:.gitmodules"
+#define GIT_NOTES_REF_ENVIRONMENT "GIT_NOTES_REF"
+#define GIT_NOTES_DEFAULT_REF "refs/notes/commits"
+#define GIT_NOTES_DISPLAY_REF_ENVIRONMENT "GIT_NOTES_DISPLAY_REF"
+#define GIT_NOTES_REWRITE_REF_ENVIRONMENT "GIT_NOTES_REWRITE_REF"
+#define GIT_NOTES_REWRITE_MODE_ENVIRONMENT "GIT_NOTES_REWRITE_MODE"
+#define GIT_LITERAL_PATHSPECS_ENVIRONMENT "GIT_LITERAL_PATHSPECS"
+#define GIT_GLOB_PATHSPECS_ENVIRONMENT "GIT_GLOB_PATHSPECS"
+#define GIT_NOGLOB_PATHSPECS_ENVIRONMENT "GIT_NOGLOB_PATHSPECS"
+#define GIT_ICASE_PATHSPECS_ENVIRONMENT "GIT_ICASE_PATHSPECS"
+#define GIT_QUARANTINE_ENVIRONMENT "GIT_QUARANTINE_PATH"
+#define GIT_OPTIONAL_LOCKS_ENVIRONMENT "GIT_OPTIONAL_LOCKS"
+#define GIT_TEXT_DOMAIN_DIR_ENVIRONMENT "GIT_TEXTDOMAINDIR"
+
+/*
+ * Environment variable used in handshaking the wire protocol.
+ * Contains a colon ':' separated list of keys with optional values
+ * 'key[=value]'. Presence of unknown keys and values must be
+ * ignored.
+ */
+#define GIT_PROTOCOL_ENVIRONMENT "GIT_PROTOCOL"
+/* HTTP header used to handshake the wire protocol */
+#define GIT_PROTOCOL_HEADER "Git-Protocol"
+
+/*
+ * This environment variable is expected to contain a boolean indicating
+ * whether we should or should not treat:
+ *
+ * GIT_DIR=foo.git git ...
+ *
+ * as if GIT_WORK_TREE=. was given. It's not expected that users will make use
+ * of this, but we use it internally to communicate to sub-processes that we
+ * are in a bare repo. If not set, defaults to true.
+ */
+#define GIT_IMPLICIT_WORK_TREE_ENVIRONMENT "GIT_IMPLICIT_WORK_TREE"
+
+/*
+ * Repository-local GIT_* environment variables; these will be cleared
+ * when git spawns a sub-process that runs inside another repository.
+ * The array is NULL-terminated, which makes it easy to pass in the "env"
+ * parameter of a run-command invocation, or to do a simple walk.
+ */
+extern const char * const local_repo_env[];
+
+void setup_git_env(const char *git_dir);
+
+/*
+ * Returns true iff we have a configured git repository (either via
+ * setup_git_directory, or in the environment via $GIT_DIR).
+ */
+int have_git_dir(void);
+
+extern int is_bare_repository_cfg;
+int is_bare_repository(void);
+extern char *git_work_tree_cfg;
+const char *get_git_dir(void);
+const char *get_git_common_dir(void);
+const char *get_object_directory(void);
+char *get_index_file(void);
+char *get_graft_file(struct repository *r);
+void set_git_dir(const char *path, int make_realpath);
+const char *get_git_namespace(void);
+const char *strip_namespace(const char *namespaced_ref);
+const char *get_git_work_tree(void);
+void set_git_work_tree(const char *tree);
+
+#define ALTERNATE_DB_ENVIRONMENT "GIT_ALTERNATE_OBJECT_DIRECTORIES"
+
+/* Environment bits from configuration mechanism */
+extern int trust_executable_bit;
+extern int trust_ctime;
+extern int check_stat;
+extern int has_symlinks;
+extern int minimum_abbrev, default_abbrev;
+extern int ignore_case;
+extern int assume_unchanged;
+extern int prefer_symlink_refs;
+extern int warn_ambiguous_refs;
+extern int warn_on_object_refname_ambiguity;
+extern char *apply_default_whitespace;
+extern char *apply_default_ignorewhitespace;
+extern const char *git_attributes_file;
+extern const char *git_hooks_path;
+extern int zlib_compression_level;
+extern int pack_compression_level;
+extern size_t packed_git_window_size;
+extern size_t packed_git_limit;
+extern size_t delta_base_cache_limit;
+extern unsigned long big_file_threshold;
+extern unsigned long pack_size_limit_cfg;
+
+/*
+ * Accessors for the core.sharedrepository config which lazy-load the value
+ * from the config (if not already set). The "reset" function can be
+ * used to unset "set" or cached value, meaning that the value will be loaded
+ * fresh from the config file on the next call to get_shared_repository().
+ */
+void set_shared_repository(int value);
+int get_shared_repository(void);
+void reset_shared_repository(void);
+
+extern int core_preload_index;
+extern int precomposed_unicode;
+extern int protect_hfs;
+extern int protect_ntfs;
+
+extern int core_apply_sparse_checkout;
+extern int core_sparse_checkout_cone;
+extern int sparse_expect_files_outside_of_patterns;
+
+/*
+ * Returns the boolean value of $GIT_OPTIONAL_LOCKS (or the default value).
+ */
+int use_optional_locks(void);
+
+enum log_refs_config {
+ LOG_REFS_UNSET = -1,
+ LOG_REFS_NONE = 0,
+ LOG_REFS_NORMAL,
+ LOG_REFS_ALWAYS
+};
+extern enum log_refs_config log_all_ref_updates;
+
+enum rebase_setup_type {
+ AUTOREBASE_NEVER = 0,
+ AUTOREBASE_LOCAL,
+ AUTOREBASE_REMOTE,
+ AUTOREBASE_ALWAYS
+};
+
+enum push_default_type {
+ PUSH_DEFAULT_NOTHING = 0,
+ PUSH_DEFAULT_MATCHING,
+ PUSH_DEFAULT_SIMPLE,
+ PUSH_DEFAULT_UPSTREAM,
+ PUSH_DEFAULT_CURRENT,
+ PUSH_DEFAULT_UNSPECIFIED
+};
+
+extern enum rebase_setup_type autorebase;
+extern enum push_default_type push_default;
+
+enum object_creation_mode {
+ OBJECT_CREATION_USES_HARDLINKS = 0,
+ OBJECT_CREATION_USES_RENAMES = 1
+};
+
+extern enum object_creation_mode object_creation_mode;
+
+extern char *notes_ref_name;
+
+extern int grafts_replace_parents;
+
+extern int repository_format_precious_objects;
+extern int repository_format_worktree_config;
+
+/*
+ * Create a temporary file rooted in the object database directory, or
+ * die on failure. The filename is taken from "pattern", which should have the
+ * usual "XXXXXX" trailer, and the resulting filename is written into the
+ * "template" buffer. Returns the open descriptor.
+ */
+int odb_mkstemp(struct strbuf *temp_filename, const char *pattern);
+
+/*
+ * Create a pack .keep file named "name" (which should generally be the output
+ * of odb_pack_name). Returns a file descriptor opened for writing, or -1 on
+ * error.
+ */
+int odb_pack_keep(const char *name);
+
+const char *get_log_output_encoding(void);
+const char *get_commit_output_encoding(void);
+
+extern const char *git_commit_encoding;
+extern const char *git_log_output_encoding;
+
+extern const char *editor_program;
+extern const char *askpass_program;
+extern const char *excludes_file;
+
+/*
+ * Should we print an ellipsis after an abbreviated SHA-1 value
+ * when doing diff-raw output or indicating a detached HEAD?
+ */
+int print_sha1_ellipsis(void);
+
#endif
diff --git a/exec-cmd.c b/exec-cmd.c
index 0232bbc990..fae0d4b244 100644
--- a/exec-cmd.c
+++ b/exec-cmd.c
@@ -1,5 +1,8 @@
#include "cache.h"
+#include "abspath.h"
+#include "environment.h"
#include "exec-cmd.h"
+#include "gettext.h"
#include "quote.h"
#include "strvec.h"
diff --git a/fetch-pack.c b/fetch-pack.c
index 12675052f9..368f2ed25a 100644
--- a/fetch-pack.c
+++ b/fetch-pack.c
@@ -1,7 +1,9 @@
-#include "git-compat-util.h"
+#include "cache.h"
#include "alloc.h"
#include "repository.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "lockfile.h"
#include "refs.h"
@@ -29,6 +31,7 @@
#include "commit-graph.h"
#include "sigchain.h"
#include "mergesort.h"
+#include "wrapper.h"
static int transfer_unpack_limit = -1;
static int fetch_unpack_limit = -1;
diff --git a/fmt-merge-msg.c b/fmt-merge-msg.c
index 5236b75fab..1886c92ddb 100644
--- a/fmt-merge-msg.c
+++ b/fmt-merge-msg.c
@@ -1,6 +1,7 @@
-#include "git-compat-util.h"
+#include "cache.h"
#include "alloc.h"
#include "config.h"
+#include "environment.h"
#include "refs.h"
#include "object-store.h"
#include "diff.h"
diff --git a/fsck.c b/fsck.c
index adbe8bf59e..8ef1b02234 100644
--- a/fsck.c
+++ b/fsck.c
@@ -1,4 +1,4 @@
-#include "git-compat-util.h"
+#include "cache.h"
#include "alloc.h"
#include "hex.h"
#include "object-store.h"
diff --git a/fsmonitor-ipc.c b/fsmonitor-ipc.c
index 19d772f0f3..866828e299 100644
--- a/fsmonitor-ipc.c
+++ b/fsmonitor-ipc.c
@@ -1,5 +1,6 @@
#include "cache.h"
#include "fsmonitor.h"
+#include "gettext.h"
#include "simple-ipc.h"
#include "fsmonitor-ipc.h"
#include "run-command.h"
diff --git a/fsmonitor.c b/fsmonitor.c
index a5b9e75437..c956a347a2 100644
--- a/fsmonitor.c
+++ b/fsmonitor.c
@@ -1,6 +1,7 @@
#include "cache.h"
#include "config.h"
#include "dir.h"
+#include "environment.h"
#include "ewah/ewok.h"
#include "fsmonitor.h"
#include "fsmonitor-ipc.h"
diff --git a/gettext.c b/gettext.c
index f139008d0a..5f34870830 100644
--- a/gettext.c
+++ b/gettext.c
@@ -2,7 +2,9 @@
* Copyright (c) 2010 Ævar Arnfjörð Bjarmason
*/
-#include "cache.h"
+#include "git-compat-util.h"
+#include "abspath.h"
+#include "environment.h"
#include "exec-cmd.h"
#include "gettext.h"
#include "strbuf.h"
diff --git a/git.c b/git.c
index ae2134f29a..77f920a6f6 100644
--- a/git.c
+++ b/git.c
@@ -1,10 +1,13 @@
#include "builtin.h"
#include "config.h"
+#include "environment.h"
#include "exec-cmd.h"
+#include "gettext.h"
#include "help.h"
#include "run-command.h"
#include "alias.h"
#include "replace-object.h"
+#include "setup.h"
#include "shallow.h"
#define RUN_SETUP (1<<0)
diff --git a/gpg-interface.c b/gpg-interface.c
index 855970bb93..aceeb08336 100644
--- a/gpg-interface.c
+++ b/gpg-interface.c
@@ -1,6 +1,7 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "commit.h"
#include "config.h"
+#include "gettext.h"
#include "run-command.h"
#include "strbuf.h"
#include "dir.h"
@@ -9,6 +10,7 @@
#include "sigchain.h"
#include "tempfile.h"
#include "alias.h"
+#include "wrapper.h"
static int git_gpg_config(const char *, const char *, void *);
@@ -1048,7 +1050,7 @@ static int sign_buffer_ssh(struct strbuf *buffer, struct strbuf *signature,
ssh_signing_key_file = strbuf_detach(&key_file->filename, NULL);
} else {
/* We assume a file */
- ssh_signing_key_file = expand_user_path(signing_key, 1);
+ ssh_signing_key_file = interpolate_path(signing_key, 1);
}
buffer_file = mks_tempfile_t(".git_signing_buffer_tmpXXXXXX");
diff --git a/grep.c b/grep.c
index 25dc2ec788..b86462a12a 100644
--- a/grep.c
+++ b/grep.c
@@ -1,5 +1,6 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "config.h"
+#include "gettext.h"
#include "grep.h"
#include "hex.h"
#include "object-store.h"
diff --git a/http-backend.c b/http-backend.c
index 9cfc6f2541..89aad1b42c 100644
--- a/http-backend.c
+++ b/http-backend.c
@@ -1,6 +1,7 @@
-#include "git-compat-util.h"
+#include "cache.h"
#include "alloc.h"
#include "config.h"
+#include "environment.h"
#include "hex.h"
#include "repository.h"
#include "refs.h"
@@ -16,6 +17,8 @@
#include "object-store.h"
#include "protocol.h"
#include "date.h"
+#include "wrapper.h"
+#include "write-or-die.h"
static const char content_type[] = "Content-Type";
static const char content_length[] = "Content-Length";
diff --git a/http-fetch.c b/http-fetch.c
index 8db35b9767..c874d3402d 100644
--- a/http-fetch.c
+++ b/http-fetch.c
@@ -1,9 +1,11 @@
#include "cache.h"
#include "config.h"
#include "exec-cmd.h"
+#include "gettext.h"
#include "hex.h"
#include "http.h"
#include "walker.h"
+#include "setup.h"
#include "strvec.h"
#include "urlmatch.h"
#include "trace2.h"
diff --git a/http-push.c b/http-push.c
index 0e2646a6c9..88b70f2c44 100644
--- a/http-push.c
+++ b/http-push.c
@@ -1,4 +1,5 @@
#include "cache.h"
+#include "environment.h"
#include "hex.h"
#include "repository.h"
#include "commit.h"
@@ -11,6 +12,7 @@
#include "exec-cmd.h"
#include "remote.h"
#include "list-objects.h"
+#include "setup.h"
#include "sigchain.h"
#include "strvec.h"
#include "packfile.h"
diff --git a/imap-send.c b/imap-send.c
index 93e9018439..a62424e90a 100644
--- a/imap-send.c
+++ b/imap-send.c
@@ -25,8 +25,11 @@
#include "config.h"
#include "credential.h"
#include "exec-cmd.h"
+#include "gettext.h"
#include "run-command.h"
#include "parse-options.h"
+#include "setup.h"
+#include "wrapper.h"
#if defined(NO_OPENSSL) && !defined(HAVE_OPENSSL_CSPRNG)
typedef void *SSL;
#endif
diff --git a/line-log.c b/line-log.c
index 6e7fc4b2e0..10c19daec4 100644
--- a/line-log.c
+++ b/line-log.c
@@ -1,7 +1,6 @@
#include "git-compat-util.h"
#include "alloc.h"
#include "line-range.h"
-#include "cache.h"
#include "hex.h"
#include "tag.h"
#include "blob.h"
@@ -16,6 +15,7 @@
#include "graph.h"
#include "userdiff.h"
#include "line-log.h"
+#include "setup.h"
#include "strvec.h"
#include "bloom.h"
diff --git a/list-objects-filter-options.h b/list-objects-filter-options.h
index 727c986122..f620612586 100644
--- a/list-objects-filter-options.h
+++ b/list-objects-filter-options.h
@@ -1,6 +1,7 @@
#ifndef LIST_OBJECTS_FILTER_OPTIONS_H
#define LIST_OBJECTS_FILTER_OPTIONS_H
+#include "gettext.h"
#include "object.h"
#include "string-list.h"
#include "strbuf.h"
diff --git a/list-objects-filter.c b/list-objects-filter.c
index 5d7b331660..298ca08711 100644
--- a/list-objects-filter.c
+++ b/list-objects-filter.c
@@ -1,6 +1,7 @@
#include "cache.h"
#include "alloc.h"
#include "dir.h"
+#include "gettext.h"
#include "hex.h"
#include "tag.h"
#include "commit.h"
diff --git a/list-objects.c b/list-objects.c
index 6e6e7ce61e..df18d10306 100644
--- a/list-objects.c
+++ b/list-objects.c
@@ -1,6 +1,7 @@
#include "cache.h"
#include "tag.h"
#include "commit.h"
+#include "gettext.h"
#include "hex.h"
#include "tree.h"
#include "blob.h"
diff --git a/ll-merge.c b/ll-merge.c
index 130d26501c..8be38d3bd4 100644
--- a/ll-merge.c
+++ b/ll-merge.c
@@ -11,6 +11,7 @@
#include "run-command.h"
#include "ll-merge.h"
#include "quote.h"
+#include "wrapper.h"
struct ll_merge_driver;
diff --git a/lockfile.c b/lockfile.c
index cc9a4b8428..1d5ed01682 100644
--- a/lockfile.c
+++ b/lockfile.c
@@ -2,7 +2,9 @@
* Copyright (c) 2005, Junio C Hamano
*/
-#include "cache.h"
+#include "git-compat-util.h"
+#include "abspath.h"
+#include "gettext.h"
#include "lockfile.h"
/*
diff --git a/log-tree.c b/log-tree.c
index f65c36e19d..627c711f70 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -2,6 +2,7 @@
#include "commit-reach.h"
#include "config.h"
#include "diff.h"
+#include "environment.h"
#include "hex.h"
#include "object-store.h"
#include "repository.h"
@@ -22,6 +23,7 @@
#include "help.h"
#include "range-diff.h"
#include "strmap.h"
+#include "write-or-die.h"
static struct decoration name_decoration = { "object names" };
static int decoration_loaded;
diff --git a/ls-refs.c b/ls-refs.c
index 8091b0cca8..b9f3e08ec3 100644
--- a/ls-refs.c
+++ b/ls-refs.c
@@ -1,4 +1,6 @@
-#include "cache.h"
+#include "git-compat-util.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "repository.h"
#include "refs.h"
diff --git a/mailmap.c b/mailmap.c
index a302335129..74fd9db448 100644
--- a/mailmap.c
+++ b/mailmap.c
@@ -1,7 +1,9 @@
#include "cache.h"
+#include "environment.h"
#include "string-list.h"
#include "mailmap.h"
#include "object-store.h"
+#include "setup.h"
const char *git_mailmap_file;
const char *git_mailmap_blob;
diff --git a/merge-ort-wrappers.c b/merge-ort-wrappers.c
index 748924a69b..c00dfbab1c 100644
--- a/merge-ort-wrappers.c
+++ b/merge-ort-wrappers.c
@@ -1,4 +1,5 @@
#include "cache.h"
+#include "gettext.h"
#include "merge-ort.h"
#include "merge-ort-wrappers.h"
diff --git a/merge-ort.c b/merge-ort.c
index dace4073a0..5bf64354d1 100644
--- a/merge-ort.c
+++ b/merge-ort.c
@@ -26,6 +26,8 @@
#include "diff.h"
#include "diffcore.h"
#include "dir.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "entry.h"
#include "ll-merge.h"
diff --git a/merge-recursive.c b/merge-recursive.c
index e324472146..ed5534eb57 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -17,6 +17,8 @@
#include "diff.h"
#include "diffcore.h"
#include "dir.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "ll-merge.h"
#include "lockfile.h"
@@ -29,6 +31,7 @@
#include "tag.h"
#include "tree-walk.h"
#include "unpack-trees.h"
+#include "wrapper.h"
#include "xdiff-interface.h"
struct merge_options_internal {
diff --git a/merge.c b/merge.c
index 2c8b845684..da7fa652c2 100644
--- a/merge.c
+++ b/merge.c
@@ -1,6 +1,7 @@
#include "cache.h"
#include "diff.h"
#include "diffcore.h"
+#include "gettext.h"
#include "hex.h"
#include "lockfile.h"
#include "commit.h"
diff --git a/midx.c b/midx.c
index 47989f7ea7..9af3e5de88 100644
--- a/midx.c
+++ b/midx.c
@@ -1,8 +1,10 @@
-#include "git-compat-util.h"
+#include "cache.h"
+#include "abspath.h"
#include "alloc.h"
#include "config.h"
#include "csum-file.h"
#include "dir.h"
+#include "gettext.h"
#include "hex.h"
#include "lockfile.h"
#include "packfile.h"
diff --git a/name-hash.c b/name-hash.c
index cd009c7c8a..2c2861efd1 100644
--- a/name-hash.c
+++ b/name-hash.c
@@ -6,6 +6,8 @@
* Copyright (C) 2008 Linus Torvalds
*/
#include "cache.h"
+#include "environment.h"
+#include "gettext.h"
#include "thread-utils.h"
#include "trace2.h"
#include "sparse-index.h"
diff --git a/negotiator/default.c b/negotiator/default.c
index 658d9dd6b9..f4b78eb47d 100644
--- a/negotiator/default.c
+++ b/negotiator/default.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "default.h"
#include "../commit.h"
#include "../fetch-negotiator.h"
diff --git a/negotiator/skipping.c b/negotiator/skipping.c
index c4de512e6e..c7d6ab39bc 100644
--- a/negotiator/skipping.c
+++ b/negotiator/skipping.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "skipping.h"
#include "../commit.h"
#include "../fetch-negotiator.h"
diff --git a/notes-cache.c b/notes-cache.c
index 1a6e214ea7..fbcdfd0dfe 100644
--- a/notes-cache.c
+++ b/notes-cache.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "notes-cache.h"
#include "object-store.h"
#include "repository.h"
diff --git a/notes-merge.c b/notes-merge.c
index 571ecf15c7..c40107c3aa 100644
--- a/notes-merge.c
+++ b/notes-merge.c
@@ -1,5 +1,6 @@
#include "cache.h"
#include "commit.h"
+#include "gettext.h"
#include "refs.h"
#include "object-store.h"
#include "repository.h"
@@ -14,6 +15,7 @@
#include "strbuf.h"
#include "notes-utils.h"
#include "commit-reach.h"
+#include "wrapper.h"
struct notes_merge_pair {
struct object_id obj, base, local, remote;
diff --git a/notes-utils.c b/notes-utils.c
index 4be0aaa6de..cb88171b7b 100644
--- a/notes-utils.c
+++ b/notes-utils.c
@@ -1,6 +1,8 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "config.h"
#include "commit.h"
+#include "environment.h"
+#include "gettext.h"
#include "refs.h"
#include "notes-utils.h"
#include "repository.h"
diff --git a/notes.c b/notes.c
index d40affc0f2..45fb7f22d1 100644
--- a/notes.c
+++ b/notes.c
@@ -1,5 +1,6 @@
#include "cache.h"
#include "config.h"
+#include "environment.h"
#include "hex.h"
#include "notes.h"
#include "object-store.h"
diff --git a/object-file.c b/object-file.c
index bd9741c7f3..76b22ca75c 100644
--- a/object-file.c
+++ b/object-file.c
@@ -6,9 +6,12 @@
* This handles basic git object files - packing, unpacking,
* creation etc.
*/
-#include "git-compat-util.h"
+#include "cache.h"
+#include "abspath.h"
#include "alloc.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "string-list.h"
#include "lockfile.h"
@@ -34,8 +37,10 @@
#include "packfile.h"
#include "object-store.h"
#include "promisor-remote.h"
+#include "setup.h"
#include "submodule.h"
#include "fsck.h"
+#include "wrapper.h"
/* The maximum size for an object header. */
#define MAX_HEADER_LEN 32
diff --git a/object-name.c b/object-name.c
index 5e11b7fc97..f1edc0035b 100644
--- a/object-name.c
+++ b/object-name.c
@@ -1,5 +1,7 @@
#include "cache.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "tag.h"
#include "commit.h"
@@ -13,6 +15,7 @@
#include "packfile.h"
#include "object-store.h"
#include "repository.h"
+#include "setup.h"
#include "submodule.h"
#include "midx.h"
#include "commit-reach.h"
diff --git a/object.c b/object.c
index 609fed1b73..45c9721b8c 100644
--- a/object.c
+++ b/object.c
@@ -1,4 +1,5 @@
#include "cache.h"
+#include "gettext.h"
#include "hex.h"
#include "object.h"
#include "replace-object.h"
diff --git a/pack-bitmap-write.c b/pack-bitmap-write.c
index a3cafa8e20..7f5f489beb 100644
--- a/pack-bitmap-write.c
+++ b/pack-bitmap-write.c
@@ -1,5 +1,7 @@
-#include "git-compat-util.h"
+#include "cache.h"
#include "alloc.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "object-store.h"
#include "commit.h"
@@ -15,6 +17,7 @@
#include "pack-objects.h"
#include "commit-reach.h"
#include "prio-queue.h"
+#include "trace2.h"
struct bitmapped_commit {
struct commit *commit;
diff --git a/pack-bitmap.c b/pack-bitmap.c
index f8ab6be411..b2e7d06d60 100644
--- a/pack-bitmap.c
+++ b/pack-bitmap.c
@@ -1,6 +1,7 @@
-#include "git-compat-util.h"
+#include "cache.h"
#include "alloc.h"
#include "commit.h"
+#include "gettext.h"
#include "hex.h"
#include "strbuf.h"
#include "tag.h"
diff --git a/pack-check.c b/pack-check.c
index 7ed594d667..6974e40a95 100644
--- a/pack-check.c
+++ b/pack-check.c
@@ -1,4 +1,5 @@
#include "cache.h"
+#include "environment.h"
#include "hex.h"
#include "repository.h"
#include "pack.h"
diff --git a/pack-mtimes.c b/pack-mtimes.c
index 0f9785fc5e..afed632190 100644
--- a/pack-mtimes.c
+++ b/pack-mtimes.c
@@ -1,4 +1,5 @@
-#include "git-compat-util.h"
+#include "cache.h"
+#include "gettext.h"
#include "pack-mtimes.h"
#include "object-store.h"
#include "packfile.h"
diff --git a/pack-revindex.c b/pack-revindex.c
index 08dc160167..03c7e81f9d 100644
--- a/pack-revindex.c
+++ b/pack-revindex.c
@@ -1,4 +1,5 @@
#include "cache.h"
+#include "gettext.h"
#include "pack-revindex.h"
#include "object-store.h"
#include "packfile.h"
diff --git a/pack-write.c b/pack-write.c
index 041e573bc1..f171405495 100644
--- a/pack-write.c
+++ b/pack-write.c
@@ -1,4 +1,6 @@
#include "cache.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "pack.h"
#include "csum-file.h"
diff --git a/pack.h b/pack.h
index 01d385903a..3ab9e3f60c 100644
--- a/pack.h
+++ b/pack.h
@@ -4,6 +4,8 @@
#include "object.h"
#include "csum-file.h"
+struct packed_git;
+struct pack_window;
struct repository;
/*
diff --git a/packfile.c b/packfile.c
index 53fcc0f44c..b120405ccc 100644
--- a/packfile.c
+++ b/packfile.c
@@ -1,5 +1,7 @@
-#include "git-compat-util.h"
+#include "cache.h"
#include "alloc.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "list.h"
#include "pack.h"
@@ -19,6 +21,7 @@
#include "midx.h"
#include "commit-graph.h"
#include "promisor-remote.h"
+#include "wrapper.h"
char *odb_pack_name(struct strbuf *buf,
const unsigned char *hash,
diff --git a/packfile.h b/packfile.h
index 6ec1656797..665603b696 100644
--- a/packfile.h
+++ b/packfile.h
@@ -1,11 +1,13 @@
#ifndef PACKFILE_H
#define PACKFILE_H
-#include "cache.h"
+#include "object.h"
#include "oidset.h"
/* in object-store.h */
struct packed_git;
+struct pack_entry;
+struct pack_window;
struct object_info;
/*
diff --git a/parallel-checkout.c b/parallel-checkout.c
index 2455aa356d..50fd7fe31e 100644
--- a/parallel-checkout.c
+++ b/parallel-checkout.c
@@ -2,6 +2,7 @@
#include "alloc.h"
#include "config.h"
#include "entry.h"
+#include "gettext.h"
#include "hex.h"
#include "parallel-checkout.h"
#include "pkt-line.h"
@@ -11,6 +12,7 @@
#include "streaming.h"
#include "thread-utils.h"
#include "trace2.h"
+#include "wrapper.h"
struct pc_worker {
struct child_process cp;
diff --git a/parse-options-cb.c b/parse-options-cb.c
index c1c46726d3..2488e6c030 100644
--- a/parse-options-cb.c
+++ b/parse-options-cb.c
@@ -4,6 +4,8 @@
#include "cache.h"
#include "commit.h"
#include "color.h"
+#include "environment.h"
+#include "gettext.h"
#include "string-list.h"
#include "strvec.h"
#include "oid-array.h"
diff --git a/parse-options.c b/parse-options.c
index 6dd4c090e0..b6803647d0 100644
--- a/parse-options.c
+++ b/parse-options.c
@@ -1,9 +1,10 @@
#include "git-compat-util.h"
#include "parse-options.h"
-#include "cache.h"
+#include "abspath.h"
#include "config.h"
#include "commit.h"
#include "color.h"
+#include "gettext.h"
#include "utf8.h"
static int disallow_abbreviated_options;
diff --git a/parse-options.h b/parse-options.h
index fcb58c4043..6f6462fdf9 100644
--- a/parse-options.h
+++ b/parse-options.h
@@ -1,6 +1,8 @@
#ifndef PARSE_OPTIONS_H
#define PARSE_OPTIONS_H
+#include "gettext.h"
+
/**
* Refer to Documentation/technical/api-parse-options.txt for the API doc.
*/
diff --git a/patch-ids.c b/patch-ids.c
index a4473a88fa..19af7bee98 100644
--- a/patch-ids.c
+++ b/patch-ids.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "diff.h"
#include "commit.h"
#include "hash-lookup.h"
diff --git a/path.c b/path.c
index 632a051809..dff215ac69 100644
--- a/path.c
+++ b/path.c
@@ -1,13 +1,17 @@
/*
* Utilities for paths and pathnames
*/
-#include "cache.h"
+#include "git-compat-util.h"
+#include "abspath.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "repository.h"
#include "strbuf.h"
#include "string-list.h"
#include "dir.h"
#include "worktree.h"
+#include "setup.h"
#include "submodule-config.h"
#include "path.h"
#include "packfile.h"
diff --git a/path.h b/path.h
index 0a59c85a62..60e83a49a9 100644
--- a/path.h
+++ b/path.h
@@ -3,6 +3,7 @@
struct repository;
struct strbuf;
+struct string_list;
/*
* The result to all functions which return statically allocated memory may be
@@ -179,7 +180,66 @@ const char *git_path_auto_merge(struct repository *r);
const char *git_path_fetch_head(struct repository *r);
const char *git_path_shallow(struct repository *r);
-
int ends_with_path_components(const char *path, const char *components);
+int validate_headref(const char *ref);
+
+int adjust_shared_perm(const char *path);
+
+char *interpolate_path(const char *path, int real_home);
+const char *enter_repo(const char *path, int strict);
+const char *remove_leading_path(const char *in, const char *prefix);
+const char *relative_path(const char *in, const char *prefix, struct strbuf *sb);
+int normalize_path_copy_len(char *dst, const char *src, int *prefix_len);
+int normalize_path_copy(char *dst, const char *src);
+int longest_ancestor_length(const char *path, struct string_list *prefixes);
+char *strip_path_suffix(const char *path, const char *suffix);
+int daemon_avoid_alias(const char *path);
+
+/*
+ * These functions match their is_hfs_dotgit() counterparts; see utf8.h for
+ * details.
+ */
+int is_ntfs_dotgit(const char *name);
+int is_ntfs_dotgitmodules(const char *name);
+int is_ntfs_dotgitignore(const char *name);
+int is_ntfs_dotgitattributes(const char *name);
+int is_ntfs_dotmailmap(const char *name);
+
+/*
+ * Returns true iff "str" could be confused as a command-line option when
+ * passed to a sub-program like "ssh". Note that this has nothing to do with
+ * shell-quoting, which should be handled separately; we're assuming here that
+ * the string makes it verbatim to the sub-program.
+ */
+int looks_like_command_line_option(const char *str);
+
+/**
+ * Return a newly allocated string with the evaluation of
+ * "$XDG_CONFIG_HOME/$subdir/$filename" if $XDG_CONFIG_HOME is non-empty, otherwise
+ * "$HOME/.config/$subdir/$filename". Return NULL upon error.
+ */
+char *xdg_config_home_for(const char *subdir, const char *filename);
+
+/**
+ * Return a newly allocated string with the evaluation of
+ * "$XDG_CONFIG_HOME/git/$filename" if $XDG_CONFIG_HOME is non-empty, otherwise
+ * "$HOME/.config/git/$filename". Return NULL upon error.
+ */
+char *xdg_config_home(const char *filename);
+
+/**
+ * Return a newly allocated string with the evaluation of
+ * "$XDG_CACHE_HOME/git/$filename" if $XDG_CACHE_HOME is non-empty, otherwise
+ * "$HOME/.cache/git/$filename". Return NULL upon error.
+ */
+char *xdg_cache_home(const char *filename);
+
+/*
+ * Create a directory and (if share is nonzero) adjust its permissions
+ * according to the shared_repository setting. Only use this for
+ * directories under $GIT_DIR. Don't use it for working tree
+ * directories.
+ */
+void safe_create_dir(const char *dir, int share);
#endif /* PATH_H */
diff --git a/pathspec.c b/pathspec.c
index ab70fcbe61..6972d515f0 100644
--- a/pathspec.c
+++ b/pathspec.c
@@ -1,8 +1,12 @@
#include "cache.h"
+#include "abspath.h"
#include "config.h"
#include "dir.h"
+#include "environment.h"
+#include "gettext.h"
#include "pathspec.h"
#include "attr.h"
+#include "setup.h"
#include "strvec.h"
#include "quote.h"
diff --git a/pkt-line.c b/pkt-line.c
index 1ea7f8600e..36ae0fea4a 100644
--- a/pkt-line.c
+++ b/pkt-line.c
@@ -1,7 +1,10 @@
#include "cache.h"
#include "pkt-line.h"
+#include "gettext.h"
#include "hex.h"
#include "run-command.h"
+#include "wrapper.h"
+#include "write-or-die.h"
char packet_buffer[LARGE_PACKET_MAX];
static const char *packet_trace_prefix = "git";
diff --git a/preload-index.c b/preload-index.c
index 100f7a374d..52544d004e 100644
--- a/preload-index.c
+++ b/preload-index.c
@@ -4,7 +4,9 @@
#include "cache.h"
#include "pathspec.h"
#include "dir.h"
+#include "environment.h"
#include "fsmonitor.h"
+#include "gettext.h"
#include "config.h"
#include "progress.h"
#include "thread-utils.h"
diff --git a/pretty.c b/pretty.c
index 494932da20..76fc4f61e4 100644
--- a/pretty.c
+++ b/pretty.c
@@ -2,6 +2,8 @@
#include "alloc.h"
#include "config.h"
#include "commit.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "utf8.h"
#include "diff.h"
diff --git a/progress.c b/progress.c
index 9b33a2df32..44c784d75f 100644
--- a/progress.c
+++ b/progress.c
@@ -10,7 +10,6 @@
#define GIT_TEST_PROGRESS_ONLY
#include "cache.h"
-#include "gettext.h"
#include "progress.h"
#include "strbuf.h"
#include "trace.h"
diff --git a/promisor-remote.c b/promisor-remote.c
index 1db566982e..a8dbb788e8 100644
--- a/promisor-remote.c
+++ b/promisor-remote.c
@@ -1,4 +1,5 @@
#include "cache.h"
+#include "gettext.h"
#include "hex.h"
#include "object-store.h"
#include "promisor-remote.h"
diff --git a/prompt.c b/prompt.c
index 50df17279d..3baa33f63d 100644
--- a/prompt.c
+++ b/prompt.c
@@ -1,5 +1,6 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "config.h"
+#include "environment.h"
#include "run-command.h"
#include "strbuf.h"
#include "prompt.h"
diff --git a/protocol.c b/protocol.c
index c53f7df5be..bdb32e1eeb 100644
--- a/protocol.c
+++ b/protocol.c
@@ -1,5 +1,6 @@
#include "cache.h"
#include "config.h"
+#include "environment.h"
#include "protocol.h"
static enum protocol_version parse_protocol_version(const char *value)
diff --git a/prune-packed.c b/prune-packed.c
index d2813f6a40..58412b4fb9 100644
--- a/prune-packed.c
+++ b/prune-packed.c
@@ -1,4 +1,6 @@
#include "git-compat-util.h"
+#include "environment.h"
+#include "gettext.h"
#include "object-store.h"
#include "packfile.h"
#include "progress.h"
diff --git a/range-diff.c b/range-diff.c
index ff5d19f8ad..d1ed3b8ee5 100644
--- a/range-diff.c
+++ b/range-diff.c
@@ -1,4 +1,6 @@
#include "cache.h"
+#include "environment.h"
+#include "gettext.h"
#include "range-diff.h"
#include "string-list.h"
#include "run-command.h"
diff --git a/reachable.c b/reachable.c
index c9dab2a66b..55bb114353 100644
--- a/reachable.c
+++ b/reachable.c
@@ -1,4 +1,5 @@
-#include "cache.h"
+#include "git-compat-util.h"
+#include "gettext.h"
#include "hex.h"
#include "refs.h"
#include "tag.h"
diff --git a/read-cache.c b/read-cache.c
index 27e4f5ccb3..2a49178633 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -18,6 +18,8 @@
#include "tree.h"
#include "commit.h"
#include "blob.h"
+#include "environment.h"
+#include "gettext.h"
#include "resolve-undo.h"
#include "run-command.h"
#include "strbuf.h"
@@ -31,6 +33,7 @@
#include "csum-file.h"
#include "promisor-remote.h"
#include "hook.h"
+#include "wrapper.h"
/* Mask for the name length in ce_flags in the on-disk index */
diff --git a/rebase-interactive.c b/rebase-interactive.c
index c151db0ad2..79ed61b9fa 100644
--- a/rebase-interactive.c
+++ b/rebase-interactive.c
@@ -1,11 +1,14 @@
#include "cache.h"
#include "commit.h"
+#include "environment.h"
+#include "gettext.h"
#include "sequencer.h"
#include "rebase-interactive.h"
#include "strbuf.h"
#include "commit-slab.h"
#include "config.h"
#include "dir.h"
+#include "wrapper.h"
static const char edit_todo_list_advice[] =
N_("You can fix this with 'git rebase --edit-todo' "
diff --git a/ref-filter.c b/ref-filter.c
index 81cc2d1e23..94a148c3e8 100644
--- a/ref-filter.c
+++ b/ref-filter.c
@@ -1,5 +1,7 @@
-#include "git-compat-util.h"
+#include "cache.h"
#include "alloc.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "parse-options.h"
#include "refs.h"
diff --git a/ref-filter.h b/ref-filter.h
index ae51ace3a2..9169d12cb6 100644
--- a/ref-filter.h
+++ b/ref-filter.h
@@ -1,6 +1,7 @@
#ifndef REF_FILTER_H
#define REF_FILTER_H
+#include "gettext.h"
#include "oid-array.h"
#include "refs.h"
#include "commit.h"
diff --git a/reflog.c b/reflog.c
index 510663e1e5..9c09443088 100644
--- a/reflog.c
+++ b/reflog.c
@@ -1,4 +1,5 @@
-#include "cache.h"
+#include "git-compat-util.h"
+#include "gettext.h"
#include "object-store.h"
#include "reflog.h"
#include "refs.h"
diff --git a/refs.c b/refs.c
index 1e1c76d1ec..0f369dbde7 100644
--- a/refs.c
+++ b/refs.c
@@ -2,10 +2,12 @@
* The backend-independent part of the reference module.
*/
-#include "git-compat-util.h"
+#include "cache.h"
#include "alloc.h"
#include "config.h"
+#include "environment.h"
#include "hashmap.h"
+#include "gettext.h"
#include "hex.h"
#include "lockfile.h"
#include "iterator.h"
@@ -20,9 +22,11 @@
#include "worktree.h"
#include "strvec.h"
#include "repository.h"
+#include "setup.h"
#include "sigchain.h"
#include "date.h"
#include "commit.h"
+#include "wrapper.h"
/*
* List of all available backends
diff --git a/refs.h b/refs.h
index 2998244b61..123cfa4424 100644
--- a/refs.h
+++ b/refs.h
@@ -1,7 +1,6 @@
#ifndef REFS_H
#define REFS_H
-#include "cache.h"
#include "commit.h"
struct object_id;
diff --git a/refs/files-backend.c b/refs/files-backend.c
index 31bc5c45ee..e6a6971381 100644
--- a/refs/files-backend.c
+++ b/refs/files-backend.c
@@ -1,5 +1,7 @@
#include "../cache.h"
#include "../config.h"
+#include "../environment.h"
+#include "../gettext.h"
#include "../hex.h"
#include "../refs.h"
#include "refs-internal.h"
@@ -12,7 +14,10 @@
#include "../object.h"
#include "../dir.h"
#include "../chdir-notify.h"
-#include "worktree.h"
+#include "../setup.h"
+#include "../worktree.h"
+#include "../wrapper.h"
+#include "../write-or-die.h"
/*
* This backend uses the following flags in `ref_update::flags` for
diff --git a/refs/iterator.c b/refs/iterator.c
index c9fd0bcaf9..6b680f610e 100644
--- a/refs/iterator.c
+++ b/refs/iterator.c
@@ -3,7 +3,7 @@
* documentation about the design and use of reference iterators.
*/
-#include "cache.h"
+#include "git-compat-util.h"
#include "refs.h"
#include "refs/refs-internal.h"
#include "iterator.h"
diff --git a/refs/packed-backend.c b/refs/packed-backend.c
index b665d0f7d9..1eba1015dd 100644
--- a/refs/packed-backend.c
+++ b/refs/packed-backend.c
@@ -1,6 +1,7 @@
-#include "../git-compat-util.h"
+#include "../cache.h"
#include "../alloc.h"
#include "../config.h"
+#include "../gettext.h"
#include "../hex.h"
#include "../refs.h"
#include "refs-internal.h"
@@ -8,6 +9,7 @@
#include "../iterator.h"
#include "../lockfile.h"
#include "../chdir-notify.h"
+#include "../write-or-die.h"
enum mmap_strategy {
/*
diff --git a/refspec.c b/refspec.c
index 28d90911aa..7b5c305514 100644
--- a/refspec.c
+++ b/refspec.c
@@ -1,5 +1,6 @@
#include "git-compat-util.h"
#include "alloc.h"
+#include "gettext.h"
#include "hex.h"
#include "strvec.h"
#include "refs.h"
diff --git a/remote-curl.c b/remote-curl.c
index bf5a0b186f..db3bc431fc 100644
--- a/remote-curl.c
+++ b/remote-curl.c
@@ -1,6 +1,8 @@
#include "git-compat-util.h"
#include "alloc.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "remote.h"
#include "connect.h"
@@ -16,9 +18,11 @@
#include "credential.h"
#include "oid-array.h"
#include "send-pack.h"
+#include "setup.h"
#include "protocol.h"
#include "quote.h"
#include "transport.h"
+#include "write-or-die.h"
static struct remote *remote;
/* always ends with a trailing slash */
diff --git a/remote.c b/remote.c
index f99122b0d3..3a831cb530 100644
--- a/remote.c
+++ b/remote.c
@@ -1,6 +1,9 @@
-#include "git-compat-util.h"
+#include "cache.h"
+#include "abspath.h"
#include "alloc.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "remote.h"
#include "urlmatch.h"
@@ -12,6 +15,7 @@
#include "revision.h"
#include "dir.h"
#include "tag.h"
+#include "setup.h"
#include "string-list.h"
#include "strvec.h"
#include "commit-reach.h"
diff --git a/replace-object.c b/replace-object.c
index 0cf056c4fb..e98825d585 100644
--- a/replace-object.c
+++ b/replace-object.c
@@ -1,4 +1,5 @@
-#include "cache.h"
+#include "git-compat-util.h"
+#include "gettext.h"
#include "hex.h"
#include "oidmap.h"
#include "object-store.h"
diff --git a/repository.c b/repository.c
index 937fa974b3..f6d9f5db08 100644
--- a/repository.c
+++ b/repository.c
@@ -4,12 +4,14 @@
*/
#define USE_THE_INDEX_VARIABLE
#include "cache.h"
+#include "abspath.h"
#include "repository.h"
#include "object-store.h"
#include "config.h"
#include "object.h"
#include "lockfile.h"
#include "remote.h"
+#include "setup.h"
#include "submodule-config.h"
#include "sparse-index.h"
#include "promisor-remote.h"
diff --git a/rerere.c b/rerere.c
index 0ec546b744..5516e336d0 100644
--- a/rerere.c
+++ b/rerere.c
@@ -1,6 +1,8 @@
#include "git-compat-util.h"
+#include "abspath.h"
#include "alloc.h"
#include "config.h"
+#include "gettext.h"
#include "hex.h"
#include "lockfile.h"
#include "string-list.h"
@@ -14,6 +16,7 @@
#include "object-store.h"
#include "hash-lookup.h"
#include "strmap.h"
+#include "wrapper.h"
#define RESOLVED 0
#define PUNTED 1
diff --git a/rerere.h b/rerere.h
index 876c316321..5d6cb63879 100644
--- a/rerere.h
+++ b/rerere.h
@@ -1,6 +1,7 @@
#ifndef RERERE_H
#define RERERE_H
+#include "gettext.h"
#include "string-list.h"
struct pathspec;
diff --git a/reset.c b/reset.c
index b123480718..ab300923e0 100644
--- a/reset.c
+++ b/reset.c
@@ -1,5 +1,6 @@
#include "git-compat-util.h"
#include "cache-tree.h"
+#include "gettext.h"
#include "hex.h"
#include "lockfile.h"
#include "refs.h"
diff --git a/revision.c b/revision.c
index 5c2681bb4b..106ca1ce6c 100644
--- a/revision.c
+++ b/revision.c
@@ -1,6 +1,8 @@
#include "git-compat-util.h"
#include "alloc.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "object-store.h"
#include "tag.h"
@@ -27,6 +29,7 @@
#include "bisect.h"
#include "packfile.h"
#include "worktree.h"
+#include "setup.h"
#include "strvec.h"
#include "commit-reach.h"
#include "commit-graph.h"
diff --git a/run-command.c b/run-command.c
index ba617655b2..614d48fa9a 100644
--- a/run-command.c
+++ b/run-command.c
@@ -1,6 +1,8 @@
#include "cache.h"
#include "run-command.h"
+#include "environment.h"
#include "exec-cmd.h"
+#include "gettext.h"
#include "sigchain.h"
#include "strvec.h"
#include "thread-utils.h"
diff --git a/scalar.c b/scalar.c
index c7b8c16c8e..de07c37d21 100644
--- a/scalar.c
+++ b/scalar.c
@@ -3,6 +3,7 @@
*/
#include "cache.h"
+#include "abspath.h"
#include "gettext.h"
#include "parse-options.h"
#include "config.h"
@@ -14,6 +15,7 @@
#include "dir.h"
#include "packfile.h"
#include "help.h"
+#include "setup.h"
static void setup_enlistment_directory(int argc, const char **argv,
const char * const *usagestr,
diff --git a/send-pack.c b/send-pack.c
index a3c10898db..f81bbb28d7 100644
--- a/send-pack.c
+++ b/send-pack.c
@@ -1,6 +1,7 @@
#include "git-compat-util.h"
#include "config.h"
#include "commit.h"
+#include "gettext.h"
#include "hex.h"
#include "refs.h"
#include "object-store.h"
@@ -15,9 +16,10 @@
#include "version.h"
#include "oid-array.h"
#include "gpg-interface.h"
-#include "cache.h"
#include "shallow.h"
#include "parse-options.h"
+#include "trace2.h"
+#include "write-or-die.h"
int option_parse_push_signed(const struct option *opt,
const char *arg, int unset)
diff --git a/sequencer.c b/sequencer.c
index 4a693bca3d..6985ca526a 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -1,6 +1,9 @@
#include "cache.h"
+#include "abspath.h"
#include "alloc.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "lockfile.h"
#include "dir.h"
@@ -38,6 +41,7 @@
#include "rebase-interactive.h"
#include "reset.h"
#include "branch.h"
+#include "wrapper.h"
#define GIT_REFLOG_ACTION "GIT_REFLOG_ACTION"
diff --git a/server-info.c b/server-info.c
index 4043689202..355b6e01a5 100644
--- a/server-info.c
+++ b/server-info.c
@@ -1,6 +1,7 @@
-#include "git-compat-util.h"
+#include "cache.h"
#include "alloc.h"
#include "dir.h"
+#include "environment.h"
#include "hex.h"
#include "repository.h"
#include "refs.h"
@@ -10,6 +11,7 @@
#include "packfile.h"
#include "object-store.h"
#include "strbuf.h"
+#include "wrapper.h"
struct update_info_ctx {
FILE *cur_fp;
diff --git a/setup.c b/setup.c
index cefd5f63c4..6c5b85e96c 100644
--- a/setup.c
+++ b/setup.c
@@ -1,7 +1,11 @@
#include "cache.h"
+#include "abspath.h"
+#include "environment.h"
+#include "gettext.h"
#include "repository.h"
#include "config.h"
#include "dir.h"
+#include "setup.h"
#include "string-list.h"
#include "chdir-notify.h"
#include "promisor-remote.h"
diff --git a/setup.h b/setup.h
new file mode 100644
index 0000000000..4c1ca9d0c9
--- /dev/null
+++ b/setup.h
@@ -0,0 +1,168 @@
+#ifndef SETUP_H
+#define SETUP_H
+
+#include "string-list.h"
+
+int is_inside_git_dir(void);
+int is_inside_work_tree(void);
+int get_common_dir_noenv(struct strbuf *sb, const char *gitdir);
+int get_common_dir(struct strbuf *sb, const char *gitdir);
+
+/*
+ * Return true if the given path is a git directory; note that this _just_
+ * looks at the directory itself. If you want to know whether "foo/.git"
+ * is a repository, you must feed that path, not just "foo".
+ */
+int is_git_directory(const char *path);
+
+/*
+ * Return 1 if the given path is the root of a git repository or
+ * submodule, else 0. Will not return 1 for bare repositories with the
+ * exception of creating a bare repository in "foo/.git" and calling
+ * is_git_repository("foo").
+ *
+ * If we run into read errors, we err on the side of saying "yes, it is",
+ * as we usually consider sub-repos precious, and would prefer to err on the
+ * side of not disrupting or deleting them.
+ */
+int is_nonbare_repository_dir(struct strbuf *path);
+
+#define READ_GITFILE_ERR_STAT_FAILED 1
+#define READ_GITFILE_ERR_NOT_A_FILE 2
+#define READ_GITFILE_ERR_OPEN_FAILED 3
+#define READ_GITFILE_ERR_READ_FAILED 4
+#define READ_GITFILE_ERR_INVALID_FORMAT 5
+#define READ_GITFILE_ERR_NO_PATH 6
+#define READ_GITFILE_ERR_NOT_A_REPO 7
+#define READ_GITFILE_ERR_TOO_LARGE 8
+void read_gitfile_error_die(int error_code, const char *path, const char *dir);
+const char *read_gitfile_gently(const char *path, int *return_error_code);
+#define read_gitfile(path) read_gitfile_gently((path), NULL)
+const char *resolve_gitdir_gently(const char *suspect, int *return_error_code);
+#define resolve_gitdir(path) resolve_gitdir_gently((path), NULL)
+
+void setup_work_tree(void);
+/*
+ * Find the commondir and gitdir of the repository that contains the current
+ * working directory, without changing the working directory or other global
+ * state. The result is appended to commondir and gitdir. If the discovered
+ * gitdir does not correspond to a worktree, then 'commondir' and 'gitdir' will
+ * both have the same result appended to the buffer. The return value is
+ * either 0 upon success and non-zero if no repository was found.
+ */
+int discover_git_directory(struct strbuf *commondir,
+ struct strbuf *gitdir);
+const char *setup_git_directory_gently(int *);
+const char *setup_git_directory(void);
+char *prefix_path(const char *prefix, int len, const char *path);
+char *prefix_path_gently(const char *prefix, int len, int *remaining, const char *path);
+
+int check_filename(const char *prefix, const char *name);
+void verify_filename(const char *prefix,
+ const char *name,
+ int diagnose_misspelt_rev);
+void verify_non_filename(const char *prefix, const char *name);
+int path_inside_repo(const char *prefix, const char *path);
+
+void sanitize_stdfds(void);
+int daemonize(void);
+
+/*
+ * GIT_REPO_VERSION is the version we write by default. The
+ * _READ variant is the highest number we know how to
+ * handle.
+ */
+#define GIT_REPO_VERSION 0
+#define GIT_REPO_VERSION_READ 1
+
+/*
+ * You _have_ to initialize a `struct repository_format` using
+ * `= REPOSITORY_FORMAT_INIT` before calling `read_repository_format()`.
+ */
+struct repository_format {
+ int version;
+ int precious_objects;
+ char *partial_clone; /* value of extensions.partialclone */
+ int worktree_config;
+ int is_bare;
+ int hash_algo;
+ int sparse_index;
+ char *work_tree;
+ struct string_list unknown_extensions;
+ struct string_list v1_only_extensions;
+};
+
+/*
+ * Always use this to initialize a `struct repository_format`
+ * to a well-defined, default state before calling
+ * `read_repository()`.
+ */
+#define REPOSITORY_FORMAT_INIT \
+{ \
+ .version = -1, \
+ .is_bare = -1, \
+ .hash_algo = GIT_HASH_SHA1, \
+ .unknown_extensions = STRING_LIST_INIT_DUP, \
+ .v1_only_extensions = STRING_LIST_INIT_DUP, \
+}
+
+/*
+ * Read the repository format characteristics from the config file "path" into
+ * "format" struct. Returns the numeric version. On error, or if no version is
+ * found in the configuration, -1 is returned, format->version is set to -1,
+ * and all other fields in the struct are set to the default configuration
+ * (REPOSITORY_FORMAT_INIT). Always initialize the struct using
+ * REPOSITORY_FORMAT_INIT before calling this function.
+ */
+int read_repository_format(struct repository_format *format, const char *path);
+
+/*
+ * Free the memory held onto by `format`, but not the struct itself.
+ * (No need to use this after `read_repository_format()` fails.)
+ */
+void clear_repository_format(struct repository_format *format);
+
+/*
+ * Verify that the repository described by repository_format is something we
+ * can read. If it is, return 0. Otherwise, return -1, and "err" will describe
+ * any errors encountered.
+ */
+int verify_repository_format(const struct repository_format *format,
+ struct strbuf *err);
+
+/*
+ * Check the repository format version in the path found in get_git_dir(),
+ * and die if it is a version we don't understand. Generally one would
+ * set_git_dir() before calling this, and use it only for "are we in a valid
+ * repo?".
+ *
+ * If successful and fmt is not NULL, fill fmt with data.
+ */
+void check_repository_format(struct repository_format *fmt);
+
+/*
+ * NOTE NOTE NOTE!!
+ *
+ * PERM_UMASK, OLD_PERM_GROUP and OLD_PERM_EVERYBODY enumerations must
+ * not be changed. Old repositories have core.sharedrepository written in
+ * numeric format, and therefore these values are preserved for compatibility
+ * reasons.
+ */
+enum sharedrepo {
+ PERM_UMASK = 0,
+ OLD_PERM_GROUP = 1,
+ OLD_PERM_EVERYBODY = 2,
+ PERM_GROUP = 0660,
+ PERM_EVERYBODY = 0664
+};
+int git_config_perm(const char *var, const char *value);
+
+struct startup_info {
+ int have_repository;
+ const char *prefix;
+ const char *original_cwd;
+};
+extern struct startup_info *startup_info;
+extern const char *tmp_original_cwd;
+
+#endif /* SETUP_H */
diff --git a/shallow.c b/shallow.c
index 4f34861423..b4d726bd59 100644
--- a/shallow.c
+++ b/shallow.c
@@ -1,4 +1,4 @@
-#include "git-compat-util.h"
+#include "cache.h"
#include "alloc.h"
#include "hex.h"
#include "repository.h"
@@ -17,6 +17,7 @@
#include "list-objects.h"
#include "commit-reach.h"
#include "shallow.h"
+#include "wrapper.h"
void set_alternate_shallow_file(struct repository *r, const char *path, int override)
{
diff --git a/sideband.c b/sideband.c
index 85bddfdcd4..0af582858b 100644
--- a/sideband.c
+++ b/sideband.c
@@ -1,9 +1,11 @@
#include "cache.h"
#include "color.h"
#include "config.h"
+#include "gettext.h"
#include "sideband.h"
#include "help.h"
#include "pkt-line.h"
+#include "write-or-die.h"
struct keyword_entry {
/*
diff --git a/sparse-index.c b/sparse-index.c
index 63216b3e57..886054729e 100644
--- a/sparse-index.c
+++ b/sparse-index.c
@@ -1,5 +1,7 @@
#include "cache.h"
#include "alloc.h"
+#include "environment.h"
+#include "gettext.h"
#include "repository.h"
#include "sparse-index.h"
#include "tree.h"
diff --git a/split-index.c b/split-index.c
index 95ecfa5319..c98807c655 100644
--- a/split-index.c
+++ b/split-index.c
@@ -1,5 +1,6 @@
#include "cache.h"
#include "alloc.h"
+#include "gettext.h"
#include "split-index.h"
#include "ewah/ewok.h"
diff --git a/strbuf.c b/strbuf.c
index 1c57ac6574..70a83e7980 100644
--- a/strbuf.c
+++ b/strbuf.c
@@ -1,10 +1,14 @@
-#include "git-compat-util.h"
+#include "cache.h"
+#include "abspath.h"
#include "alloc.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "refs.h"
#include "string-list.h"
#include "utf8.h"
#include "date.h"
+#include "wrapper.h"
int starts_with(const char *str, const char *prefix)
{
diff --git a/streaming.c b/streaming.c
index 27841dc1d9..024fd796b7 100644
--- a/streaming.c
+++ b/streaming.c
@@ -2,11 +2,13 @@
* Copyright (c) 2011, Google Inc.
*/
#include "cache.h"
+#include "environment.h"
#include "streaming.h"
#include "repository.h"
#include "object-store.h"
#include "replace-object.h"
#include "packfile.h"
+#include "wrapper.h"
typedef int (*open_istream_fn)(struct git_istream *,
struct repository *,
diff --git a/streaming.h b/streaming.h
index 5e4e6acfd0..bd27f59e57 100644
--- a/streaming.h
+++ b/streaming.h
@@ -3,10 +3,12 @@
*/
#ifndef STREAMING_H
#define STREAMING_H 1
-#include "cache.h"
+
+#include "object.h"
/* opaque */
struct git_istream;
+struct stream_filter;
struct git_istream *open_istream(struct repository *, const struct object_id *,
enum object_type *, unsigned long *,
diff --git a/submodule-config.c b/submodule-config.c
index d0111e9993..ecf0fcf007 100644
--- a/submodule-config.c
+++ b/submodule-config.c
@@ -1,6 +1,8 @@
#include "cache.h"
#include "alloc.h"
#include "dir.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "repository.h"
#include "config.h"
diff --git a/submodule.c b/submodule.c
index e7c8d8b2c3..94644fac0a 100644
--- a/submodule.c
+++ b/submodule.c
@@ -1,4 +1,5 @@
-#include "git-compat-util.h"
+#include "cache.h"
+#include "abspath.h"
#include "alloc.h"
#include "repository.h"
#include "config.h"
@@ -7,6 +8,8 @@
#include "dir.h"
#include "diff.h"
#include "commit.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "revision.h"
#include "run-command.h"
@@ -23,6 +26,7 @@
#include "parse-options.h"
#include "object-store.h"
#include "commit-reach.h"
+#include "setup.h"
#include "shallow.h"
static int config_update_recurse_submodules = RECURSE_SUBMODULES_OFF;
diff --git a/symlinks.c b/symlinks.c
index c667baa949..27ecc93693 100644
--- a/symlinks.c
+++ b/symlinks.c
@@ -1,4 +1,6 @@
#include "cache.h"
+#include "gettext.h"
+#include "setup.h"
static int threaded_check_leading_path(struct cache_def *cache, const char *name,
int len, int warn_on_lstat_err);
diff --git a/t/helper/test-advise.c b/t/helper/test-advise.c
index cb881139f7..8a3fd0009a 100644
--- a/t/helper/test-advise.c
+++ b/t/helper/test-advise.c
@@ -1,7 +1,7 @@
#include "test-tool.h"
-#include "cache.h"
#include "advice.h"
#include "config.h"
+#include "setup.h"
int cmd__advise_if_enabled(int argc, const char **argv)
{
diff --git a/t/helper/test-bitmap.c b/t/helper/test-bitmap.c
index ff35f5999b..af43ee1cb5 100644
--- a/t/helper/test-bitmap.c
+++ b/t/helper/test-bitmap.c
@@ -1,6 +1,7 @@
#include "test-tool.h"
-#include "cache.h"
+#include "git-compat-util.h"
#include "pack-bitmap.h"
+#include "setup.h"
static int bitmap_list_commits(void)
{
diff --git a/t/helper/test-bloom.c b/t/helper/test-bloom.c
index 127f134a2a..d2b30d644d 100644
--- a/t/helper/test-bloom.c
+++ b/t/helper/test-bloom.c
@@ -1,8 +1,8 @@
-#include "cache.h"
+#include "test-tool.h"
#include "bloom.h"
#include "hex.h"
-#include "test-tool.h"
#include "commit.h"
+#include "setup.h"
static struct bloom_filter_settings settings = DEFAULT_BLOOM_FILTER_SETTINGS;
diff --git a/t/helper/test-bundle-uri.c b/t/helper/test-bundle-uri.c
index b18e760310..475058592d 100644
--- a/t/helper/test-bundle-uri.c
+++ b/t/helper/test-bundle-uri.c
@@ -1,6 +1,7 @@
#include "test-tool.h"
#include "parse-options.h"
#include "bundle-uri.h"
+#include "gettext.h"
#include "strbuf.h"
#include "string-list.h"
#include "transport.h"
diff --git a/t/helper/test-cache-tree.c b/t/helper/test-cache-tree.c
index 615e648e55..cdaf5046f5 100644
--- a/t/helper/test-cache-tree.c
+++ b/t/helper/test-cache-tree.c
@@ -1,10 +1,12 @@
#define USE_THE_INDEX_VARIABLE
#include "test-tool.h"
#include "cache.h"
+#include "gettext.h"
#include "hex.h"
#include "tree.h"
#include "cache-tree.h"
#include "parse-options.h"
+#include "setup.h"
static char const * const test_cache_tree_usage[] = {
N_("test-tool cache-tree <options> (control|prime|update)"),
diff --git a/t/helper/test-config.c b/t/helper/test-config.c
index c7d43afa64..ad78fc1768 100644
--- a/t/helper/test-config.c
+++ b/t/helper/test-config.c
@@ -1,6 +1,6 @@
#include "test-tool.h"
-#include "cache.h"
#include "config.h"
+#include "setup.h"
#include "string-list.h"
/*
diff --git a/t/helper/test-delta.c b/t/helper/test-delta.c
index b15481ea59..e7d134ec25 100644
--- a/t/helper/test-delta.c
+++ b/t/helper/test-delta.c
@@ -11,7 +11,7 @@
#include "test-tool.h"
#include "git-compat-util.h"
#include "delta.h"
-#include "cache.h"
+#include "wrapper.h"
static const char usage_str[] =
"test-tool delta (-d|-p) <from_file> <data_file> <out_file>";
diff --git a/t/helper/test-dump-cache-tree.c b/t/helper/test-dump-cache-tree.c
index ba1c5ce717..2041ca1857 100644
--- a/t/helper/test-dump-cache-tree.c
+++ b/t/helper/test-dump-cache-tree.c
@@ -4,7 +4,7 @@
#include "hex.h"
#include "tree.h"
#include "cache-tree.h"
-
+#include "setup.h"
static void dump_one(struct cache_tree *it, const char *pfx, const char *x)
{
diff --git a/t/helper/test-dump-fsmonitor.c b/t/helper/test-dump-fsmonitor.c
index 3d2fb92ade..7c6f50158b 100644
--- a/t/helper/test-dump-fsmonitor.c
+++ b/t/helper/test-dump-fsmonitor.c
@@ -1,5 +1,6 @@
#include "test-tool.h"
#include "cache.h"
+#include "setup.h"
int cmd__dump_fsmonitor(int ac UNUSED, const char **av UNUSED)
{
diff --git a/t/helper/test-dump-split-index.c b/t/helper/test-dump-split-index.c
index 4fabbdea49..d1badd7112 100644
--- a/t/helper/test-dump-split-index.c
+++ b/t/helper/test-dump-split-index.c
@@ -2,6 +2,7 @@
#include "test-tool.h"
#include "cache.h"
#include "hex.h"
+#include "setup.h"
#include "split-index.h"
#include "ewah/ewok.h"
diff --git a/t/helper/test-dump-untracked-cache.c b/t/helper/test-dump-untracked-cache.c
index bc1ef8d4dc..9225ced534 100644
--- a/t/helper/test-dump-untracked-cache.c
+++ b/t/helper/test-dump-untracked-cache.c
@@ -3,6 +3,7 @@
#include "cache.h"
#include "dir.h"
#include "hex.h"
+#include "setup.h"
static int compare_untracked(const void *a_, const void *b_)
{
diff --git a/t/helper/test-fast-rebase.c b/t/helper/test-fast-rebase.c
index e07448c1a1..fd48e0ee2c 100644
--- a/t/helper/test-fast-rebase.c
+++ b/t/helper/test-fast-rebase.c
@@ -12,15 +12,18 @@
#define USE_THE_INDEX_VARIABLE
#include "test-tool.h"
-
+#include "cache.h"
#include "cache-tree.h"
#include "commit.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "lockfile.h"
#include "merge-ort.h"
#include "refs.h"
#include "revision.h"
#include "sequencer.h"
+#include "setup.h"
#include "strvec.h"
#include "tree.h"
diff --git a/t/helper/test-fsmonitor-client.c b/t/helper/test-fsmonitor-client.c
index 0a1e492e5b..14522b4c47 100644
--- a/t/helper/test-fsmonitor-client.c
+++ b/t/helper/test-fsmonitor-client.c
@@ -7,8 +7,10 @@
#include "cache.h"
#include "parse-options.h"
#include "fsmonitor-ipc.h"
+#include "setup.h"
#include "thread-utils.h"
#include "trace2.h"
+#include "wrapper.h"
#ifndef HAVE_FSMONITOR_DAEMON_BACKEND
int cmd__fsmonitor_client(int argc UNUSED, const char **argv UNUSED)
diff --git a/t/helper/test-hash.c b/t/helper/test-hash.c
index 016248106a..45d829c908 100644
--- a/t/helper/test-hash.c
+++ b/t/helper/test-hash.c
@@ -1,5 +1,4 @@
#include "test-tool.h"
-#include "cache.h"
#include "hex.h"
int cmd_hash_impl(int ac, const char **av, int algo)
diff --git a/t/helper/test-lazy-init-name-hash.c b/t/helper/test-lazy-init-name-hash.c
index ab86c14c8b..06ce3a47cc 100644
--- a/t/helper/test-lazy-init-name-hash.c
+++ b/t/helper/test-lazy-init-name-hash.c
@@ -1,7 +1,9 @@
#define USE_THE_INDEX_VARIABLE
#include "test-tool.h"
#include "cache.h"
+#include "environment.h"
#include "parse-options.h"
+#include "setup.h"
static int single;
static int multi;
diff --git a/t/helper/test-match-trees.c b/t/helper/test-match-trees.c
index 42b20d0cec..508eb7066a 100644
--- a/t/helper/test-match-trees.c
+++ b/t/helper/test-match-trees.c
@@ -1,6 +1,7 @@
#include "test-tool.h"
#include "cache.h"
#include "hex.h"
+#include "setup.h"
#include "tree.h"
int cmd__match_trees(int ac UNUSED, const char **av)
diff --git a/t/helper/test-oid-array.c b/t/helper/test-oid-array.c
index c3a1a00466..30e1947b90 100644
--- a/t/helper/test-oid-array.c
+++ b/t/helper/test-oid-array.c
@@ -2,6 +2,7 @@
#include "cache.h"
#include "hex.h"
#include "oid-array.h"
+#include "setup.h"
static int print_oid(const struct object_id *oid, void *data)
{
diff --git a/t/helper/test-oidmap.c b/t/helper/test-oidmap.c
index 32e694b2a2..a7b7b38df1 100644
--- a/t/helper/test-oidmap.c
+++ b/t/helper/test-oidmap.c
@@ -2,6 +2,7 @@
#include "cache.h"
#include "hex.h"
#include "oidmap.h"
+#include "setup.h"
#include "strbuf.h"
/* key is an oid and value is a name (could be a refname for example) */
diff --git a/t/helper/test-oidtree.c b/t/helper/test-oidtree.c
index 6a18e1bce8..5b98f2f70a 100644
--- a/t/helper/test-oidtree.c
+++ b/t/helper/test-oidtree.c
@@ -2,6 +2,7 @@
#include "cache.h"
#include "hex.h"
#include "oidtree.h"
+#include "setup.h"
static enum cb_next print_oid(const struct object_id *oid, void *data UNUSED)
{
diff --git a/t/helper/test-pack-mtimes.c b/t/helper/test-pack-mtimes.c
index f68b3761b6..0f3fbeec53 100644
--- a/t/helper/test-pack-mtimes.c
+++ b/t/helper/test-pack-mtimes.c
@@ -1,10 +1,10 @@
-#include "git-compat-util.h"
#include "test-tool.h"
#include "hex.h"
#include "strbuf.h"
#include "object-store.h"
#include "packfile.h"
#include "pack-mtimes.h"
+#include "setup.h"
static void dump_mtimes(struct packed_git *p)
{
diff --git a/t/helper/test-parse-pathspec-file.c b/t/helper/test-parse-pathspec-file.c
index 71d2131fba..89ecefd1cd 100644
--- a/t/helper/test-parse-pathspec-file.c
+++ b/t/helper/test-parse-pathspec-file.c
@@ -1,7 +1,6 @@
#include "test-tool.h"
#include "parse-options.h"
#include "pathspec.h"
-#include "gettext.h"
int cmd__parse_pathspec_file(int argc, const char **argv)
{
diff --git a/t/helper/test-partial-clone.c b/t/helper/test-partial-clone.c
index da17fd37eb..362bd64a4c 100644
--- a/t/helper/test-partial-clone.c
+++ b/t/helper/test-partial-clone.c
@@ -1,8 +1,8 @@
-#include "cache.h"
-#include "hex.h"
#include "test-tool.h"
+#include "hex.h"
#include "repository.h"
#include "object-store.h"
+#include "setup.h"
/*
* Prints the size of the object corresponding to the given hash in a specific
diff --git a/t/helper/test-path-utils.c b/t/helper/test-path-utils.c
index f69709d674..4f5ac2fadc 100644
--- a/t/helper/test-path-utils.c
+++ b/t/helper/test-path-utils.c
@@ -1,5 +1,8 @@
#include "test-tool.h"
#include "cache.h"
+#include "abspath.h"
+#include "environment.h"
+#include "setup.h"
#include "string-list.h"
#include "utf8.h"
diff --git a/t/helper/test-pkt-line.c b/t/helper/test-pkt-line.c
index c5e052e537..f4d134a145 100644
--- a/t/helper/test-pkt-line.c
+++ b/t/helper/test-pkt-line.c
@@ -1,6 +1,7 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "test-tool.h"
#include "pkt-line.h"
+#include "write-or-die.h"
static void pack_line(const char *line)
{
diff --git a/t/helper/test-proc-receive.c b/t/helper/test-proc-receive.c
index 7e12d4f9aa..f30022d222 100644
--- a/t/helper/test-proc-receive.c
+++ b/t/helper/test-proc-receive.c
@@ -1,10 +1,10 @@
-#include "cache.h"
+#include "test-tool.h"
#include "connect.h"
#include "hex.h"
#include "parse-options.h"
#include "pkt-line.h"
+#include "setup.h"
#include "sigchain.h"
-#include "test-tool.h"
static const char *proc_receive_usage[] = {
"test-tool proc-receive [<options>]",
diff --git a/t/helper/test-progress.c b/t/helper/test-progress.c
index 6cc9735b60..66acb6a06c 100644
--- a/t/helper/test-progress.c
+++ b/t/helper/test-progress.c
@@ -19,7 +19,6 @@
*/
#define GIT_TEST_PROGRESS_ONLY
#include "test-tool.h"
-#include "gettext.h"
#include "parse-options.h"
#include "progress.h"
#include "strbuf.h"
diff --git a/t/helper/test-reach.c b/t/helper/test-reach.c
index d08c3ffa3b..b0deaa106a 100644
--- a/t/helper/test-reach.c
+++ b/t/helper/test-reach.c
@@ -1,11 +1,14 @@
#include "test-tool.h"
+#include "cache.h"
#include "alloc.h"
#include "commit.h"
#include "commit-reach.h"
#include "config.h"
+#include "gettext.h"
#include "hex.h"
#include "parse-options.h"
#include "ref-filter.h"
+#include "setup.h"
#include "string-list.h"
#include "tag.h"
diff --git a/t/helper/test-read-cache.c b/t/helper/test-read-cache.c
index 23e9e27109..a4c24d0e42 100644
--- a/t/helper/test-read-cache.c
+++ b/t/helper/test-read-cache.c
@@ -2,6 +2,8 @@
#include "test-tool.h"
#include "cache.h"
#include "config.h"
+#include "setup.h"
+#include "wrapper.h"
int cmd__read_cache(int argc, const char **argv)
{
diff --git a/t/helper/test-read-graph.c b/t/helper/test-read-graph.c
index f92aea9d1f..3ac496e27e 100644
--- a/t/helper/test-read-graph.c
+++ b/t/helper/test-read-graph.c
@@ -1,9 +1,9 @@
#include "test-tool.h"
-#include "cache.h"
#include "commit-graph.h"
#include "repository.h"
#include "object-store.h"
#include "bloom.h"
+#include "setup.h"
int cmd__read_graph(int argc UNUSED, const char **argv UNUSED)
{
diff --git a/t/helper/test-read-midx.c b/t/helper/test-read-midx.c
index 0a883cdf26..05c4f2b262 100644
--- a/t/helper/test-read-midx.c
+++ b/t/helper/test-read-midx.c
@@ -5,6 +5,7 @@
#include "repository.h"
#include "object-store.h"
#include "pack-bitmap.h"
+#include "setup.h"
static int read_midx_file(const char *object_dir, int show_objects)
{
diff --git a/t/helper/test-ref-store.c b/t/helper/test-ref-store.c
index 31c79a777a..6d8f844e9c 100644
--- a/t/helper/test-ref-store.c
+++ b/t/helper/test-ref-store.c
@@ -1,7 +1,7 @@
#include "test-tool.h"
-#include "cache.h"
#include "hex.h"
#include "refs.h"
+#include "setup.h"
#include "worktree.h"
#include "object-store.h"
#include "repository.h"
diff --git a/t/helper/test-repository.c b/t/helper/test-repository.c
index 10a6dfc216..bafd2a5bf9 100644
--- a/t/helper/test-repository.c
+++ b/t/helper/test-repository.c
@@ -1,12 +1,13 @@
#include "test-tool.h"
-#include "cache.h"
#include "commit-graph.h"
#include "commit.h"
#include "config.h"
+#include "environment.h"
#include "hex.h"
#include "object-store.h"
#include "object.h"
#include "repository.h"
+#include "setup.h"
#include "tree.h"
static void test_parse_commit_in_graph(const char *gitdir, const char *worktree,
diff --git a/t/helper/test-revision-walking.c b/t/helper/test-revision-walking.c
index c7b22cb33d..0c62b9de18 100644
--- a/t/helper/test-revision-walking.c
+++ b/t/helper/test-revision-walking.c
@@ -9,10 +9,10 @@
*/
#include "test-tool.h"
-#include "cache.h"
#include "commit.h"
#include "diff.h"
#include "revision.h"
+#include "setup.h"
static void print_commit(struct commit *commit)
{
diff --git a/t/helper/test-run-command.c b/t/helper/test-run-command.c
index b0d041ec5f..c0ed8722c8 100644
--- a/t/helper/test-run-command.c
+++ b/t/helper/test-run-command.c
@@ -16,7 +16,6 @@
#include "string-list.h"
#include "thread-utils.h"
#include "wildmatch.h"
-#include "gettext.h"
static int number_callbacks;
static int parallel_next(struct child_process *cp,
diff --git a/t/helper/test-scrap-cache-tree.c b/t/helper/test-scrap-cache-tree.c
index 8a42c475b3..3fecd06d17 100644
--- a/t/helper/test-scrap-cache-tree.c
+++ b/t/helper/test-scrap-cache-tree.c
@@ -2,6 +2,7 @@
#include "test-tool.h"
#include "cache.h"
#include "lockfile.h"
+#include "setup.h"
#include "tree.h"
#include "cache-tree.h"
diff --git a/t/helper/test-serve-v2.c b/t/helper/test-serve-v2.c
index 824e5c0a95..054cbcf5d8 100644
--- a/t/helper/test-serve-v2.c
+++ b/t/helper/test-serve-v2.c
@@ -1,7 +1,8 @@
#include "test-tool.h"
-#include "cache.h"
+#include "gettext.h"
#include "parse-options.h"
#include "serve.h"
+#include "setup.h"
static char const * const serve_usage[] = {
N_("test-tool serve-v2 [<options>]"),
diff --git a/t/helper/test-submodule-config.c b/t/helper/test-submodule-config.c
index f1b56ab2fa..40a6ee45af 100644
--- a/t/helper/test-submodule-config.c
+++ b/t/helper/test-submodule-config.c
@@ -1,6 +1,7 @@
#include "test-tool.h"
#include "cache.h"
#include "config.h"
+#include "setup.h"
#include "submodule-config.h"
#include "submodule.h"
diff --git a/t/helper/test-submodule-nested-repo-config.c b/t/helper/test-submodule-nested-repo-config.c
index a3848a8b66..d31f5e48ab 100644
--- a/t/helper/test-submodule-nested-repo-config.c
+++ b/t/helper/test-submodule-nested-repo-config.c
@@ -1,5 +1,5 @@
#include "test-tool.h"
-#include "cache.h"
+#include "setup.h"
#include "submodule-config.h"
static void die_usage(const char **argv, const char *msg)
diff --git a/t/helper/test-submodule.c b/t/helper/test-submodule.c
index 3b75358723..7cbd59922a 100644
--- a/t/helper/test-submodule.c
+++ b/t/helper/test-submodule.c
@@ -1,8 +1,8 @@
#include "test-tool.h"
#include "test-tool-utils.h"
-#include "cache.h"
#include "parse-options.h"
#include "remote.h"
+#include "setup.h"
#include "submodule-config.h"
#include "submodule.h"
diff --git a/t/helper/test-subprocess.c b/t/helper/test-subprocess.c
index ff22f2fa2c..c344f1694d 100644
--- a/t/helper/test-subprocess.c
+++ b/t/helper/test-subprocess.c
@@ -1,6 +1,6 @@
#include "test-tool.h"
-#include "cache.h"
#include "run-command.h"
+#include "setup.h"
int cmd__subprocess(int argc, const char **argv)
{
diff --git a/t/helper/test-trace2.c b/t/helper/test-trace2.c
index 688c8d017d..98f071452a 100644
--- a/t/helper/test-trace2.c
+++ b/t/helper/test-trace2.c
@@ -1,9 +1,9 @@
#include "test-tool.h"
-#include "cache.h"
#include "strvec.h"
#include "run-command.h"
#include "exec-cmd.h"
#include "config.h"
+#include "trace2.h"
typedef int(fn_unit_test)(int argc, const char **argv);
diff --git a/t/helper/test-userdiff.c b/t/helper/test-userdiff.c
index a2b56b9cae..680124a676 100644
--- a/t/helper/test-userdiff.c
+++ b/t/helper/test-userdiff.c
@@ -1,5 +1,5 @@
#include "test-tool.h"
-#include "cache.h"
+#include "setup.h"
#include "userdiff.h"
#include "config.h"
diff --git a/t/helper/test-write-cache.c b/t/helper/test-write-cache.c
index 7d45cd61e8..a93417ed3a 100644
--- a/t/helper/test-write-cache.c
+++ b/t/helper/test-write-cache.c
@@ -2,6 +2,7 @@
#include "test-tool.h"
#include "cache.h"
#include "lockfile.h"
+#include "setup.h"
int cmd__write_cache(int argc, const char **argv)
{
diff --git a/tag.c b/tag.c
index 911cd3178c..01ed67d6fa 100644
--- a/tag.c
+++ b/tag.c
@@ -1,4 +1,5 @@
#include "cache.h"
+#include "environment.h"
#include "tag.h"
#include "object-store.h"
#include "commit.h"
@@ -8,6 +9,7 @@
#include "gpg-interface.h"
#include "hex.h"
#include "packfile.h"
+#include "wrapper.h"
const char *tag_type = "tag";
diff --git a/tempfile.c b/tempfile.c
index e27048f970..50c377134c 100644
--- a/tempfile.c
+++ b/tempfile.c
@@ -42,9 +42,11 @@
* file created by its parent.
*/
-#include "cache.h"
+#include "git-compat-util.h"
+#include "path.h"
#include "tempfile.h"
#include "sigchain.h"
+#include "wrapper.h"
static VOLATILE_LIST_HEAD(tempfile_list);
diff --git a/tmp-objdir.c b/tmp-objdir.c
index 2a2012eb6d..5adad1925d 100644
--- a/tmp-objdir.c
+++ b/tmp-objdir.c
@@ -1,7 +1,9 @@
#include "cache.h"
#include "tmp-objdir.h"
+#include "abspath.h"
#include "chdir-notify.h"
#include "dir.h"
+#include "environment.h"
#include "sigchain.h"
#include "string-list.h"
#include "strbuf.h"
diff --git a/trace.c b/trace.c
index efa4e2d8e0..81318a2455 100644
--- a/trace.c
+++ b/trace.c
@@ -22,7 +22,11 @@
*/
#include "cache.h"
+#include "abspath.h"
+#include "environment.h"
#include "quote.h"
+#include "setup.h"
+#include "wrapper.h"
struct trace_key trace_default_key = { "GIT_TRACE", 0, 0, 0 };
struct trace_key trace_perf_key = TRACE_KEY_INIT(PERFORMANCE);
diff --git a/trace2/tr2_cfg.c b/trace2/tr2_cfg.c
index ec9ac1a6ef..78cfc15d52 100644
--- a/trace2/tr2_cfg.c
+++ b/trace2/tr2_cfg.c
@@ -1,5 +1,7 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "config.h"
+#include "strbuf.h"
+#include "trace2.h"
#include "trace2/tr2_cfg.h"
#include "trace2/tr2_sysenv.h"
diff --git a/trace2/tr2_cmd_name.c b/trace2/tr2_cmd_name.c
index dd313204f5..b7b5a869b7 100644
--- a/trace2/tr2_cmd_name.c
+++ b/trace2/tr2_cmd_name.c
@@ -1,4 +1,5 @@
-#include "cache.h"
+#include "git-compat-util.h"
+#include "strbuf.h"
#include "trace2/tr2_cmd_name.h"
#define TR2_ENVVAR_PARENT_NAME "GIT_TRACE2_PARENT_NAME"
diff --git a/trace2/tr2_dst.c b/trace2/tr2_dst.c
index 8a21dd2972..5be892cd5c 100644
--- a/trace2/tr2_dst.c
+++ b/trace2/tr2_dst.c
@@ -1,5 +1,7 @@
-#include "cache.h"
+#include "git-compat-util.h"
+#include "abspath.h"
#include "sigchain.h"
+#include "strbuf.h"
#include "trace2/tr2_dst.h"
#include "trace2/tr2_sid.h"
#include "trace2/tr2_sysenv.h"
diff --git a/trace2/tr2_sid.c b/trace2/tr2_sid.c
index 5f1ce6f85c..09c4ef0d17 100644
--- a/trace2/tr2_sid.c
+++ b/trace2/tr2_sid.c
@@ -1,5 +1,6 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "hex.h"
+#include "strbuf.h"
#include "trace2/tr2_tbuf.h"
#include "trace2/tr2_sid.h"
diff --git a/trailer.c b/trailer.c
index 72c3fed5c6..a2c3ed6f28 100644
--- a/trailer.c
+++ b/trailer.c
@@ -1,6 +1,8 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "alloc.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "string-list.h"
#include "run-command.h"
#include "commit.h"
diff --git a/transport-helper.c b/transport-helper.c
index 1939763ab5..76d146ee88 100644
--- a/transport-helper.c
+++ b/transport-helper.c
@@ -4,6 +4,8 @@
#include "run-command.h"
#include "commit.h"
#include "diff.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "revision.h"
#include "remote.h"
@@ -15,6 +17,7 @@
#include "refspec.h"
#include "transport-internal.h"
#include "protocol.h"
+#include "wrapper.h"
static int debug;
diff --git a/transport.c b/transport.c
index 8f36ee3f00..89a220425e 100644
--- a/transport.c
+++ b/transport.c
@@ -1,6 +1,7 @@
-#include "git-compat-util.h"
+#include "cache.h"
#include "alloc.h"
#include "config.h"
+#include "environment.h"
#include "hex.h"
#include "transport.h"
#include "hook.h"
@@ -26,6 +27,7 @@
#include "object-store.h"
#include "color.h"
#include "bundle-uri.h"
+#include "wrapper.h"
static int transport_use_color = -1;
static char transport_colors[][COLOR_MAXLEN] = {
diff --git a/transport.h b/transport.h
index 85150f504f..6393cd9823 100644
--- a/transport.h
+++ b/transport.h
@@ -1,7 +1,6 @@
#ifndef TRANSPORT_H
#define TRANSPORT_H
-#include "cache.h"
#include "run-command.h"
#include "remote.h"
#include "list-objects-filter-options.h"
diff --git a/tree-walk.c b/tree-walk.c
index 0e2f5ceb71..38b6556478 100644
--- a/tree-walk.c
+++ b/tree-walk.c
@@ -2,6 +2,7 @@
#include "tree-walk.h"
#include "alloc.h"
#include "dir.h"
+#include "gettext.h"
#include "hex.h"
#include "object-store.h"
#include "tree.h"
diff --git a/unpack-trees.c b/unpack-trees.c
index 0e7ae852ff..3ded68ecb6 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -3,6 +3,8 @@
#include "repository.h"
#include "config.h"
#include "dir.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "tree.h"
#include "tree-walk.h"
@@ -20,6 +22,7 @@
#include "promisor-remote.h"
#include "entry.h"
#include "parallel-checkout.h"
+#include "setup.h"
/*
* Error messages expected by scripts out of plumbing commands such as
diff --git a/upload-pack.c b/upload-pack.c
index 54be6a6191..e23f16dfdd 100644
--- a/upload-pack.c
+++ b/upload-pack.c
@@ -1,5 +1,7 @@
#include "cache.h"
#include "config.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "refs.h"
#include "pkt-line.h"
@@ -28,6 +30,7 @@
#include "commit-graph.h"
#include "commit-reach.h"
#include "shallow.h"
+#include "write-or-die.h"
/* Remember to update object flag allocation in object.h */
#define THEY_HAVE (1u << 11)
diff --git a/usage.c b/usage.c
index 5a7c6c346c..46d99f8bd4 100644
--- a/usage.c
+++ b/usage.c
@@ -4,7 +4,9 @@
* Copyright (C) Linus Torvalds, 2005
*/
#include "git-compat-util.h"
-#include "cache.h"
+#include "gettext.h"
+#include "trace2.h"
+#include "wrapper.h"
static void vreportf(const char *prefix, const char *err, va_list params)
{
diff --git a/walker.c b/walker.c
index e86f85e528..cfbd257fdb 100644
--- a/walker.c
+++ b/walker.c
@@ -1,4 +1,5 @@
#include "cache.h"
+#include "gettext.h"
#include "hex.h"
#include "walker.h"
#include "repository.h"
diff --git a/worktree.c b/worktree.c
index e10594ef33..b5ee71c5eb 100644
--- a/worktree.c
+++ b/worktree.c
@@ -1,12 +1,17 @@
#include "git-compat-util.h"
+#include "abspath.h"
#include "alloc.h"
+#include "environment.h"
+#include "gettext.h"
#include "repository.h"
#include "refs.h"
+#include "setup.h"
#include "strbuf.h"
#include "worktree.h"
#include "dir.h"
#include "wt-status.h"
#include "config.h"
+#include "wrapper.h"
void free_worktrees(struct worktree **worktrees)
{
diff --git a/wrapper.c b/wrapper.c
index 299d6489a6..ee83757590 100644
--- a/wrapper.c
+++ b/wrapper.c
@@ -2,7 +2,10 @@
* Various trivial helper wrappers around standard functions
*/
#include "cache.h"
+#include "abspath.h"
#include "config.h"
+#include "gettext.h"
+#include "wrapper.h"
static intmax_t count_fsync_writeout_only;
static intmax_t count_fsync_hardware_flush;
diff --git a/wrapper.h b/wrapper.h
new file mode 100644
index 0000000000..f0c7d0616d
--- /dev/null
+++ b/wrapper.h
@@ -0,0 +1,36 @@
+#ifndef WRAPPER_H
+#define WRAPPER_H
+
+/* set default permissions by passing mode arguments to open(2) */
+int git_mkstemps_mode(char *pattern, int suffix_len, int mode);
+int git_mkstemp_mode(char *pattern, int mode);
+
+ssize_t read_in_full(int fd, void *buf, size_t count);
+ssize_t write_in_full(int fd, const void *buf, size_t count);
+ssize_t pread_in_full(int fd, void *buf, size_t count, off_t offset);
+
+static inline ssize_t write_str_in_full(int fd, const char *str)
+{
+ return write_in_full(fd, str, strlen(str));
+}
+
+/**
+ * Open (and truncate) the file at path, write the contents of buf to it,
+ * and close it. Dies if any errors are encountered.
+ */
+void write_file_buf(const char *path, const char *buf, size_t len);
+
+/**
+ * Like write_file_buf(), but format the contents into a buffer first.
+ * Additionally, write_file() will append a newline if one is not already
+ * present, making it convenient to write text files:
+ *
+ * write_file(path, "counter: %d", ctr);
+ */
+__attribute__((format (printf, 2, 3)))
+void write_file(const char *path, const char *fmt, ...);
+
+/* Return 1 if the file is empty or does not exists, 0 otherwise. */
+int is_empty_or_missing_file(const char *filename);
+
+#endif /* WRAPPER_H */
diff --git a/write-or-die.c b/write-or-die.c
index aaa0318e82..cc9e0787a1 100644
--- a/write-or-die.c
+++ b/write-or-die.c
@@ -1,6 +1,8 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "config.h"
#include "run-command.h"
+#include "wrapper.h"
+#include "write-or-die.h"
/*
* Some cases use stdio, but want to flush after the write
diff --git a/write-or-die.h b/write-or-die.h
new file mode 100644
index 0000000000..65a5c42a47
--- /dev/null
+++ b/write-or-die.h
@@ -0,0 +1,78 @@
+#ifndef WRITE_OR_DIE_H
+#define WRITE_OR_DIE_H
+
+void maybe_flush_or_die(FILE *, const char *);
+__attribute__((format (printf, 2, 3)))
+void fprintf_or_die(FILE *, const char *fmt, ...);
+void fwrite_or_die(FILE *f, const void *buf, size_t count);
+void fflush_or_die(FILE *f);
+void write_or_die(int fd, const void *buf, size_t count);
+
+/*
+ * These values are used to help identify parts of a repository to fsync.
+ * FSYNC_COMPONENT_NONE identifies data that will not be a persistent part of the
+ * repository and so shouldn't be fsynced.
+ */
+enum fsync_component {
+ FSYNC_COMPONENT_NONE,
+ FSYNC_COMPONENT_LOOSE_OBJECT = 1 << 0,
+ FSYNC_COMPONENT_PACK = 1 << 1,
+ FSYNC_COMPONENT_PACK_METADATA = 1 << 2,
+ FSYNC_COMPONENT_COMMIT_GRAPH = 1 << 3,
+ FSYNC_COMPONENT_INDEX = 1 << 4,
+ FSYNC_COMPONENT_REFERENCE = 1 << 5,
+};
+
+#define FSYNC_COMPONENTS_OBJECTS (FSYNC_COMPONENT_LOOSE_OBJECT | \
+ FSYNC_COMPONENT_PACK)
+
+#define FSYNC_COMPONENTS_DERIVED_METADATA (FSYNC_COMPONENT_PACK_METADATA | \
+ FSYNC_COMPONENT_COMMIT_GRAPH)
+
+#define FSYNC_COMPONENTS_DEFAULT ((FSYNC_COMPONENTS_OBJECTS | \
+ FSYNC_COMPONENTS_DERIVED_METADATA) & \
+ ~FSYNC_COMPONENT_LOOSE_OBJECT)
+
+#define FSYNC_COMPONENTS_COMMITTED (FSYNC_COMPONENTS_OBJECTS | \
+ FSYNC_COMPONENT_REFERENCE)
+
+#define FSYNC_COMPONENTS_ADDED (FSYNC_COMPONENTS_COMMITTED | \
+ FSYNC_COMPONENT_INDEX)
+
+#define FSYNC_COMPONENTS_ALL (FSYNC_COMPONENT_LOOSE_OBJECT | \
+ FSYNC_COMPONENT_PACK | \
+ FSYNC_COMPONENT_PACK_METADATA | \
+ FSYNC_COMPONENT_COMMIT_GRAPH | \
+ FSYNC_COMPONENT_INDEX | \
+ FSYNC_COMPONENT_REFERENCE)
+
+#ifndef FSYNC_COMPONENTS_PLATFORM_DEFAULT
+#define FSYNC_COMPONENTS_PLATFORM_DEFAULT FSYNC_COMPONENTS_DEFAULT
+#endif
+
+/* IO helper functions */
+void fsync_or_die(int fd, const char *);
+int fsync_component(enum fsync_component component, int fd);
+void fsync_component_or_die(enum fsync_component component, int fd, const char *msg);
+
+/*
+ * A bitmask indicating which components of the repo should be fsynced.
+ */
+extern enum fsync_component fsync_components;
+extern int fsync_object_files;
+extern int use_fsync;
+
+enum fsync_method {
+ FSYNC_METHOD_FSYNC,
+ FSYNC_METHOD_WRITEOUT_ONLY,
+ FSYNC_METHOD_BATCH,
+};
+
+extern enum fsync_method fsync_method;
+
+static inline int batch_fsync_enabled(enum fsync_component component)
+{
+ return (fsync_components & component) && (fsync_method == FSYNC_METHOD_BATCH);
+}
+
+#endif /* WRITE_OR_DIE_H */
diff --git a/wt-status.c b/wt-status.c
index 151b94aa36..4bef09de1c 100644
--- a/wt-status.c
+++ b/wt-status.c
@@ -4,6 +4,8 @@
#include "dir.h"
#include "commit.h"
#include "diff.h"
+#include "environment.h"
+#include "gettext.h"
#include "hex.h"
#include "revision.h"
#include "diffcore.h"
@@ -14,6 +16,7 @@
#include "refs.h"
#include "submodule.h"
#include "column.h"
+#include "setup.h"
#include "strbuf.h"
#include "utf8.h"
#include "worktree.h"
diff --git a/xdiff-interface.c b/xdiff-interface.c
index 0617fadbfb..0460e03f5e 100644
--- a/xdiff-interface.c
+++ b/xdiff-interface.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "config.h"
#include "hex.h"
#include "object-store.h"