summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--add-patch.c3
-rw-r--r--apply.c2
-rw-r--r--archive-tar.c1
-rw-r--r--archive-zip.c1
-rw-r--r--archive.c1
-rw-r--r--archive.h3
-rw-r--r--bisect.c3
-rw-r--r--blame.c2
-rw-r--r--branch.c3
-rw-r--r--builtin/add.c2
-rw-r--r--builtin/am.c4
-rw-r--r--builtin/bisect.c2
-rw-r--r--builtin/blame.c2
-rw-r--r--builtin/branch.c2
-rw-r--r--builtin/bugreport.c2
-rw-r--r--builtin/cat-file.c3
-rw-r--r--builtin/check-attr.c1
-rw-r--r--builtin/checkout.c3
-rw-r--r--builtin/clone.c3
-rw-r--r--builtin/commit-graph.c1
-rw-r--r--builtin/commit-tree.c1
-rw-r--r--builtin/commit.c3
-rw-r--r--builtin/config.c1
-rw-r--r--builtin/credential-cache--daemon.c1
-rw-r--r--builtin/describe.c1
-rw-r--r--builtin/diagnose.c1
-rw-r--r--builtin/difftool.c1
-rw-r--r--builtin/fast-export.c1
-rw-r--r--builtin/fast-import.c2
-rw-r--r--builtin/fetch-pack.c1
-rw-r--r--builtin/fetch.c6
-rw-r--r--builtin/fsck.c2
-rw-r--r--builtin/fsmonitor--daemon.c1
-rw-r--r--builtin/gc.c2
-rw-r--r--builtin/grep.c3
-rw-r--r--builtin/hash-object.c1
-rw-r--r--builtin/help.c1
-rw-r--r--builtin/index-pack.c3
-rw-r--r--builtin/init-db.c1
-rw-r--r--builtin/log.c4
-rw-r--r--builtin/ls-files.c2
-rw-r--r--builtin/ls-tree.c1
-rw-r--r--builtin/merge-base.c1
-rw-r--r--builtin/merge-recursive.c2
-rw-r--r--builtin/merge-tree.c1
-rw-r--r--builtin/merge.c3
-rw-r--r--builtin/mktag.c1
-rw-r--r--builtin/mv.c2
-rw-r--r--builtin/name-rev.c2
-rw-r--r--builtin/notes.c2
-rw-r--r--builtin/pack-objects.c1
-rw-r--r--builtin/prune.c2
-rw-r--r--builtin/pull.c2
-rw-r--r--builtin/push.c2
-rw-r--r--builtin/range-diff.c1
-rw-r--r--builtin/read-tree.c1
-rw-r--r--builtin/rebase.c3
-rw-r--r--builtin/receive-pack.c3
-rw-r--r--builtin/replace.c3
-rw-r--r--builtin/reset.c4
-rw-r--r--builtin/rev-list.c2
-rw-r--r--builtin/rev-parse.c1
-rw-r--r--builtin/rm.c1
-rw-r--r--builtin/show-branch.c1
-rw-r--r--builtin/show-ref.c1
-rw-r--r--builtin/sparse-checkout.c2
-rw-r--r--builtin/stash.c1
-rw-r--r--builtin/submodule--helper.c2
-rw-r--r--builtin/tag.c3
-rw-r--r--builtin/unpack-file.c1
-rw-r--r--builtin/unpack-objects.c1
-rw-r--r--builtin/update-index.c1
-rw-r--r--builtin/update-ref.c1
-rw-r--r--builtin/var.c2
-rw-r--r--builtin/verify-commit.c1
-rw-r--r--builtin/verify-tag.c1
-rw-r--r--builtin/worktree.c2
-rw-r--r--bulk-checkin.c4
-rw-r--r--bundle.c2
-rw-r--r--cache-tree.c3
-rw-r--r--cache.h351
-rw-r--r--chdir-notify.c4
-rw-r--r--checkout.c4
-rw-r--r--color.c2
-rw-r--r--column.c3
-rw-r--r--combine-diff.c3
-rw-r--r--commit-graph.c4
-rw-r--r--commit.c3
-rw-r--r--common-main.c1
-rw-r--r--compat/fsmonitor/fsm-listen-win32.c1
-rw-r--r--compat/mingw.c1
-rw-r--r--compat/pread.c1
-rw-r--r--compat/simple-ipc/ipc-unix-socket.c3
-rw-r--r--compat/simple-ipc/ipc-win32.c2
-rw-r--r--compat/win32/trace2_win32_process_info.c1
-rw-r--r--config.c6
-rw-r--r--connect.c2
-rw-r--r--convert.c3
-rw-r--r--daemon.c1
-rw-r--r--date.c1
-rw-r--r--delta-islands.c2
-rw-r--r--diff-lib.c2
-rw-r--r--diff-no-index.c2
-rw-r--r--diff.c5
-rw-r--r--dir.c3
-rw-r--r--editor.c34
-rw-r--r--editor.h34
-rw-r--r--environment.c4
-rw-r--r--exec-cmd.c2
-rw-r--r--fetch-pack.c3
-rw-r--r--fmt-merge-msg.c3
-rw-r--r--fsck.c2
-rw-r--r--fsmonitor.c1
-rw-r--r--fsmonitor.h1
-rw-r--r--git-compat-util.h6
-rw-r--r--git-zlib.c (renamed from zlib.c)3
-rw-r--r--git-zlib.h28
-rw-r--r--git.c3
-rw-r--r--grep.c1
-rw-r--r--http-backend.c3
-rw-r--r--http-fetch.c2
-rw-r--r--http-push.c2
-rw-r--r--http-walker.c2
-rw-r--r--http.c2
-rw-r--r--http.h4
-rw-r--r--list-objects-filter.c3
-rw-r--r--list-objects.c2
-rw-r--r--ll-merge.c1
-rw-r--r--log-tree.c3
-rw-r--r--mailmap.c3
-rw-r--r--mailmap.h3
-rw-r--r--merge-ort.c4
-rw-r--r--merge-recursive.c2
-rw-r--r--midx.c1
-rw-r--r--name-hash.c1
-rw-r--r--notes-merge.c6
-rw-r--r--notes.c3
-rw-r--r--object-file.c2
-rw-r--r--object-file.h129
-rw-r--r--object-name.c2
-rw-r--r--object-name.h121
-rw-r--r--object.c1
-rw-r--r--object.h44
-rw-r--r--pack-bitmap-write.c2
-rw-r--r--pack-bitmap.c4
-rw-r--r--pack-check.c3
-rw-r--r--pack-mtimes.c3
-rw-r--r--pack-revindex.c4
-rw-r--r--pack-write.c4
-rw-r--r--packfile.c3
-rw-r--r--pager.c6
-rw-r--r--pager.h17
-rw-r--r--parse-options-cb.c2
-rw-r--r--path.c1
-rw-r--r--pkt-line.c1
-rw-r--r--preload-index.c1
-rw-r--r--pretty.c3
-rw-r--r--progress.c4
-rw-r--r--promisor-remote.c3
-rw-r--r--protocol.c3
-rw-r--r--protocol.h21
-rw-r--r--quote.c3
-rw-r--r--quote.h2
-rw-r--r--range-diff.c2
-rw-r--r--read-cache.c5
-rw-r--r--rebase-interactive.c4
-rw-r--r--ref-filter.c2
-rw-r--r--refs.c4
-rw-r--r--refs/files-backend.c1
-rw-r--r--refs/packed-backend.c1
-rw-r--r--refs/ref-cache.h2
-rw-r--r--remote-curl.c1
-rw-r--r--remote.c3
-rw-r--r--repository.c1
-rw-r--r--rerere.c3
-rw-r--r--reset.c1
-rw-r--r--resolve-undo.h7
-rw-r--r--revision.c5
-rw-r--r--run-command.c2
-rw-r--r--scalar.c3
-rw-r--r--send-pack.c1
-rw-r--r--sequencer.c4
-rw-r--r--server-info.c1
-rw-r--r--setup.c5
-rw-r--r--shallow.c1
-rw-r--r--sideband.c3
-rw-r--r--split-index.c1
-rw-r--r--split-index.h2
-rw-r--r--strbuf.c31
-rw-r--r--strbuf.h24
-rw-r--r--streaming.c4
-rw-r--r--submodule-config.c3
-rw-r--r--submodule.c3
-rw-r--r--t/helper/test-date.c2
-rw-r--r--t/helper/test-fast-rebase.c1
-rw-r--r--t/helper/test-lazy-init-name-hash.c1
-rw-r--r--t/helper/test-match-trees.c1
-rw-r--r--t/helper/test-mergesort.c1
-rw-r--r--t/helper/test-oidmap.c2
-rw-r--r--t/helper/test-path-utils.c1
-rw-r--r--t/helper/test-reach.c2
-rw-r--r--t/helper/test-submodule-config.c2
-rw-r--r--tag.c3
-rw-r--r--tmp-objdir.c3
-rw-r--r--trace.c3
-rw-r--r--trace2.c1
-rw-r--r--transport-helper.c3
-rw-r--r--transport.c5
-rw-r--r--tree-walk.c2
-rw-r--r--tree.c1
-rw-r--r--unpack-trees.c2
-rw-r--r--unpack-trees.h1
-rw-r--r--upload-pack.c5
-rw-r--r--walker.c2
-rw-r--r--wrapper.c1
-rw-r--r--wt-status.c4
217 files changed, 827 insertions, 479 deletions
diff --git a/Makefile b/Makefile
index 60ab1a8b4f..e440728c24 100644
--- a/Makefile
+++ b/Makefile
@@ -1032,6 +1032,7 @@ LIB_OBJS += fsmonitor.o
LIB_OBJS += fsmonitor-ipc.o
LIB_OBJS += fsmonitor-settings.o
LIB_OBJS += gettext.o
+LIB_OBJS += git-zlib.o
LIB_OBJS += gpg-interface.o
LIB_OBJS += graph.o
LIB_OBJS += grep.o
@@ -1192,7 +1193,6 @@ LIB_OBJS += write-or-die.o
LIB_OBJS += ws.o
LIB_OBJS += wt-status.o
LIB_OBJS += xdiff-interface.o
-LIB_OBJS += zlib.o
BUILTIN_OBJS += builtin/add.o
BUILTIN_OBJS += builtin/am.o
diff --git a/add-patch.c b/add-patch.c
index 1e1ee2df59..8d770d203f 100644
--- a/add-patch.c
+++ b/add-patch.c
@@ -1,8 +1,11 @@
#include "cache.h"
#include "add-interactive.h"
+#include "advice.h"
#include "alloc.h"
+#include "editor.h"
#include "environment.h"
#include "gettext.h"
+#include "object-name.h"
#include "strbuf.h"
#include "run-command.h"
#include "strvec.h"
diff --git a/apply.c b/apply.c
index e2d55eadfa..3636bc14c2 100644
--- a/apply.c
+++ b/apply.c
@@ -22,6 +22,8 @@
#include "xdiff-interface.h"
#include "ll-merge.h"
#include "lockfile.h"
+#include "object-name.h"
+#include "object-file.h"
#include "parse-options.h"
#include "quote.h"
#include "rerere.h"
diff --git a/archive-tar.c b/archive-tar.c
index 497dad0b3a..4cd81d8161 100644
--- a/archive-tar.c
+++ b/archive-tar.c
@@ -5,6 +5,7 @@
#include "alloc.h"
#include "config.h"
#include "gettext.h"
+#include "git-zlib.h"
#include "hex.h"
#include "tar.h"
#include "archive.h"
diff --git a/archive-zip.c b/archive-zip.c
index e6f5c10a14..ef538a90df 100644
--- a/archive-zip.c
+++ b/archive-zip.c
@@ -5,6 +5,7 @@
#include "config.h"
#include "archive.h"
#include "gettext.h"
+#include "git-zlib.h"
#include "hex.h"
#include "streaming.h"
#include "utf8.h"
diff --git a/archive.c b/archive.c
index d2d1b4eb42..8570cf37ff 100644
--- a/archive.c
+++ b/archive.c
@@ -2,6 +2,7 @@
#include "abspath.h"
#include "alloc.h"
#include "config.h"
+#include "convert.h"
#include "environment.h"
#include "gettext.h"
#include "hex.h"
diff --git a/archive.h b/archive.h
index 7178e2a9a2..3a4bdfbd07 100644
--- a/archive.h
+++ b/archive.h
@@ -1,8 +1,9 @@
#ifndef ARCHIVE_H
#define ARCHIVE_H
-#include "cache.h"
+#include "object-name.h"
#include "pathspec.h"
+#include "string-list.h"
struct repository;
struct pretty_print_context;
diff --git a/bisect.c b/bisect.c
index 0a5f2ed354..8d5f8e5885 100644
--- a/bisect.c
+++ b/bisect.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "config.h"
#include "commit.h"
#include "diff.h"
@@ -17,6 +17,7 @@
#include "strvec.h"
#include "commit-slab.h"
#include "commit-reach.h"
+#include "object-name.h"
#include "object-store.h"
#include "dir.h"
diff --git a/blame.c b/blame.c
index 2c427bcdbf..58dd58b6c9 100644
--- a/blame.c
+++ b/blame.c
@@ -3,12 +3,14 @@
#include "object-store.h"
#include "cache-tree.h"
#include "mergesort.h"
+#include "convert.h"
#include "diff.h"
#include "diffcore.h"
#include "gettext.h"
#include "hex.h"
#include "setup.h"
#include "tag.h"
+#include "trace2.h"
#include "blame.h"
#include "alloc.h"
#include "commit-slab.h"
diff --git a/branch.c b/branch.c
index 99a0e7889e..7df982693a 100644
--- a/branch.c
+++ b/branch.c
@@ -1,10 +1,11 @@
#include "git-compat-util.h"
-#include "cache.h"
+#include "advice.h"
#include "config.h"
#include "branch.h"
#include "environment.h"
#include "gettext.h"
#include "hex.h"
+#include "object-name.h"
#include "refs.h"
#include "refspec.h"
#include "remote.h"
diff --git a/builtin/add.c b/builtin/add.c
index f12054d9be..76cc026a68 100644
--- a/builtin/add.c
+++ b/builtin/add.c
@@ -5,9 +5,11 @@
*/
#define USE_THE_INDEX_VARIABLE
#include "cache.h"
+#include "advice.h"
#include "config.h"
#include "builtin.h"
#include "lockfile.h"
+#include "editor.h"
#include "dir.h"
#include "gettext.h"
#include "pathspec.h"
diff --git a/builtin/am.c b/builtin/am.c
index cd1e20f24e..5c83f2e003 100644
--- a/builtin/am.c
+++ b/builtin/am.c
@@ -6,8 +6,10 @@
#define USE_THE_INDEX_VARIABLE
#include "cache.h"
#include "abspath.h"
+#include "advice.h"
#include "config.h"
#include "builtin.h"
+#include "editor.h"
#include "environment.h"
#include "exec-cmd.h"
#include "gettext.h"
@@ -26,6 +28,7 @@
#include "diffcore.h"
#include "unpack-trees.h"
#include "branch.h"
+#include "object-name.h"
#include "sequencer.h"
#include "revision.h"
#include "merge-recursive.h"
@@ -37,6 +40,7 @@
#include "apply.h"
#include "string-list.h"
#include "packfile.h"
+#include "pager.h"
#include "repository.h"
#include "pretty.h"
#include "wrapper.h"
diff --git a/builtin/bisect.c b/builtin/bisect.c
index 26f07357a0..4b2143d455 100644
--- a/builtin/bisect.c
+++ b/builtin/bisect.c
@@ -3,12 +3,14 @@
#include "environment.h"
#include "gettext.h"
#include "hex.h"
+#include "object-name.h"
#include "parse-options.h"
#include "bisect.h"
#include "refs.h"
#include "dir.h"
#include "strvec.h"
#include "run-command.h"
+#include "oid-array.h"
#include "prompt.h"
#include "quote.h"
#include "revision.h"
diff --git a/builtin/blame.c b/builtin/blame.c
index a8d2114adc..2df6039a6e 100644
--- a/builtin/blame.c
+++ b/builtin/blame.c
@@ -28,7 +28,9 @@
#include "line-log.h"
#include "dir.h"
#include "progress.h"
+#include "object-name.h"
#include "object-store.h"
+#include "pager.h"
#include "blame.h"
#include "refs.h"
#include "setup.h"
diff --git a/builtin/branch.c b/builtin/branch.c
index bb7e1ac206..501c47657c 100644
--- a/builtin/branch.c
+++ b/builtin/branch.c
@@ -8,11 +8,13 @@
#include "cache.h"
#include "config.h"
#include "color.h"
+#include "editor.h"
#include "environment.h"
#include "refs.h"
#include "commit.h"
#include "builtin.h"
#include "gettext.h"
+#include "object-name.h"
#include "remote.h"
#include "parse-options.h"
#include "branch.h"
diff --git a/builtin/bugreport.c b/builtin/bugreport.c
index 52955e1d38..daf6c23657 100644
--- a/builtin/bugreport.c
+++ b/builtin/bugreport.c
@@ -1,5 +1,6 @@
#include "builtin.h"
#include "abspath.h"
+#include "editor.h"
#include "gettext.h"
#include "parse-options.h"
#include "strbuf.h"
@@ -8,6 +9,7 @@
#include "hook.h"
#include "hook-list.h"
#include "diagnose.h"
+#include "object-file.h"
#include "setup.h"
#include "wrapper.h"
diff --git a/builtin/cat-file.c b/builtin/cat-file.c
index 04d4bb6c77..0bafc14e6c 100644
--- a/builtin/cat-file.c
+++ b/builtin/cat-file.c
@@ -7,6 +7,7 @@
#include "cache.h"
#include "alloc.h"
#include "config.h"
+#include "convert.h"
#include "builtin.h"
#include "diff.h"
#include "environment.h"
@@ -19,6 +20,8 @@
#include "tree-walk.h"
#include "oid-array.h"
#include "packfile.h"
+#include "object-file.h"
+#include "object-name.h"
#include "object-store.h"
#include "replace-object.h"
#include "promisor-remote.h"
diff --git a/builtin/check-attr.c b/builtin/check-attr.c
index 1dbe9d6ca8..037bf1aaa2 100644
--- a/builtin/check-attr.c
+++ b/builtin/check-attr.c
@@ -5,6 +5,7 @@
#include "attr.h"
#include "environment.h"
#include "gettext.h"
+#include "object-name.h"
#include "quote.h"
#include "setup.h"
#include "parse-options.h"
diff --git a/builtin/checkout.c b/builtin/checkout.c
index 38a8cd6a96..6f5d82ed3d 100644
--- a/builtin/checkout.c
+++ b/builtin/checkout.c
@@ -15,7 +15,9 @@
#include "hook.h"
#include "ll-merge.h"
#include "lockfile.h"
+#include "mem-pool.h"
#include "merge-recursive.h"
+#include "object-name.h"
#include "object-store.h"
#include "parse-options.h"
#include "refs.h"
@@ -26,6 +28,7 @@
#include "setup.h"
#include "submodule.h"
#include "submodule-config.h"
+#include "trace2.h"
#include "tree.h"
#include "tree-walk.h"
#include "unpack-trees.h"
diff --git a/builtin/clone.c b/builtin/clone.c
index eeec8067ec..186845ef0b 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -11,6 +11,7 @@
#define USE_THE_INDEX_VARIABLE
#include "builtin.h"
#include "abspath.h"
+#include "advice.h"
#include "config.h"
#include "environment.h"
#include "gettext.h"
@@ -20,6 +21,7 @@
#include "fetch-pack.h"
#include "refs.h"
#include "refspec.h"
+#include "object-file.h"
#include "object-store.h"
#include "tree.h"
#include "tree-walk.h"
@@ -40,6 +42,7 @@
#include "hook.h"
#include "bundle.h"
#include "bundle-uri.h"
+#include "wrapper.h"
/*
* Overall FIXMEs:
diff --git a/builtin/commit-graph.c b/builtin/commit-graph.c
index 9011426976..a3d00fa232 100644
--- a/builtin/commit-graph.c
+++ b/builtin/commit-graph.c
@@ -12,6 +12,7 @@
#include "progress.h"
#include "replace-object.h"
#include "tag.h"
+#include "trace2.h"
#define BUILTIN_COMMIT_GRAPH_VERIFY_USAGE \
N_("git commit-graph verify [--object-dir <dir>] [--shallow] [--[no-]progress]")
diff --git a/builtin/commit-tree.c b/builtin/commit-tree.c
index 15be167f87..d1d251c3de 100644
--- a/builtin/commit-tree.c
+++ b/builtin/commit-tree.c
@@ -7,6 +7,7 @@
#include "config.h"
#include "gettext.h"
#include "hex.h"
+#include "object-name.h"
#include "object-store.h"
#include "repository.h"
#include "commit.h"
diff --git a/builtin/commit.c b/builtin/commit.c
index 9d8e1ea91a..e67c4be221 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -7,11 +7,13 @@
#define USE_THE_INDEX_VARIABLE
#include "cache.h"
+#include "advice.h"
#include "config.h"
#include "lockfile.h"
#include "cache-tree.h"
#include "color.h"
#include "dir.h"
+#include "editor.h"
#include "environment.h"
#include "builtin.h"
#include "diff.h"
@@ -26,6 +28,7 @@
#include "log-tree.h"
#include "strbuf.h"
#include "utf8.h"
+#include "object-name.h"
#include "parse-options.h"
#include "string-list.h"
#include "rerere.h"
diff --git a/builtin/config.c b/builtin/config.c
index fe79fb60c4..9401f1e5e3 100644
--- a/builtin/config.c
+++ b/builtin/config.c
@@ -3,6 +3,7 @@
#include "alloc.h"
#include "config.h"
#include "color.h"
+#include "editor.h"
#include "environment.h"
#include "gettext.h"
#include "ident.h"
diff --git a/builtin/credential-cache--daemon.c b/builtin/credential-cache--daemon.c
index 62c09a271d..4e571d9951 100644
--- a/builtin/credential-cache--daemon.c
+++ b/builtin/credential-cache--daemon.c
@@ -2,6 +2,7 @@
#include "abspath.h"
#include "alloc.h"
#include "gettext.h"
+#include "object-file.h"
#include "parse-options.h"
#ifndef NO_UNIX_SOCKETS
diff --git a/builtin/describe.c b/builtin/describe.c
index c6b388e649..55b4baaa22 100644
--- a/builtin/describe.c
+++ b/builtin/describe.c
@@ -11,6 +11,7 @@
#include "refs.h"
#include "builtin.h"
#include "exec-cmd.h"
+#include "object-name.h"
#include "parse-options.h"
#include "revision.h"
#include "diff.h"
diff --git a/builtin/diagnose.c b/builtin/diagnose.c
index 0f8b64994c..4f22eb2b55 100644
--- a/builtin/diagnose.c
+++ b/builtin/diagnose.c
@@ -1,6 +1,7 @@
#include "builtin.h"
#include "abspath.h"
#include "gettext.h"
+#include "object-file.h"
#include "parse-options.h"
#include "diagnose.h"
diff --git a/builtin/difftool.c b/builtin/difftool.c
index 5ba524fa63..f09d24d37f 100644
--- a/builtin/difftool.c
+++ b/builtin/difftool.c
@@ -25,6 +25,7 @@
#include "strvec.h"
#include "strbuf.h"
#include "lockfile.h"
+#include "object-file.h"
#include "object-store.h"
#include "dir.h"
#include "entry.h"
diff --git a/builtin/fast-export.c b/builtin/fast-export.c
index 8224bf4bc1..9a95f6a1a8 100644
--- a/builtin/fast-export.c
+++ b/builtin/fast-export.c
@@ -10,6 +10,7 @@
#include "hex.h"
#include "refs.h"
#include "refspec.h"
+#include "object-file.h"
#include "object-store.h"
#include "commit.h"
#include "object.h"
diff --git a/builtin/fast-import.c b/builtin/fast-import.c
index 1fb95275d7..bbd9b2b3e7 100644
--- a/builtin/fast-import.c
+++ b/builtin/fast-import.c
@@ -19,6 +19,8 @@
#include "dir.h"
#include "run-command.h"
#include "packfile.h"
+#include "object-file.h"
+#include "object-name.h"
#include "object-store.h"
#include "mem-pool.h"
#include "commit-reach.h"
diff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c
index 5f341b794d..3ba0fe5a39 100644
--- a/builtin/fetch-pack.c
+++ b/builtin/fetch-pack.c
@@ -2,6 +2,7 @@
#include "alloc.h"
#include "gettext.h"
#include "hex.h"
+#include "object-file.h"
#include "pkt-line.h"
#include "fetch-pack.h"
#include "remote.h"
diff --git a/builtin/fetch.c b/builtin/fetch.c
index 85bd280103..ab623f41b4 100644
--- a/builtin/fetch.c
+++ b/builtin/fetch.c
@@ -2,6 +2,7 @@
* "git fetch"
*/
#include "cache.h"
+#include "advice.h"
#include "config.h"
#include "gettext.h"
#include "environment.h"
@@ -9,8 +10,10 @@
#include "repository.h"
#include "refs.h"
#include "refspec.h"
+#include "object-name.h"
#include "object-store.h"
#include "oidset.h"
+#include "oid-array.h"
#include "commit.h"
#include "builtin.h"
#include "string-list.h"
@@ -25,12 +28,15 @@
#include "strvec.h"
#include "utf8.h"
#include "packfile.h"
+#include "pager.h"
#include "list-objects-filter-options.h"
#include "commit-reach.h"
#include "branch.h"
#include "promisor-remote.h"
#include "commit-graph.h"
#include "shallow.h"
+#include "trace.h"
+#include "trace2.h"
#include "worktree.h"
#include "bundle-uri.h"
diff --git a/builtin/fsck.c b/builtin/fsck.c
index 095b39d398..35a6de3cdb 100644
--- a/builtin/fsck.c
+++ b/builtin/fsck.c
@@ -19,6 +19,8 @@
#include "streaming.h"
#include "decorate.h"
#include "packfile.h"
+#include "object-file.h"
+#include "object-name.h"
#include "object-store.h"
#include "replace-object.h"
#include "resolve-undo.h"
diff --git a/builtin/fsmonitor--daemon.c b/builtin/fsmonitor--daemon.c
index 42af6a2cc7..f6dd9a784c 100644
--- a/builtin/fsmonitor--daemon.c
+++ b/builtin/fsmonitor--daemon.c
@@ -14,6 +14,7 @@
#include "simple-ipc.h"
#include "khash.h"
#include "pkt-line.h"
+#include "trace2.h"
static const char * const builtin_fsmonitor__daemon_usage[] = {
N_("git fsmonitor--daemon start [<options>]"),
diff --git a/builtin/gc.c b/builtin/gc.c
index edd98d35a5..f8569bfacc 100644
--- a/builtin/gc.c
+++ b/builtin/gc.c
@@ -25,6 +25,7 @@
#include "commit.h"
#include "commit-graph.h"
#include "packfile.h"
+#include "object-file.h"
#include "object-store.h"
#include "pack.h"
#include "pack-objects.h"
@@ -37,6 +38,7 @@
#include "gettext.h"
#include "hook.h"
#include "setup.h"
+#include "trace2.h"
#include "wrapper.h"
#define FAILED_RUN "failed to run %s"
diff --git a/builtin/grep.c b/builtin/grep.c
index a1b68d90bd..b86c754def 100644
--- a/builtin/grep.c
+++ b/builtin/grep.c
@@ -26,8 +26,11 @@
#include "setup.h"
#include "submodule.h"
#include "submodule-config.h"
+#include "object-file.h"
+#include "object-name.h"
#include "object-store.h"
#include "packfile.h"
+#include "pager.h"
#include "write-or-die.h"
static const char *grep_prefix;
diff --git a/builtin/hash-object.c b/builtin/hash-object.c
index a15fe4fd3f..a380121166 100644
--- a/builtin/hash-object.c
+++ b/builtin/hash-object.c
@@ -9,6 +9,7 @@
#include "config.h"
#include "gettext.h"
#include "hex.h"
+#include "object-file.h"
#include "object-store.h"
#include "blob.h"
#include "quote.h"
diff --git a/builtin/help.c b/builtin/help.c
index 87333a02ec..128aa83099 100644
--- a/builtin/help.c
+++ b/builtin/help.c
@@ -6,6 +6,7 @@
#include "builtin.h"
#include "exec-cmd.h"
#include "gettext.h"
+#include "pager.h"
#include "parse-options.h"
#include "run-command.h"
#include "config-list.h"
diff --git a/builtin/index-pack.c b/builtin/index-pack.c
index b17e79cd40..0f59cf8aa0 100644
--- a/builtin/index-pack.c
+++ b/builtin/index-pack.c
@@ -17,7 +17,10 @@
#include "streaming.h"
#include "thread-utils.h"
#include "packfile.h"
+#include "pack-revindex.h"
+#include "object-file.h"
#include "object-store.h"
+#include "oid-array.h"
#include "replace-object.h"
#include "promisor-remote.h"
#include "setup.h"
diff --git a/builtin/init-db.c b/builtin/init-db.c
index ba6e0b20fa..6183f3fb3f 100644
--- a/builtin/init-db.c
+++ b/builtin/init-db.c
@@ -11,6 +11,7 @@
#include "refs.h"
#include "builtin.h"
#include "exec-cmd.h"
+#include "object-file.h"
#include "parse-options.h"
#include "setup.h"
#include "worktree.h"
diff --git a/builtin/log.c b/builtin/log.c
index 7d19578963..4f162ff4d0 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -12,7 +12,10 @@
#include "gettext.h"
#include "hex.h"
#include "refs.h"
+#include "object-file.h"
+#include "object-name.h"
#include "object-store.h"
+#include "pager.h"
#include "color.h"
#include "commit.h"
#include "diff.h"
@@ -20,6 +23,7 @@
#include "revision.h"
#include "log-tree.h"
#include "builtin.h"
+#include "oid-array.h"
#include "tag.h"
#include "reflog-walk.h"
#include "patch-ids.h"
diff --git a/builtin/ls-files.c b/builtin/ls-files.c
index ed35fa8d8e..625f48f0d6 100644
--- a/builtin/ls-files.c
+++ b/builtin/ls-files.c
@@ -8,10 +8,12 @@
#include "cache.h"
#include "repository.h"
#include "config.h"
+#include "convert.h"
#include "quote.h"
#include "dir.h"
#include "builtin.h"
#include "gettext.h"
+#include "object-name.h"
#include "strbuf.h"
#include "tree.h"
#include "cache-tree.h"
diff --git a/builtin/ls-tree.c b/builtin/ls-tree.c
index f32e6be219..077977a461 100644
--- a/builtin/ls-tree.c
+++ b/builtin/ls-tree.c
@@ -7,6 +7,7 @@
#include "config.h"
#include "gettext.h"
#include "hex.h"
+#include "object-name.h"
#include "object-store.h"
#include "blob.h"
#include "tree.h"
diff --git a/builtin/merge-base.c b/builtin/merge-base.c
index 3f22273b40..854019a32d 100644
--- a/builtin/merge-base.c
+++ b/builtin/merge-base.c
@@ -7,6 +7,7 @@
#include "refs.h"
#include "diff.h"
#include "revision.h"
+#include "object-name.h"
#include "parse-options.h"
#include "repository.h"
#include "commit-reach.h"
diff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c
index 91ed55f3ab..708a8ffabe 100644
--- a/builtin/merge-recursive.c
+++ b/builtin/merge-recursive.c
@@ -1,9 +1,11 @@
#include "cache.h"
#include "builtin.h"
+#include "advice.h"
#include "commit.h"
#include "gettext.h"
#include "tag.h"
#include "merge-recursive.h"
+#include "object-name.h"
#include "xdiff-interface.h"
static const char builtin_merge_recursive_usage[] =
diff --git a/builtin/merge-tree.c b/builtin/merge-tree.c
index 803e380856..6b9f006ec1 100644
--- a/builtin/merge-tree.c
+++ b/builtin/merge-tree.c
@@ -8,6 +8,7 @@
#include "commit.h"
#include "commit-reach.h"
#include "merge-ort.h"
+#include "object-name.h"
#include "object-store.h"
#include "parse-options.h"
#include "repository.h"
diff --git a/builtin/merge.c b/builtin/merge.c
index a99be9610e..8da3e46abb 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -9,11 +9,14 @@
#define USE_THE_INDEX_VARIABLE
#include "cache.h"
#include "abspath.h"
+#include "advice.h"
#include "alloc.h"
#include "config.h"
+#include "editor.h"
#include "environment.h"
#include "gettext.h"
#include "hex.h"
+#include "object-name.h"
#include "parse-options.h"
#include "builtin.h"
#include "lockfile.h"
diff --git a/builtin/mktag.c b/builtin/mktag.c
index b3f6d7ea38..44fa56eff3 100644
--- a/builtin/mktag.c
+++ b/builtin/mktag.c
@@ -4,6 +4,7 @@
#include "parse-options.h"
#include "tag.h"
#include "replace-object.h"
+#include "object-file.h"
#include "object-store.h"
#include "fsck.h"
#include "config.h"
diff --git a/builtin/mv.c b/builtin/mv.c
index b7c5ffbd8c..32935af48e 100644
--- a/builtin/mv.c
+++ b/builtin/mv.c
@@ -6,10 +6,12 @@
#define USE_THE_INDEX_VARIABLE
#include "builtin.h"
#include "abspath.h"
+#include "advice.h"
#include "alloc.h"
#include "config.h"
#include "environment.h"
#include "gettext.h"
+#include "object-file.h"
#include "pathspec.h"
#include "lockfile.h"
#include "dir.h"
diff --git a/builtin/name-rev.c b/builtin/name-rev.c
index 831d360a78..593f0506a1 100644
--- a/builtin/name-rev.c
+++ b/builtin/name-rev.c
@@ -8,6 +8,8 @@
#include "commit.h"
#include "tag.h"
#include "refs.h"
+#include "object-name.h"
+#include "pager.h"
#include "parse-options.h"
#include "prio-queue.h"
#include "hash-lookup.h"
diff --git a/builtin/notes.c b/builtin/notes.c
index 4ff44f1e3d..d5788352b6 100644
--- a/builtin/notes.c
+++ b/builtin/notes.c
@@ -10,9 +10,11 @@
#include "cache.h"
#include "config.h"
#include "builtin.h"
+#include "editor.h"
#include "gettext.h"
#include "hex.h"
#include "notes.h"
+#include "object-name.h"
#include "object-store.h"
#include "repository.h"
#include "blob.h"
diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c
index 77d88f85b0..9297a077f8 100644
--- a/builtin/pack-objects.c
+++ b/builtin/pack-objects.c
@@ -33,6 +33,7 @@
#include "strvec.h"
#include "list.h"
#include "packfile.h"
+#include "object-file.h"
#include "object-store.h"
#include "replace-object.h"
#include "dir.h"
diff --git a/builtin/prune.c b/builtin/prune.c
index 5c0952f5c6..5dc9b20720 100644
--- a/builtin/prune.c
+++ b/builtin/prune.c
@@ -11,6 +11,8 @@
#include "progress.h"
#include "prune-packed.h"
#include "replace-object.h"
+#include "object-file.h"
+#include "object-name.h"
#include "object-store.h"
#include "shallow.h"
diff --git a/builtin/pull.c b/builtin/pull.c
index 5405d09f22..967368ebc6 100644
--- a/builtin/pull.c
+++ b/builtin/pull.c
@@ -7,10 +7,12 @@
*/
#define USE_THE_INDEX_VARIABLE
#include "cache.h"
+#include "advice.h"
#include "config.h"
#include "builtin.h"
#include "gettext.h"
#include "hex.h"
+#include "object-name.h"
#include "parse-options.h"
#include "exec-cmd.h"
#include "run-command.h"
diff --git a/builtin/push.c b/builtin/push.c
index fa550b8f80..6001e4ae0a 100644
--- a/builtin/push.c
+++ b/builtin/push.c
@@ -2,6 +2,7 @@
* "git push"
*/
#include "cache.h"
+#include "advice.h"
#include "branch.h"
#include "config.h"
#include "environment.h"
@@ -16,6 +17,7 @@
#include "submodule.h"
#include "submodule-config.h"
#include "send-pack.h"
+#include "trace2.h"
#include "color.h"
static const char * const push_usage[] = {
diff --git a/builtin/range-diff.c b/builtin/range-diff.c
index b72af527f0..04339a92ea 100644
--- a/builtin/range-diff.c
+++ b/builtin/range-diff.c
@@ -1,6 +1,7 @@
#include "cache.h"
#include "builtin.h"
#include "gettext.h"
+#include "object-name.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 600d4f748f..d61cbad96d 100644
--- a/builtin/read-tree.c
+++ b/builtin/read-tree.c
@@ -11,6 +11,7 @@
#include "hex.h"
#include "lockfile.h"
#include "object.h"
+#include "object-name.h"
#include "tree.h"
#include "tree-walk.h"
#include "cache-tree.h"
diff --git a/builtin/rebase.c b/builtin/rebase.c
index 1ceac603c7..ace1d5e8d1 100644
--- a/builtin/rebase.c
+++ b/builtin/rebase.c
@@ -21,6 +21,8 @@
#include "cache-tree.h"
#include "unpack-trees.h"
#include "lockfile.h"
+#include "object-file.h"
+#include "object-name.h"
#include "parse-options.h"
#include "commit.h"
#include "diff.h"
@@ -32,6 +34,7 @@
#include "sequencer.h"
#include "rebase-interactive.h"
#include "reset.h"
+#include "trace2.h"
#include "hook.h"
#include "wrapper.h"
diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index 9109552533..0dedcd7204 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -29,9 +29,12 @@
#include "tmp-objdir.h"
#include "oidset.h"
#include "packfile.h"
+#include "object-name.h"
#include "object-store.h"
#include "protocol.h"
#include "commit-reach.h"
+#include "trace.h"
+#include "trace2.h"
#include "worktree.h"
#include "shallow.h"
#include "parse-options.h"
diff --git a/builtin/replace.c b/builtin/replace.c
index d2adc8ab61..981f189443 100644
--- a/builtin/replace.c
+++ b/builtin/replace.c
@@ -11,12 +11,15 @@
#include "cache.h"
#include "config.h"
#include "builtin.h"
+#include "editor.h"
#include "environment.h"
#include "gettext.h"
#include "hex.h"
#include "refs.h"
#include "parse-options.h"
#include "run-command.h"
+#include "object-file.h"
+#include "object-name.h"
#include "object-store.h"
#include "replace-object.h"
#include "repository.h"
diff --git a/builtin/reset.c b/builtin/reset.c
index 0ed329236c..f99f32d580 100644
--- a/builtin/reset.c
+++ b/builtin/reset.c
@@ -9,6 +9,7 @@
*/
#define USE_THE_INDEX_VARIABLE
#include "builtin.h"
+#include "advice.h"
#include "config.h"
#include "environment.h"
#include "gettext.h"
@@ -23,12 +24,15 @@
#include "diffcore.h"
#include "tree.h"
#include "branch.h"
+#include "object-name.h"
#include "parse-options.h"
#include "unpack-trees.h"
#include "cache-tree.h"
#include "setup.h"
#include "submodule.h"
#include "submodule-config.h"
+#include "trace.h"
+#include "trace2.h"
#include "dir.h"
#include "add-interactive.h"
diff --git a/builtin/rev-list.c b/builtin/rev-list.c
index a3dbbb6338..6dc8be492a 100644
--- a/builtin/rev-list.c
+++ b/builtin/rev-list.c
@@ -10,6 +10,8 @@
#include "list-objects-filter.h"
#include "list-objects-filter-options.h"
#include "object.h"
+#include "object-name.h"
+#include "object-file.h"
#include "object-store.h"
#include "pack.h"
#include "pack-bitmap.h"
diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c
index 1af2089f9b..852e49e340 100644
--- a/builtin/rev-parse.c
+++ b/builtin/rev-parse.c
@@ -15,6 +15,7 @@
#include "refs.h"
#include "quote.h"
#include "builtin.h"
+#include "object-name.h"
#include "parse-options.h"
#include "diff.h"
#include "revision.h"
diff --git a/builtin/rm.c b/builtin/rm.c
index 6be9281742..d36072252e 100644
--- a/builtin/rm.c
+++ b/builtin/rm.c
@@ -13,6 +13,7 @@
#include "cache-tree.h"
#include "gettext.h"
#include "tree-walk.h"
+#include "object-name.h"
#include "parse-options.h"
#include "string-list.h"
#include "setup.h"
diff --git a/builtin/show-branch.c b/builtin/show-branch.c
index 463a8d11c3..20030b75e3 100644
--- a/builtin/show-branch.c
+++ b/builtin/show-branch.c
@@ -8,6 +8,7 @@
#include "builtin.h"
#include "color.h"
#include "strvec.h"
+#include "object-name.h"
#include "parse-options.h"
#include "dir.h"
#include "commit-slab.h"
diff --git a/builtin/show-ref.c b/builtin/show-ref.c
index 138d30a005..a2243b4219 100644
--- a/builtin/show-ref.c
+++ b/builtin/show-ref.c
@@ -4,6 +4,7 @@
#include "gettext.h"
#include "hex.h"
#include "refs.h"
+#include "object-name.h"
#include "object-store.h"
#include "object.h"
#include "tag.h"
diff --git a/builtin/sparse-checkout.c b/builtin/sparse-checkout.c
index 5e917ead7b..40d420f06c 100644
--- a/builtin/sparse-checkout.c
+++ b/builtin/sparse-checkout.c
@@ -4,6 +4,8 @@
#include "dir.h"
#include "environment.h"
#include "gettext.h"
+#include "object-file.h"
+#include "object-name.h"
#include "parse-options.h"
#include "pathspec.h"
#include "repository.h"
diff --git a/builtin/stash.c b/builtin/stash.c
index 735d27039e..a7e17ffe38 100644
--- a/builtin/stash.c
+++ b/builtin/stash.c
@@ -5,6 +5,7 @@
#include "environment.h"
#include "gettext.h"
#include "hex.h"
+#include "object-name.h"
#include "parse-options.h"
#include "refs.h"
#include "lockfile.h"
diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index 569068e6a2..6bf8d666ce 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -24,6 +24,8 @@
#include "revision.h"
#include "diffcore.h"
#include "diff.h"
+#include "object-file.h"
+#include "object-name.h"
#include "object-store.h"
#include "advice.h"
#include "branch.h"
diff --git a/builtin/tag.c b/builtin/tag.c
index ab5f5c74f4..1850a6a6fd 100644
--- a/builtin/tag.c
+++ b/builtin/tag.c
@@ -7,12 +7,15 @@
*/
#include "cache.h"
+#include "advice.h"
#include "config.h"
#include "builtin.h"
+#include "editor.h"
#include "environment.h"
#include "gettext.h"
#include "hex.h"
#include "refs.h"
+#include "object-name.h"
#include "object-store.h"
#include "tag.h"
#include "run-command.h"
diff --git a/builtin/unpack-file.c b/builtin/unpack-file.c
index 00179180c7..b35a4b9dfe 100644
--- a/builtin/unpack-file.c
+++ b/builtin/unpack-file.c
@@ -1,6 +1,7 @@
#include "builtin.h"
#include "config.h"
#include "hex.h"
+#include "object-name.h"
#include "object-store.h"
#include "wrapper.h"
diff --git a/builtin/unpack-objects.c b/builtin/unpack-objects.c
index 585e81b106..2c52c3a741 100644
--- a/builtin/unpack-objects.c
+++ b/builtin/unpack-objects.c
@@ -4,6 +4,7 @@
#include "config.h"
#include "environment.h"
#include "gettext.h"
+#include "git-zlib.h"
#include "hex.h"
#include "object-store.h"
#include "object.h"
diff --git a/builtin/update-index.c b/builtin/update-index.c
index 03cda5e60d..33b00cef15 100644
--- a/builtin/update-index.c
+++ b/builtin/update-index.c
@@ -15,6 +15,7 @@
#include "cache-tree.h"
#include "tree-walk.h"
#include "builtin.h"
+#include "object-file.h"
#include "refs.h"
#include "resolve-undo.h"
#include "parse-options.h"
diff --git a/builtin/update-ref.c b/builtin/update-ref.c
index 3ffd75b3e7..6ca85420c3 100644
--- a/builtin/update-ref.c
+++ b/builtin/update-ref.c
@@ -3,6 +3,7 @@
#include "gettext.h"
#include "refs.h"
#include "builtin.h"
+#include "object-name.h"
#include "parse-options.h"
#include "quote.h"
#include "strvec.h"
diff --git a/builtin/var.c b/builtin/var.c
index acb988d2d5..2149998980 100644
--- a/builtin/var.c
+++ b/builtin/var.c
@@ -5,7 +5,9 @@
*/
#include "builtin.h"
#include "config.h"
+#include "editor.h"
#include "ident.h"
+#include "pager.h"
#include "refs.h"
static const char var_usage[] = "git var (-l | <variable>)";
diff --git a/builtin/verify-commit.c b/builtin/verify-commit.c
index 4d10aa98b1..5d99b82a64 100644
--- a/builtin/verify-commit.c
+++ b/builtin/verify-commit.c
@@ -9,6 +9,7 @@
#include "config.h"
#include "builtin.h"
#include "gettext.h"
+#include "object-name.h"
#include "object-store.h"
#include "repository.h"
#include "commit.h"
diff --git a/builtin/verify-tag.c b/builtin/verify-tag.c
index 28d0da6845..c6019a0ad8 100644
--- a/builtin/verify-tag.c
+++ b/builtin/verify-tag.c
@@ -11,6 +11,7 @@
#include "gettext.h"
#include "tag.h"
#include "run-command.h"
+#include "object-name.h"
#include "parse-options.h"
#include "gpg-interface.h"
#include "ref-filter.h"
diff --git a/builtin/worktree.c b/builtin/worktree.c
index 39e9e5c9ce..a61bc32189 100644
--- a/builtin/worktree.c
+++ b/builtin/worktree.c
@@ -7,6 +7,8 @@
#include "environment.h"
#include "gettext.h"
#include "hex.h"
+#include "object-file.h"
+#include "object-name.h"
#include "parse-options.h"
#include "strvec.h"
#include "branch.h"
diff --git a/bulk-checkin.c b/bulk-checkin.c
index 6362b6aabc..d843279715 100644
--- a/bulk-checkin.c
+++ b/bulk-checkin.c
@@ -1,7 +1,7 @@
/*
* Copyright (c) 2011, Google Inc.
*/
-#include "cache.h"
+#include "git-compat-util.h"
#include "alloc.h"
#include "bulk-checkin.h"
#include "environment.h"
@@ -15,7 +15,9 @@
#include "string-list.h"
#include "tmp-objdir.h"
#include "packfile.h"
+#include "object-file.h"
#include "object-store.h"
+#include "wrapper.h"
static int odb_transaction_nesting;
diff --git a/bundle.c b/bundle.c
index 6471489975..a5505368de 100644
--- a/bundle.c
+++ b/bundle.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "lockfile.h"
#include "bundle.h"
#include "environment.h"
diff --git a/cache-tree.c b/cache-tree.c
index ff14b527da..ebfe649b33 100644
--- a/cache-tree.c
+++ b/cache-tree.c
@@ -7,10 +7,13 @@
#include "tree-walk.h"
#include "cache-tree.h"
#include "bulk-checkin.h"
+#include "object-file.h"
#include "object-store.h"
#include "replace-object.h"
#include "promisor-remote.h"
#include "sparse-index.h"
+#include "trace.h"
+#include "trace2.h"
#ifndef DEBUG_CACHE_TREE
#define DEBUG_CACHE_TREE 0
diff --git a/cache.h b/cache.h
index 82d7b112b4..71e2fe74c4 100644
--- a/cache.h
+++ b/cache.h
@@ -4,46 +4,11 @@
#include "git-compat-util.h"
#include "strbuf.h"
#include "hashmap.h"
-#include "list.h"
-#include "advice.h"
#include "gettext.h"
-#include "convert.h"
-#include "trace.h"
-#include "trace2.h"
#include "string-list.h"
-#include "pack-revindex.h"
-#include "hash.h"
-#include "path.h"
#include "pathspec.h"
#include "object.h"
-#include "oid-array.h"
-#include "repository.h"
#include "statinfo.h"
-#include "mem-pool.h"
-
-typedef struct git_zstream {
- z_stream z;
- unsigned long avail_in;
- unsigned long avail_out;
- unsigned long total_in;
- unsigned long total_out;
- unsigned char *next_in;
- unsigned char *next_out;
-} git_zstream;
-
-void git_inflate_init(git_zstream *);
-void git_inflate_init_gzip_only(git_zstream *);
-void git_inflate_end(git_zstream *);
-int git_inflate(git_zstream *, int flush);
-
-void git_deflate_init(git_zstream *, int level);
-void git_deflate_init_gzip(git_zstream *, int level);
-void git_deflate_init_raw(git_zstream *, int level);
-void git_deflate_end(git_zstream *);
-int git_deflate_abort(git_zstream *);
-int git_deflate_end_gently(git_zstream *);
-int git_deflate(git_zstream *, int flush);
-unsigned long git_deflate_bound(git_zstream *, unsigned long);
#if defined(DT_UNKNOWN) && !defined(NO_D_TYPE_IN_DIRENT)
#define DTYPE(de) ((de)->d_type)
@@ -59,18 +24,6 @@ unsigned long git_deflate_bound(git_zstream *, unsigned long);
#define DTYPE(de) DT_UNKNOWN
#endif
-/* unknown mode (impossible combination S_IFIFO|S_IFCHR) */
-#define S_IFINVALID 0030000
-
-/*
- * A "directory link" is a link to another git directory.
- *
- * The value 0160000 is not normally a valid mode, and
- * also just happens to be S_IFDIR + S_IFLNK
- */
-#define S_IFGITLINK 0160000
-#define S_ISGITLINK(m) (((m) & S_IFMT) == S_IFGITLINK)
-
/*
* Some mode bits are also used internally for computations.
*
@@ -87,27 +40,6 @@ unsigned long git_deflate_bound(git_zstream *, unsigned long);
/*
- * Intensive research over the course of many years has shown that
- * port 9418 is totally unused by anything else. Or
- *
- * Your search - "port 9418" - did not match any documents.
- *
- * as www.google.com puts it.
- *
- * This port has been properly assigned for git use by IANA:
- * git (Assigned-9418) [I06-050728-0001].
- *
- * git 9418/tcp git pack transfer service
- * git 9418/udp git pack transfer service
- *
- * with Linus Torvalds <torvalds@osdl.org> as the point of
- * contact. September 2005.
- *
- * See http://www.iana.org/assignments/port-numbers
- */
-#define DEFAULT_GIT_PORT 9418
-
-/*
* Basic data structures for the directory cache
*/
@@ -186,11 +118,8 @@ struct cache_entry {
#error "CE_EXTENDED_FLAGS out of range"
#endif
-#define S_ISSPARSEDIR(m) ((m) == S_IFDIR)
-
/* Forward structure decls */
struct pathspec;
-struct child_process;
struct tree;
/*
@@ -228,17 +157,6 @@ static inline unsigned create_ce_flags(unsigned stage)
#define ce_mark_uptodate(ce) ((ce)->ce_flags |= CE_UPTODATE)
#define ce_intent_to_add(ce) ((ce)->ce_flags & CE_INTENT_TO_ADD)
-#define ce_permissions(mode) (((mode) & 0100) ? 0755 : 0644)
-static inline unsigned int create_ce_mode(unsigned int mode)
-{
- if (S_ISLNK(mode))
- return S_IFLNK;
- if (S_ISSPARSEDIR(mode))
- return S_IFDIR;
- if (S_ISDIR(mode) || S_ISGITLINK(mode))
- return S_IFGITLINK;
- return S_IFREG | ce_permissions(mode);
-}
static inline unsigned int ce_mode_from_stat(const struct cache_entry *ce,
unsigned int mode)
{
@@ -265,16 +183,6 @@ static inline int ce_to_dtype(const struct cache_entry *ce)
else
return DT_UNKNOWN;
}
-static inline unsigned int canon_mode(unsigned int mode)
-{
- if (S_ISREG(mode))
- return S_IFREG | ce_permissions(mode);
- if (S_ISLNK(mode))
- return S_IFLNK;
- if (S_ISDIR(mode))
- return S_IFDIR;
- return S_IFGITLINK;
-}
static inline int ce_path_match(struct index_state *istate,
const struct cache_entry *ce,
@@ -445,13 +353,6 @@ void prefetch_cache_entries(const struct index_state *istate,
extern struct index_state the_index;
#endif
-static inline enum object_type object_type(unsigned int mode)
-{
- return S_ISDIR(mode) ? OBJ_TREE :
- S_ISGITLINK(mode) ? OBJ_COMMIT :
- OBJ_BLOB;
-}
-
#define INIT_DB_QUIET 0x0001
#define INIT_DB_EXIST_OK 0x0002
@@ -626,13 +527,6 @@ int has_racy_timestamp(struct index_state *istate);
int ie_match_stat(struct index_state *, const struct cache_entry *, struct stat *, unsigned int);
int ie_modified(struct index_state *, const struct cache_entry *, struct stat *, unsigned int);
-#define HASH_WRITE_OBJECT 1
-#define HASH_FORMAT_CHECK 2
-#define HASH_RENORMALIZE 4
-#define HASH_SILENT 8
-int index_fd(struct index_state *istate, struct object_id *oid, int fd, struct stat *st, enum object_type type, const char *path, unsigned flags);
-int index_path(struct index_state *istate, struct object_id *oid, const char *path, struct stat *st, unsigned flags);
-
/*
* Record to sd the data from st that we use to check whether a file
* might have changed.
@@ -684,8 +578,6 @@ void set_alternate_index_output(const char *);
extern int verify_index_checksum;
extern int verify_ce_order;
-extern int quote_path_fully;
-
#define MTIME_CHANGED 0x0001
#define CTIME_CHANGED 0x0002
#define OWNER_CHANGED 0x0004
@@ -694,213 +586,6 @@ extern int quote_path_fully;
#define DATA_CHANGED 0x0020
#define TYPE_CHANGED 0x0040
-/*
- * Return an abbreviated sha1 unique within this repository's object database.
- * The result will be at least `len` characters long, and will be NUL
- * terminated.
- *
- * The non-`_r` version returns a static buffer which remains valid until 4
- * more calls to repo_find_unique_abbrev are made.
- *
- * The `_r` variant writes to a buffer supplied by the caller, which must be at
- * least `GIT_MAX_HEXSZ + 1` bytes. The return value is the number of bytes
- * written (excluding the NUL terminator).
- *
- * Note that while this version avoids the static buffer, it is not fully
- * reentrant, as it calls into other non-reentrant git code.
- */
-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);
-
-/*
- * Create the directory containing the named path, using care to be
- * somewhat safe against races. Return one of the scld_error values to
- * indicate success/failure. On error, set errno to describe the
- * problem.
- *
- * SCLD_VANISHED indicates that one of the ancestor directories of the
- * path existed at one point during the function call and then
- * suddenly vanished, probably because another process pruned the
- * directory while we were working. To be robust against this kind of
- * race, callers might want to try invoking the function again when it
- * returns SCLD_VANISHED.
- *
- * safe_create_leading_directories() temporarily changes path while it
- * is working but restores it before returning.
- * safe_create_leading_directories_const() doesn't modify path, even
- * temporarily. Both these variants adjust the permissions of the
- * created directories to honor core.sharedRepository, so they are best
- * suited for files inside the git dir. For working tree files, use
- * safe_create_leading_directories_no_share() instead, as it ignores
- * the core.sharedRepository setting.
- */
-enum scld_error {
- SCLD_OK = 0,
- SCLD_FAILED = -1,
- SCLD_PERMS = -2,
- SCLD_EXISTS = -3,
- SCLD_VANISHED = -4
-};
-enum scld_error safe_create_leading_directories(char *path);
-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);
-
-int git_open_cloexec(const char *name, int flags);
-#define git_open(name) git_open_cloexec(name, O_RDONLY)
-
-/**
- * unpack_loose_header() initializes the data stream needed to unpack
- * a loose object header.
- *
- * Returns:
- *
- * - ULHR_OK on success
- * - ULHR_BAD on error
- * - ULHR_TOO_LONG if the header was too long
- *
- * It will only parse up to MAX_HEADER_LEN bytes unless an optional
- * "hdrbuf" argument is non-NULL. This is intended for use with
- * OBJECT_INFO_ALLOW_UNKNOWN_TYPE to extract the bad type for (error)
- * reporting. The full header will be extracted to "hdrbuf" for use
- * with parse_loose_header(), ULHR_TOO_LONG will still be returned
- * from this function to indicate that the header was too long.
- */
-enum unpack_loose_header_result {
- ULHR_OK,
- ULHR_BAD,
- ULHR_TOO_LONG,
-};
-enum unpack_loose_header_result unpack_loose_header(git_zstream *stream,
- unsigned char *map,
- unsigned long mapsize,
- void *buffer,
- unsigned long bufsiz,
- struct strbuf *hdrbuf);
-
-/**
- * parse_loose_header() parses the starting "<type> <len>\0" of an
- * object. If it doesn't follow that format -1 is returned. To check
- * the validity of the <type> populate the "typep" in the "struct
- * object_info". It will be OBJ_BAD if the object type is unknown. The
- * parsed <len> can be retrieved via "oi->sizep", and from there
- * passed to unpack_loose_rest().
- */
-struct object_info;
-int parse_loose_header(const char *hdr, struct object_info *oi);
-
-/**
- * With in-core object data in "buf", rehash it to make sure the
- * object name actually matches "oid" to detect object corruption.
- *
- * A negative value indicates an error, usually that the OID is not
- * what we expected, but it might also indicate another error.
- */
-int check_object_signature(struct repository *r, const struct object_id *oid,
- void *map, unsigned long size,
- enum object_type type);
-
-/**
- * A streaming version of check_object_signature().
- * Try reading the object named with "oid" using
- * the streaming interface and rehash it to do the same.
- */
-int stream_object_signature(struct repository *r, const struct object_id *oid);
-
-int finalize_object_file(const char *tmpfile, const char *filename);
-
-/* Helper to check and "touch" a file */
-int check_and_freshen_file(const char *fn, int freshen);
-
-/* Convert to/from hex/sha1 representation */
-#define MINIMUM_ABBREV minimum_abbrev
-#define DEFAULT_ABBREV default_abbrev
-
-/* used when the code does not know or care what the default abbrev is */
-#define FALLBACK_DEFAULT_ABBREV 7
-
-struct object_context {
- unsigned short mode;
- /*
- * symlink_path is only used by get_tree_entry_follow_symlinks,
- * and only for symlinks that point outside the repository.
- */
- struct strbuf symlink_path;
- /*
- * If GET_OID_RECORD_PATH is set, this will record path (if any)
- * found when resolving the name. The caller is responsible for
- * releasing the memory.
- */
- char *path;
-};
-
-int repo_get_oid(struct repository *r, const char *str, struct object_id *oid);
-__attribute__((format (printf, 2, 3)))
-int get_oidf(struct object_id *oid, const char *fmt, ...);
-int repo_get_oid_commit(struct repository *r, const char *str, struct object_id *oid);
-int repo_get_oid_committish(struct repository *r, const char *str, struct object_id *oid);
-int repo_get_oid_tree(struct repository *r, const char *str, struct object_id *oid);
-int repo_get_oid_treeish(struct repository *r, const char *str, struct object_id *oid);
-int repo_get_oid_blob(struct repository *r, const char *str, struct object_id *oid);
-int repo_get_oid_mb(struct repository *r, const char *str, struct object_id *oid);
-void maybe_die_on_misspelt_object_name(struct repository *repo,
- const char *name,
- const char *prefix);
-enum get_oid_result get_oid_with_context(struct repository *repo, const char *str,
- unsigned flags, struct object_id *oid,
- struct object_context *oc);
-
-typedef int each_abbrev_fn(const struct object_id *oid, void *);
-int repo_for_each_abbrev(struct repository *r, const char *prefix, each_abbrev_fn, void *);
-
-int set_disambiguate_hint_config(const char *var, const char *value);
-
-/*
- * This reads short-hand syntax that not only evaluates to a commit
- * object name, but also can act as if the end user spelled the name
- * of the branch from the command line.
- *
- * - "@{-N}" finds the name of the Nth previous branch we were on, and
- * places the name of the branch in the given buf and returns the
- * number of characters parsed if successful.
- *
- * - "<branch>@{upstream}" finds the name of the other ref that
- * <branch> is configured to merge with (missing <branch> defaults
- * to the current branch), and places the name of the branch in the
- * given buf and returns the number of characters parsed if
- * successful.
- *
- * If the input is not of the accepted format, it returns a negative
- * number to signal an error.
- *
- * If the input was ok but there are not N branch switches in the
- * reflog, it returns 0.
- */
-#define INTERPRET_BRANCH_LOCAL (1<<0)
-#define INTERPRET_BRANCH_REMOTE (1<<1)
-#define INTERPRET_BRANCH_HEAD (1<<2)
-struct interpret_branch_name_options {
- /*
- * If "allowed" is non-zero, it is a treated as a bitfield of allowable
- * expansions: local branches ("refs/heads/"), remote branches
- * ("refs/remotes/"), or "HEAD". If no "allowed" bits are set, any expansion is
- * allowed, even ones to refs outside of those namespaces.
- */
- unsigned allowed;
-
- /*
- * If ^{upstream} or ^{push} (or equivalent) is requested, and the
- * branch in question does not have such a reference, return -1 instead
- * of die()-ing.
- */
- unsigned nonfatal_dangling_mark : 1;
-};
-int repo_interpret_branch_name(struct repository *r,
- const char *str, int len,
- struct strbuf *buf,
- const struct interpret_branch_name_options *options);
-
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,
@@ -908,21 +593,6 @@ int df_name_compare(const char *name1, size_t len1, int mode1,
int name_compare(const char *name1, size_t len1, const char *name2, size_t len2);
int cache_name_stage_compare(const char *name1, int len1, int stage1, const char *name2, int len2, int stage2);
-void *read_object_with_reference(struct repository *r,
- const struct object_id *oid,
- enum object_type required_type,
- unsigned long *size,
- struct object_id *oid_ret);
-
-struct object *repo_peel_to_type(struct repository *r,
- const char *name, int namelen,
- struct object *o, enum object_type);
-
-const char *git_editor(void);
-const char *git_sequence_editor(void);
-const char *git_pager(int stdout_is_tty);
-int is_terminal_dumb(void);
-
struct cache_def {
struct strbuf path;
int flags;
@@ -959,36 +629,15 @@ struct pack_entry {
struct packed_git *p;
};
-/*
- * Set this to 0 to prevent oid_object_info_extended() from fetching missing
- * blobs. This has a difference only if extensions.partialClone is set.
- *
- * Its default value is 1.
- */
-extern int fetch_if_missing;
-
/* Dumb servers support */
int update_server_info(int);
-extern const char *git_mailmap_file;
-extern const char *git_mailmap_blob;
-
#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);
-/* pager.c */
-void setup_pager(void);
-int pager_in_use(void);
-extern int pager_use_color;
-int term_columns(void);
-void term_clear_line(void);
-int decimal_width(uintmax_t);
-int check_pager_config(const char *cmd);
-void prepare_pager_args(struct child_process *, const char *pager);
-
/* base85 */
int decode_85(char *dst, const char *line, int linelen);
void encode_85(char *buf, const unsigned char *data, int bytes);
diff --git a/chdir-notify.c b/chdir-notify.c
index 929ec01b3a..0d7bc04607 100644
--- a/chdir-notify.c
+++ b/chdir-notify.c
@@ -1,8 +1,10 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "abspath.h"
#include "chdir-notify.h"
#include "list.h"
+#include "path.h"
#include "strbuf.h"
+#include "trace.h"
struct chdir_notify_entry {
const char *name;
diff --git a/checkout.c b/checkout.c
index 1247b88224..04238b2713 100644
--- a/checkout.c
+++ b/checkout.c
@@ -1,8 +1,10 @@
-#include "cache.h"
+#include "git-compat-util.h"
+#include "object-name.h"
#include "remote.h"
#include "refspec.h"
#include "checkout.h"
#include "config.h"
+#include "strbuf.h"
struct tracking_name_data {
/* const */ char *src_ref;
diff --git a/color.c b/color.c
index 672dcbb73a..6031998d3e 100644
--- a/color.c
+++ b/color.c
@@ -1,8 +1,10 @@
#include "cache.h"
#include "config.h"
#include "color.h"
+#include "editor.h"
#include "gettext.h"
#include "hex.h"
+#include "pager.h"
static int git_use_color_default = GIT_COLOR_AUTO;
int color_stdout_is_tty = -1;
diff --git a/column.c b/column.c
index fbf88639aa..ff2f0abf39 100644
--- a/column.c
+++ b/column.c
@@ -1,7 +1,8 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "config.h"
#include "column.h"
#include "string-list.h"
+#include "pager.h"
#include "parse-options.h"
#include "run-command.h"
#include "utf8.h"
diff --git a/combine-diff.c b/combine-diff.c
index 44ef6a1a81..f7e9fb5747 100644
--- a/combine-diff.c
+++ b/combine-diff.c
@@ -1,11 +1,13 @@
#include "cache.h"
#include "object-store.h"
#include "commit.h"
+#include "convert.h"
#include "blob.h"
#include "diff.h"
#include "diffcore.h"
#include "environment.h"
#include "hex.h"
+#include "object-name.h"
#include "quote.h"
#include "xdiff-interface.h"
#include "xdiff/xmacros.h"
@@ -14,6 +16,7 @@
#include "userdiff.h"
#include "oid-array.h"
#include "revision.h"
+#include "wrapper.h"
static int compare_paths(const struct combine_diff_path *one,
const struct diff_filespec *two)
diff --git a/commit-graph.c b/commit-graph.c
index b1e737c01b..43558b4d9b 100644
--- a/commit-graph.c
+++ b/commit-graph.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "config.h"
#include "gettext.h"
#include "hex.h"
@@ -11,7 +11,9 @@
#include "revision.h"
#include "hash-lookup.h"
#include "commit-graph.h"
+#include "object-file.h"
#include "object-store.h"
+#include "oid-array.h"
#include "alloc.h"
#include "hashmap.h"
#include "replace-object.h"
diff --git a/commit.c b/commit.c
index 6d844da9a6..878b4473e4 100644
--- a/commit.c
+++ b/commit.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "tag.h"
#include "commit.h"
#include "commit-graph.h"
@@ -6,6 +6,7 @@
#include "gettext.h"
#include "hex.h"
#include "repository.h"
+#include "object-name.h"
#include "object-store.h"
#include "pkt-line.h"
#include "utf8.h"
diff --git a/common-main.c b/common-main.c
index b83cb5cf06..f319317353 100644
--- a/common-main.c
+++ b/common-main.c
@@ -3,6 +3,7 @@
#include "gettext.h"
#include "attr.h"
#include "setup.h"
+#include "trace2.h"
/*
* Many parts of Git have subprograms communicate via pipe, expect the
diff --git a/compat/fsmonitor/fsm-listen-win32.c b/compat/fsmonitor/fsm-listen-win32.c
index 7b07b74ba5..677b1bbdec 100644
--- a/compat/fsmonitor/fsm-listen-win32.c
+++ b/compat/fsmonitor/fsm-listen-win32.c
@@ -4,6 +4,7 @@
#include "fsm-listen.h"
#include "fsmonitor--daemon.h"
#include "gettext.h"
+#include "trace2.h"
/*
* The documentation of ReadDirectoryChangesW() states that the maximum
diff --git a/compat/mingw.c b/compat/mingw.c
index 94c5a1daa4..abbc3faf32 100644
--- a/compat/mingw.c
+++ b/compat/mingw.c
@@ -12,6 +12,7 @@
#include "win32/lazyload.h"
#include "../config.h"
#include "../environment.h"
+#include "../trace2.h"
#include "../wrapper.h"
#include "dir.h"
#include "gettext.h"
diff --git a/compat/pread.c b/compat/pread.c
index 978cac4ec9..484e6d4c71 100644
--- a/compat/pread.c
+++ b/compat/pread.c
@@ -1,4 +1,5 @@
#include "../git-compat-util.h"
+#include "../wrapper.h"
ssize_t git_pread(int fd, void *buf, size_t count, off_t offset)
{
diff --git a/compat/simple-ipc/ipc-unix-socket.c b/compat/simple-ipc/ipc-unix-socket.c
index 152db60a31..b2f4f22ce4 100644
--- a/compat/simple-ipc/ipc-unix-socket.c
+++ b/compat/simple-ipc/ipc-unix-socket.c
@@ -1,9 +1,10 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "gettext.h"
#include "simple-ipc.h"
#include "strbuf.h"
#include "pkt-line.h"
#include "thread-utils.h"
+#include "trace2.h"
#include "unix-socket.h"
#include "unix-stream-server.h"
diff --git a/compat/simple-ipc/ipc-win32.c b/compat/simple-ipc/ipc-win32.c
index 997f614434..6adce3c650 100644
--- a/compat/simple-ipc/ipc-win32.c
+++ b/compat/simple-ipc/ipc-win32.c
@@ -5,6 +5,8 @@
#include "strbuf.h"
#include "pkt-line.h"
#include "thread-utils.h"
+#include "trace.h"
+#include "trace2.h"
#include "accctrl.h"
#include "aclapi.h"
diff --git a/compat/win32/trace2_win32_process_info.c b/compat/win32/trace2_win32_process_info.c
index a53fd92434..e3e895c78a 100644
--- a/compat/win32/trace2_win32_process_info.c
+++ b/compat/win32/trace2_win32_process_info.c
@@ -1,5 +1,6 @@
#include "../../cache.h"
#include "../../json-writer.h"
+#include "../../trace2.h"
#include "lazyload.h"
#include <Psapi.h>
#include <tlHelp32.h>
diff --git a/config.c b/config.c
index fc929de3e0..43b0d3fb57 100644
--- a/config.c
+++ b/config.c
@@ -7,27 +7,33 @@
*/
#include "cache.h"
#include "abspath.h"
+#include "advice.h"
#include "alloc.h"
#include "date.h"
#include "branch.h"
#include "config.h"
+#include "convert.h"
#include "environment.h"
#include "gettext.h"
#include "ident.h"
#include "repository.h"
#include "lockfile.h"
+#include "mailmap.h"
#include "exec-cmd.h"
#include "strbuf.h"
#include "quote.h"
#include "hashmap.h"
#include "string-list.h"
+#include "object-name.h"
#include "object-store.h"
+#include "pager.h"
#include "utf8.h"
#include "dir.h"
#include "color.h"
#include "replace-object.h"
#include "refs.h"
#include "setup.h"
+#include "trace2.h"
#include "worktree.h"
#include "wrapper.h"
#include "write-or-die.h"
diff --git a/connect.c b/connect.c
index c0c8a38178..fd3179e545 100644
--- a/connect.c
+++ b/connect.c
@@ -1,5 +1,4 @@
#include "git-compat-util.h"
-#include "cache.h"
#include "config.h"
#include "environment.h"
#include "gettext.h"
@@ -14,6 +13,7 @@
#include "string-list.h"
#include "oid-array.h"
#include "transport.h"
+#include "trace2.h"
#include "strbuf.h"
#include "version.h"
#include "protocol.h"
diff --git a/convert.c b/convert.c
index da06e2f51c..5a2ea5308d 100644
--- a/convert.c
+++ b/convert.c
@@ -1,5 +1,7 @@
#include "cache.h"
+#include "advice.h"
#include "config.h"
+#include "convert.h"
#include "gettext.h"
#include "hex.h"
#include "object-store.h"
@@ -9,6 +11,7 @@
#include "sigchain.h"
#include "pkt-line.h"
#include "sub-process.h"
+#include "trace.h"
#include "utf8.h"
#include "ll-merge.h"
#include "wrapper.h"
diff --git a/daemon.c b/daemon.c
index db8a31a6ea..75c3c06457 100644
--- a/daemon.c
+++ b/daemon.c
@@ -4,6 +4,7 @@
#include "config.h"
#include "environment.h"
#include "pkt-line.h"
+#include "protocol.h"
#include "run-command.h"
#include "setup.h"
#include "strbuf.h"
diff --git a/date.c b/date.c
index 7c8650f799..e867ebf6b7 100644
--- a/date.c
+++ b/date.c
@@ -7,6 +7,7 @@
#include "cache.h"
#include "date.h"
#include "gettext.h"
+#include "pager.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 40f2ccfb55..c824a5f6a4 100644
--- a/delta-islands.c
+++ b/delta-islands.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "alloc.h"
#include "attr.h"
#include "object.h"
diff --git a/diff-lib.c b/diff-lib.c
index 4169dd8cb1..d292405a26 100644
--- a/diff-lib.c
+++ b/diff-lib.c
@@ -8,11 +8,13 @@
#include "diffcore.h"
#include "gettext.h"
#include "hex.h"
+#include "object-name.h"
#include "revision.h"
#include "cache-tree.h"
#include "unpack-trees.h"
#include "refs.h"
#include "submodule.h"
+#include "trace.h"
#include "dir.h"
#include "fsmonitor.h"
#include "commit-reach.h"
diff --git a/diff-no-index.c b/diff-no-index.c
index 934a24bee5..4296940f90 100644
--- a/diff-no-index.c
+++ b/diff-no-index.c
@@ -4,7 +4,7 @@
* Copyright (c) 2008 by Junio C Hamano
*/
-#include "cache.h"
+#include "git-compat-util.h"
#include "abspath.h"
#include "color.h"
#include "commit.h"
diff --git a/diff.c b/diff.c
index 78b0fdd8ca..067846b13c 100644
--- a/diff.c
+++ b/diff.c
@@ -5,6 +5,7 @@
#include "abspath.h"
#include "alloc.h"
#include "config.h"
+#include "convert.h"
#include "environment.h"
#include "gettext.h"
#include "tempfile.h"
@@ -28,11 +29,15 @@
#include "string-list.h"
#include "strvec.h"
#include "graph.h"
+#include "oid-array.h"
#include "packfile.h"
+#include "pager.h"
#include "parse-options.h"
#include "help.h"
#include "promisor-remote.h"
#include "dir.h"
+#include "object-file.h"
+#include "object-name.h"
#include "setup.h"
#include "strmap.h"
#include "wrapper.h"
diff --git a/dir.c b/dir.c
index 18fd14c46b..aa840995c4 100644
--- a/dir.c
+++ b/dir.c
@@ -9,9 +9,11 @@
#include "abspath.h"
#include "alloc.h"
#include "config.h"
+#include "convert.h"
#include "dir.h"
#include "environment.h"
#include "gettext.h"
+#include "object-file.h"
#include "object-store.h"
#include "attr.h"
#include "refs.h"
@@ -23,6 +25,7 @@
#include "fsmonitor.h"
#include "setup.h"
#include "submodule-config.h"
+#include "trace2.h"
#include "wrapper.h"
/*
diff --git a/editor.c b/editor.c
index d632d79066..b34e10606d 100644
--- a/editor.c
+++ b/editor.c
@@ -1,12 +1,16 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "abspath.h"
+#include "advice.h"
#include "config.h"
+#include "editor.h"
#include "environment.h"
#include "gettext.h"
+#include "pager.h"
#include "strbuf.h"
#include "strvec.h"
#include "run-command.h"
#include "sigchain.h"
+#include "wrapper.h"
#ifndef DEFAULT_EDITOR
#define DEFAULT_EDITOR "vi"
@@ -129,3 +133,31 @@ int launch_sequence_editor(const char *path, struct strbuf *buffer,
{
return launch_specified_editor(git_sequence_editor(), path, buffer, env);
}
+
+int strbuf_edit_interactively(struct strbuf *buffer, const char *path,
+ const char *const *env)
+{
+ char *path2 = NULL;
+ int fd, res = 0;
+
+ if (!is_absolute_path(path))
+ path = path2 = xstrdup(git_path("%s", path));
+
+ fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0666);
+ if (fd < 0)
+ res = error_errno(_("could not open '%s' for writing"), path);
+ else if (write_in_full(fd, buffer->buf, buffer->len) < 0) {
+ res = error_errno(_("could not write to '%s'"), path);
+ close(fd);
+ } else if (close(fd) < 0)
+ res = error_errno(_("could not close '%s'"), path);
+ else {
+ strbuf_reset(buffer);
+ if (launch_editor(path, buffer, env) < 0)
+ res = error_errno(_("could not edit '%s'"), path);
+ unlink(path);
+ }
+
+ free(path2);
+ return res;
+}
diff --git a/editor.h b/editor.h
new file mode 100644
index 0000000000..8016bb5e00
--- /dev/null
+++ b/editor.h
@@ -0,0 +1,34 @@
+#ifndef EDITOR_H
+#define EDITOR_H
+
+struct strbuf;
+
+const char *git_editor(void);
+const char *git_sequence_editor(void);
+int is_terminal_dumb(void);
+
+/**
+ * Launch the user preferred editor to edit a file and fill the buffer
+ * with the file's contents upon the user completing their editing. The
+ * third argument can be used to set the environment which the editor is
+ * run in. If the buffer is NULL the editor is launched as usual but the
+ * file's contents are not read into the buffer upon completion.
+ */
+int launch_editor(const char *path, struct strbuf *buffer,
+ const char *const *env);
+
+int launch_sequence_editor(const char *path, struct strbuf *buffer,
+ const char *const *env);
+
+/*
+ * In contrast to `launch_editor()`, this function writes out the contents
+ * of the specified file first, then clears the `buffer`, then launches
+ * the editor and reads back in the file contents into the `buffer`.
+ * Finally, it deletes the temporary file.
+ *
+ * If `path` is relative, it refers to a file in the `.git` directory.
+ */
+int strbuf_edit_interactively(struct strbuf *buffer, const char *path,
+ const char *const *env);
+
+#endif
diff --git a/environment.c b/environment.c
index 63c697e7e9..8a96997539 100644
--- a/environment.c
+++ b/environment.c
@@ -10,6 +10,7 @@
#include "cache.h"
#include "abspath.h"
#include "branch.h"
+#include "convert.h"
#include "environment.h"
#include "gettext.h"
#include "repository.h"
@@ -18,12 +19,14 @@
#include "fmt-merge-msg.h"
#include "commit.h"
#include "strvec.h"
+#include "object-file.h"
#include "object-store.h"
#include "replace-object.h"
#include "tmp-objdir.h"
#include "chdir-notify.h"
#include "setup.h"
#include "shallow.h"
+#include "trace.h"
#include "wrapper.h"
#include "write-or-die.h"
@@ -56,7 +59,6 @@ size_t packed_git_window_size = DEFAULT_PACKED_GIT_WINDOW_SIZE;
size_t packed_git_limit = DEFAULT_PACKED_GIT_LIMIT;
size_t delta_base_cache_limit = 96 * 1024 * 1024;
unsigned long big_file_threshold = 512 * 1024 * 1024;
-int pager_use_color = 1;
const char *editor_program;
const char *askpass_program;
const char *excludes_file;
diff --git a/exec-cmd.c b/exec-cmd.c
index fae0d4b244..6f61846389 100644
--- a/exec-cmd.c
+++ b/exec-cmd.c
@@ -5,6 +5,8 @@
#include "gettext.h"
#include "quote.h"
#include "strvec.h"
+#include "trace.h"
+#include "trace2.h"
#if defined(RUNTIME_PREFIX)
diff --git a/fetch-pack.c b/fetch-pack.c
index 368f2ed25a..677102465a 100644
--- a/fetch-pack.c
+++ b/fetch-pack.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "alloc.h"
#include "repository.h"
#include "config.h"
@@ -17,6 +17,7 @@
#include "remote.h"
#include "run-command.h"
#include "connect.h"
+#include "trace2.h"
#include "transport.h"
#include "version.h"
#include "oid-array.h"
diff --git a/fmt-merge-msg.c b/fmt-merge-msg.c
index 1886c92ddb..5af0d4715b 100644
--- a/fmt-merge-msg.c
+++ b/fmt-merge-msg.c
@@ -1,8 +1,9 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "alloc.h"
#include "config.h"
#include "environment.h"
#include "refs.h"
+#include "object-name.h"
#include "object-store.h"
#include "diff.h"
#include "diff-merges.h"
diff --git a/fsck.c b/fsck.c
index 8ef1b02234..adbe8bf59e 100644
--- a/fsck.c
+++ b/fsck.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "alloc.h"
#include "hex.h"
#include "object-store.h"
diff --git a/fsmonitor.c b/fsmonitor.c
index c956a347a2..28c083d4d8 100644
--- a/fsmonitor.c
+++ b/fsmonitor.c
@@ -7,6 +7,7 @@
#include "fsmonitor-ipc.h"
#include "run-command.h"
#include "strbuf.h"
+#include "trace2.h"
#define INDEX_EXTENSION_VERSION1 (1)
#define INDEX_EXTENSION_VERSION2 (2)
diff --git a/fsmonitor.h b/fsmonitor.h
index 778707b131..c67e0ebc09 100644
--- a/fsmonitor.h
+++ b/fsmonitor.h
@@ -4,6 +4,7 @@
#include "cache.h"
#include "dir.h"
#include "fsmonitor-settings.h"
+#include "trace.h"
extern struct trace_key trace_fsmonitor;
diff --git a/git-compat-util.h b/git-compat-util.h
index 4a200a9fb4..5b2b99c17c 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -878,12 +878,6 @@ int git_lstat(const char *, struct stat *);
#define pread git_pread
ssize_t git_pread(int fd, void *buf, size_t count, off_t offset);
#endif
-/*
- * Forward decl that will remind us if its twin in cache.h changes.
- * This function is used in compat/pread.c. But we can't include
- * cache.h there.
- */
-ssize_t read_in_full(int fd, void *buf, size_t count);
#ifdef NO_SETENV
#define setenv gitsetenv
diff --git a/zlib.c b/git-zlib.c
index d594cba3fc..d43bbeb6da 100644
--- a/zlib.c
+++ b/git-zlib.c
@@ -2,7 +2,8 @@
* zlib wrappers to make sure we don't silently miss errors
* at init time.
*/
-#include "cache.h"
+#include "git-compat-util.h"
+#include "git-zlib.h"
static const char *zerr_to_string(int status)
{
diff --git a/git-zlib.h b/git-zlib.h
new file mode 100644
index 0000000000..d8a670aff9
--- /dev/null
+++ b/git-zlib.h
@@ -0,0 +1,28 @@
+#ifndef GIT_ZLIB_H
+#define GIT_ZLIB_H
+
+typedef struct git_zstream {
+ z_stream z;
+ unsigned long avail_in;
+ unsigned long avail_out;
+ unsigned long total_in;
+ unsigned long total_out;
+ unsigned char *next_in;
+ unsigned char *next_out;
+} git_zstream;
+
+void git_inflate_init(git_zstream *);
+void git_inflate_init_gzip_only(git_zstream *);
+void git_inflate_end(git_zstream *);
+int git_inflate(git_zstream *, int flush);
+
+void git_deflate_init(git_zstream *, int level);
+void git_deflate_init_gzip(git_zstream *, int level);
+void git_deflate_init_raw(git_zstream *, int level);
+void git_deflate_end(git_zstream *);
+int git_deflate_abort(git_zstream *);
+int git_deflate_end_gently(git_zstream *);
+int git_deflate(git_zstream *, int flush);
+unsigned long git_deflate_bound(git_zstream *, unsigned long);
+
+#endif /* GIT_ZLIB_H */
diff --git a/git.c b/git.c
index de681f4f7c..45899be826 100644
--- a/git.c
+++ b/git.c
@@ -4,11 +4,14 @@
#include "exec-cmd.h"
#include "gettext.h"
#include "help.h"
+#include "pager.h"
#include "run-command.h"
#include "alias.h"
#include "replace-object.h"
#include "setup.h"
#include "shallow.h"
+#include "trace.h"
+#include "trace2.h"
#define RUN_SETUP (1<<0)
#define RUN_SETUP_GENTLY (1<<1)
diff --git a/grep.c b/grep.c
index b86462a12a..073559f2cd 100644
--- a/grep.c
+++ b/grep.c
@@ -11,6 +11,7 @@
#include "commit.h"
#include "quote.h"
#include "help.h"
+#include "wrapper.h"
static int grep_source_load(struct grep_source *gs);
static int grep_source_is_binary(struct grep_source *gs,
diff --git a/http-backend.c b/http-backend.c
index 89aad1b42c..ac146d85c5 100644
--- a/http-backend.c
+++ b/http-backend.c
@@ -1,7 +1,8 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "alloc.h"
#include "config.h"
#include "environment.h"
+#include "git-zlib.h"
#include "hex.h"
#include "repository.h"
#include "refs.h"
diff --git a/http-fetch.c b/http-fetch.c
index c874d3402d..fffda59267 100644
--- a/http-fetch.c
+++ b/http-fetch.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "config.h"
#include "exec-cmd.h"
#include "gettext.h"
diff --git a/http-push.c b/http-push.c
index 88b70f2c44..76ab5dbb09 100644
--- a/http-push.c
+++ b/http-push.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "environment.h"
#include "hex.h"
#include "repository.h"
diff --git a/http-walker.c b/http-walker.c
index e5dadae377..bba306b2d5 100644
--- a/http-walker.c
+++ b/http-walker.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "repository.h"
#include "commit.h"
#include "hex.h"
diff --git a/http.c b/http.c
index d5d82c5230..bb58bb3e6a 100644
--- a/http.c
+++ b/http.c
@@ -12,10 +12,12 @@
#include "version.h"
#include "pkt-line.h"
#include "gettext.h"
+#include "trace.h"
#include "transport.h"
#include "packfile.h"
#include "protocol.h"
#include "string-list.h"
+#include "object-file.h"
#include "object-store.h"
static struct trace_key trace_curl = TRACE_KEY_INIT(CURL);
diff --git a/http.h b/http.h
index 77c042706c..3a409bccd4 100644
--- a/http.h
+++ b/http.h
@@ -1,7 +1,9 @@
#ifndef HTTP_H
#define HTTP_H
-#include "cache.h"
+struct packed_git;
+
+#include "git-zlib.h"
#include <curl/curl.h>
#include <curl/easy.h>
diff --git a/list-objects-filter.c b/list-objects-filter.c
index 298ca08711..5d270ce598 100644
--- a/list-objects-filter.c
+++ b/list-objects-filter.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "alloc.h"
#include "dir.h"
#include "gettext.h"
@@ -15,6 +15,7 @@
#include "list-objects-filter-options.h"
#include "oidmap.h"
#include "oidset.h"
+#include "object-name.h"
#include "object-store.h"
/* Remember to update object flag allocation in object.h */
diff --git a/list-objects.c b/list-objects.c
index df18d10306..eecca721ac 100644
--- a/list-objects.c
+++ b/list-objects.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "tag.h"
#include "commit.h"
#include "gettext.h"
diff --git a/ll-merge.c b/ll-merge.c
index 8be38d3bd4..28bc94c45d 100644
--- a/ll-merge.c
+++ b/ll-merge.c
@@ -6,6 +6,7 @@
#include "cache.h"
#include "config.h"
+#include "convert.h"
#include "attr.h"
#include "xdiff-interface.h"
#include "run-command.h"
diff --git a/log-tree.c b/log-tree.c
index dbb088473e..143b86fecf 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -1,9 +1,10 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "commit-reach.h"
#include "config.h"
#include "diff.h"
#include "environment.h"
#include "hex.h"
+#include "object-name.h"
#include "object-store.h"
#include "repository.h"
#include "tmp-objdir.h"
diff --git a/mailmap.c b/mailmap.c
index 74fd9db448..5dc5223c43 100644
--- a/mailmap.c
+++ b/mailmap.c
@@ -1,7 +1,8 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "environment.h"
#include "string-list.h"
#include "mailmap.h"
+#include "object-name.h"
#include "object-store.h"
#include "setup.h"
diff --git a/mailmap.h b/mailmap.h
index 7e99fccb46..0f8fd2c586 100644
--- a/mailmap.h
+++ b/mailmap.h
@@ -3,6 +3,9 @@
struct string_list;
+extern const char *git_mailmap_file;
+extern const char *git_mailmap_blob;
+
int read_mailmap(struct string_list *map);
void clear_mailmap(struct string_list *map);
diff --git a/merge-ort.c b/merge-ort.c
index 5bf64354d1..2c6a9ed9a4 100644
--- a/merge-ort.c
+++ b/merge-ort.c
@@ -31,12 +31,16 @@
#include "hex.h"
#include "entry.h"
#include "ll-merge.h"
+#include "mem-pool.h"
+#include "object-name.h"
#include "object-store.h"
+#include "oid-array.h"
#include "promisor-remote.h"
#include "revision.h"
#include "strmap.h"
#include "submodule-config.h"
#include "submodule.h"
+#include "trace2.h"
#include "tree.h"
#include "unpack-trees.h"
#include "xdiff-interface.h"
diff --git a/merge-recursive.c b/merge-recursive.c
index ed5534eb57..9875bdb11c 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -22,6 +22,8 @@
#include "hex.h"
#include "ll-merge.h"
#include "lockfile.h"
+#include "object-file.h"
+#include "object-name.h"
#include "object-store.h"
#include "repository.h"
#include "revision.h"
diff --git a/midx.c b/midx.c
index 9af3e5de88..2d0da57328 100644
--- a/midx.c
+++ b/midx.c
@@ -8,6 +8,7 @@
#include "hex.h"
#include "lockfile.h"
#include "packfile.h"
+#include "object-file.h"
#include "object-store.h"
#include "hash-lookup.h"
#include "midx.h"
diff --git a/name-hash.c b/name-hash.c
index 2c2861efd1..fb13716e43 100644
--- a/name-hash.c
+++ b/name-hash.c
@@ -9,6 +9,7 @@
#include "environment.h"
#include "gettext.h"
#include "thread-utils.h"
+#include "trace.h"
#include "trace2.h"
#include "sparse-index.h"
diff --git a/notes-merge.c b/notes-merge.c
index c40107c3aa..233e49e319 100644
--- a/notes-merge.c
+++ b/notes-merge.c
@@ -1,7 +1,10 @@
-#include "cache.h"
+#include "git-compat-util.h"
+#include "advice.h"
#include "commit.h"
#include "gettext.h"
#include "refs.h"
+#include "object-file.h"
+#include "object-name.h"
#include "object-store.h"
#include "repository.h"
#include "diff.h"
@@ -13,6 +16,7 @@
#include "notes.h"
#include "notes-merge.h"
#include "strbuf.h"
+#include "trace.h"
#include "notes-utils.h"
#include "commit-reach.h"
#include "wrapper.h"
diff --git a/notes.c b/notes.c
index 45fb7f22d1..02f1aa39ae 100644
--- a/notes.c
+++ b/notes.c
@@ -1,8 +1,9 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "config.h"
#include "environment.h"
#include "hex.h"
#include "notes.h"
+#include "object-name.h"
#include "object-store.h"
#include "blob.h"
#include "tree.h"
diff --git a/object-file.c b/object-file.c
index 76b22ca75c..8163ddbadd 100644
--- a/object-file.c
+++ b/object-file.c
@@ -10,6 +10,7 @@
#include "abspath.h"
#include "alloc.h"
#include "config.h"
+#include "convert.h"
#include "environment.h"
#include "gettext.h"
#include "hex.h"
@@ -35,6 +36,7 @@
#include "mergesort.h"
#include "quote.h"
#include "packfile.h"
+#include "object-file.h"
#include "object-store.h"
#include "promisor-remote.h"
#include "setup.h"
diff --git a/object-file.h b/object-file.h
new file mode 100644
index 0000000000..e0cfc3a5db
--- /dev/null
+++ b/object-file.h
@@ -0,0 +1,129 @@
+#ifndef OBJECT_FILE_H
+#define OBJECT_FILE_H
+
+#include "git-zlib.h"
+#include "object.h"
+
+/*
+ * Set this to 0 to prevent oid_object_info_extended() from fetching missing
+ * blobs. This has a difference only if extensions.partialClone is set.
+ *
+ * Its default value is 1.
+ */
+extern int fetch_if_missing;
+
+#define HASH_WRITE_OBJECT 1
+#define HASH_FORMAT_CHECK 2
+#define HASH_RENORMALIZE 4
+#define HASH_SILENT 8
+int index_fd(struct index_state *istate, struct object_id *oid, int fd, struct stat *st, enum object_type type, const char *path, unsigned flags);
+int index_path(struct index_state *istate, struct object_id *oid, const char *path, struct stat *st, unsigned flags);
+
+/*
+ * Create the directory containing the named path, using care to be
+ * somewhat safe against races. Return one of the scld_error values to
+ * indicate success/failure. On error, set errno to describe the
+ * problem.
+ *
+ * SCLD_VANISHED indicates that one of the ancestor directories of the
+ * path existed at one point during the function call and then
+ * suddenly vanished, probably because another process pruned the
+ * directory while we were working. To be robust against this kind of
+ * race, callers might want to try invoking the function again when it
+ * returns SCLD_VANISHED.
+ *
+ * safe_create_leading_directories() temporarily changes path while it
+ * is working but restores it before returning.
+ * safe_create_leading_directories_const() doesn't modify path, even
+ * temporarily. Both these variants adjust the permissions of the
+ * created directories to honor core.sharedRepository, so they are best
+ * suited for files inside the git dir. For working tree files, use
+ * safe_create_leading_directories_no_share() instead, as it ignores
+ * the core.sharedRepository setting.
+ */
+enum scld_error {
+ SCLD_OK = 0,
+ SCLD_FAILED = -1,
+ SCLD_PERMS = -2,
+ SCLD_EXISTS = -3,
+ SCLD_VANISHED = -4
+};
+enum scld_error safe_create_leading_directories(char *path);
+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);
+
+int git_open_cloexec(const char *name, int flags);
+#define git_open(name) git_open_cloexec(name, O_RDONLY)
+
+/**
+ * unpack_loose_header() initializes the data stream needed to unpack
+ * a loose object header.
+ *
+ * Returns:
+ *
+ * - ULHR_OK on success
+ * - ULHR_BAD on error
+ * - ULHR_TOO_LONG if the header was too long
+ *
+ * It will only parse up to MAX_HEADER_LEN bytes unless an optional
+ * "hdrbuf" argument is non-NULL. This is intended for use with
+ * OBJECT_INFO_ALLOW_UNKNOWN_TYPE to extract the bad type for (error)
+ * reporting. The full header will be extracted to "hdrbuf" for use
+ * with parse_loose_header(), ULHR_TOO_LONG will still be returned
+ * from this function to indicate that the header was too long.
+ */
+enum unpack_loose_header_result {
+ ULHR_OK,
+ ULHR_BAD,
+ ULHR_TOO_LONG,
+};
+enum unpack_loose_header_result unpack_loose_header(git_zstream *stream,
+ unsigned char *map,
+ unsigned long mapsize,
+ void *buffer,
+ unsigned long bufsiz,
+ struct strbuf *hdrbuf);
+
+/**
+ * parse_loose_header() parses the starting "<type> <len>\0" of an
+ * object. If it doesn't follow that format -1 is returned. To check
+ * the validity of the <type> populate the "typep" in the "struct
+ * object_info". It will be OBJ_BAD if the object type is unknown. The
+ * parsed <len> can be retrieved via "oi->sizep", and from there
+ * passed to unpack_loose_rest().
+ */
+struct object_info;
+int parse_loose_header(const char *hdr, struct object_info *oi);
+
+/**
+ * With in-core object data in "buf", rehash it to make sure the
+ * object name actually matches "oid" to detect object corruption.
+ *
+ * A negative value indicates an error, usually that the OID is not
+ * what we expected, but it might also indicate another error.
+ */
+int check_object_signature(struct repository *r, const struct object_id *oid,
+ void *map, unsigned long size,
+ enum object_type type);
+
+/**
+ * A streaming version of check_object_signature().
+ * Try reading the object named with "oid" using
+ * the streaming interface and rehash it to do the same.
+ */
+int stream_object_signature(struct repository *r, const struct object_id *oid);
+
+int finalize_object_file(const char *tmpfile, const char *filename);
+
+/* Helper to check and "touch" a file */
+int check_and_freshen_file(const char *fn, int freshen);
+
+void *read_object_with_reference(struct repository *r,
+ const struct object_id *oid,
+ enum object_type required_type,
+ unsigned long *size,
+ struct object_id *oid_ret);
+
+#endif /* OBJECT_FILE_H */
diff --git a/object-name.c b/object-name.c
index f1edc0035b..538e8a8f62 100644
--- a/object-name.c
+++ b/object-name.c
@@ -1,4 +1,6 @@
#include "cache.h"
+#include "object-name.h"
+#include "advice.h"
#include "config.h"
#include "environment.h"
#include "gettext.h"
diff --git a/object-name.h b/object-name.h
new file mode 100644
index 0000000000..1d63698f42
--- /dev/null
+++ b/object-name.h
@@ -0,0 +1,121 @@
+#ifndef OBJECT_NAME_H
+#define OBJECT_NAME_H
+
+#include "object.h"
+#include "strbuf.h"
+
+struct object_id;
+struct repository;
+
+struct object_context {
+ unsigned short mode;
+ /*
+ * symlink_path is only used by get_tree_entry_follow_symlinks,
+ * and only for symlinks that point outside the repository.
+ */
+ struct strbuf symlink_path;
+ /*
+ * If GET_OID_RECORD_PATH is set, this will record path (if any)
+ * found when resolving the name. The caller is responsible for
+ * releasing the memory.
+ */
+ char *path;
+};
+
+/*
+ * Return an abbreviated sha1 unique within this repository's object database.
+ * The result will be at least `len` characters long, and will be NUL
+ * terminated.
+ *
+ * The non-`_r` version returns a static buffer which remains valid until 4
+ * more calls to repo_find_unique_abbrev are made.
+ *
+ * The `_r` variant writes to a buffer supplied by the caller, which must be at
+ * least `GIT_MAX_HEXSZ + 1` bytes. The return value is the number of bytes
+ * written (excluding the NUL terminator).
+ *
+ * Note that while this version avoids the static buffer, it is not fully
+ * reentrant, as it calls into other non-reentrant git code.
+ */
+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);
+
+int repo_get_oid(struct repository *r, const char *str, struct object_id *oid);
+__attribute__((format (printf, 2, 3)))
+int get_oidf(struct object_id *oid, const char *fmt, ...);
+int repo_get_oid_commit(struct repository *r, const char *str, struct object_id *oid);
+int repo_get_oid_committish(struct repository *r, const char *str, struct object_id *oid);
+int repo_get_oid_tree(struct repository *r, const char *str, struct object_id *oid);
+int repo_get_oid_treeish(struct repository *r, const char *str, struct object_id *oid);
+int repo_get_oid_blob(struct repository *r, const char *str, struct object_id *oid);
+int repo_get_oid_mb(struct repository *r, const char *str, struct object_id *oid);
+void maybe_die_on_misspelt_object_name(struct repository *repo,
+ const char *name,
+ const char *prefix);
+enum get_oid_result get_oid_with_context(struct repository *repo, const char *str,
+ unsigned flags, struct object_id *oid,
+ struct object_context *oc);
+
+
+typedef int each_abbrev_fn(const struct object_id *oid, void *);
+int repo_for_each_abbrev(struct repository *r, const char *prefix, each_abbrev_fn, void *);
+
+int set_disambiguate_hint_config(const char *var, const char *value);
+
+/*
+ * This reads short-hand syntax that not only evaluates to a commit
+ * object name, but also can act as if the end user spelled the name
+ * of the branch from the command line.
+ *
+ * - "@{-N}" finds the name of the Nth previous branch we were on, and
+ * places the name of the branch in the given buf and returns the
+ * number of characters parsed if successful.
+ *
+ * - "<branch>@{upstream}" finds the name of the other ref that
+ * <branch> is configured to merge with (missing <branch> defaults
+ * to the current branch), and places the name of the branch in the
+ * given buf and returns the number of characters parsed if
+ * successful.
+ *
+ * If the input is not of the accepted format, it returns a negative
+ * number to signal an error.
+ *
+ * If the input was ok but there are not N branch switches in the
+ * reflog, it returns 0.
+ */
+#define INTERPRET_BRANCH_LOCAL (1<<0)
+#define INTERPRET_BRANCH_REMOTE (1<<1)
+#define INTERPRET_BRANCH_HEAD (1<<2)
+struct interpret_branch_name_options {
+ /*
+ * If "allowed" is non-zero, it is a treated as a bitfield of allowable
+ * expansions: local branches ("refs/heads/"), remote branches
+ * ("refs/remotes/"), or "HEAD". If no "allowed" bits are set, any expansion is
+ * allowed, even ones to refs outside of those namespaces.
+ */
+ unsigned allowed;
+
+ /*
+ * If ^{upstream} or ^{push} (or equivalent) is requested, and the
+ * branch in question does not have such a reference, return -1 instead
+ * of die()-ing.
+ */
+ unsigned nonfatal_dangling_mark : 1;
+};
+int repo_interpret_branch_name(struct repository *r,
+ const char *str, int len,
+ struct strbuf *buf,
+ const struct interpret_branch_name_options *options);
+
+struct object *repo_peel_to_type(struct repository *r,
+ const char *name, int namelen,
+ struct object *o, enum object_type);
+
+/* Convert to/from hex/sha1 representation */
+#define MINIMUM_ABBREV minimum_abbrev
+#define DEFAULT_ABBREV default_abbrev
+
+/* used when the code does not know or care what the default abbrev is */
+#define FALLBACK_DEFAULT_ABBREV 7
+
+#endif /* OBJECT_NAME_H */
diff --git a/object.c b/object.c
index 45c9721b8c..6d4ef1524d 100644
--- a/object.c
+++ b/object.c
@@ -3,6 +3,7 @@
#include "hex.h"
#include "object.h"
#include "replace-object.h"
+#include "object-file.h"
#include "object-store.h"
#include "blob.h"
#include "tree.h"
diff --git a/object.h b/object.h
index fc45b158da..96e52e24fb 100644
--- a/object.h
+++ b/object.h
@@ -101,6 +101,50 @@ enum object_type {
OBJ_MAX
};
+/* unknown mode (impossible combination S_IFIFO|S_IFCHR) */
+#define S_IFINVALID 0030000
+
+/*
+ * A "directory link" is a link to another git directory.
+ *
+ * The value 0160000 is not normally a valid mode, and
+ * also just happens to be S_IFDIR + S_IFLNK
+ */
+#define S_IFGITLINK 0160000
+#define S_ISGITLINK(m) (((m) & S_IFMT) == S_IFGITLINK)
+
+#define S_ISSPARSEDIR(m) ((m) == S_IFDIR)
+
+static inline enum object_type object_type(unsigned int mode)
+{
+ return S_ISDIR(mode) ? OBJ_TREE :
+ S_ISGITLINK(mode) ? OBJ_COMMIT :
+ OBJ_BLOB;
+}
+
+#define ce_permissions(mode) (((mode) & 0100) ? 0755 : 0644)
+static inline unsigned int create_ce_mode(unsigned int mode)
+{
+ if (S_ISLNK(mode))
+ return S_IFLNK;
+ if (S_ISSPARSEDIR(mode))
+ return S_IFDIR;
+ if (S_ISDIR(mode) || S_ISGITLINK(mode))
+ return S_IFGITLINK;
+ return S_IFREG | ce_permissions(mode);
+}
+
+static inline unsigned int canon_mode(unsigned int mode)
+{
+ if (S_ISREG(mode))
+ return S_IFREG | ce_permissions(mode);
+ if (S_ISLNK(mode))
+ return S_IFLNK;
+ if (S_ISDIR(mode))
+ return S_IFDIR;
+ return S_IFGITLINK;
+}
+
/*
* The object type is stored in 3 bits.
*/
diff --git a/pack-bitmap-write.c b/pack-bitmap-write.c
index 7f5f489beb..faf67c94d3 100644
--- a/pack-bitmap-write.c
+++ b/pack-bitmap-write.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "alloc.h"
#include "environment.h"
#include "gettext.h"
diff --git a/pack-bitmap.c b/pack-bitmap.c
index b2e7d06d60..295b8abc19 100644
--- a/pack-bitmap.c
+++ b/pack-bitmap.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "alloc.h"
#include "commit.h"
#include "gettext.h"
@@ -15,6 +15,8 @@
#include "pack-objects.h"
#include "packfile.h"
#include "repository.h"
+#include "trace2.h"
+#include "object-file.h"
#include "object-store.h"
#include "list-objects-filter-options.h"
#include "midx.h"
diff --git a/pack-check.c b/pack-check.c
index 6974e40a95..049f2f0bfc 100644
--- a/pack-check.c
+++ b/pack-check.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "environment.h"
#include "hex.h"
#include "repository.h"
@@ -6,6 +6,7 @@
#include "pack-revindex.h"
#include "progress.h"
#include "packfile.h"
+#include "object-file.h"
#include "object-store.h"
struct idx_entry {
diff --git a/pack-mtimes.c b/pack-mtimes.c
index afed632190..020a37f8fe 100644
--- a/pack-mtimes.c
+++ b/pack-mtimes.c
@@ -1,6 +1,7 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "gettext.h"
#include "pack-mtimes.h"
+#include "object-file.h"
#include "object-store.h"
#include "packfile.h"
diff --git a/pack-revindex.c b/pack-revindex.c
index 03c7e81f9d..4d9bb41b4d 100644
--- a/pack-revindex.c
+++ b/pack-revindex.c
@@ -1,8 +1,10 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "gettext.h"
#include "pack-revindex.h"
+#include "object-file.h"
#include "object-store.h"
#include "packfile.h"
+#include "trace2.h"
#include "config.h"
#include "midx.h"
diff --git a/pack-write.c b/pack-write.c
index f171405495..9c37121be3 100644
--- a/pack-write.c
+++ b/pack-write.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "environment.h"
#include "gettext.h"
#include "hex.h"
@@ -9,6 +9,8 @@
#include "pack-mtimes.h"
#include "oidmap.h"
#include "pack-objects.h"
+#include "pack-revindex.h"
+#include "wrapper.h"
void reset_pack_idx_option(struct pack_idx_option *opts)
{
diff --git a/packfile.c b/packfile.c
index b120405ccc..9ae2278c22 100644
--- a/packfile.c
+++ b/packfile.c
@@ -15,11 +15,14 @@
#include "commit.h"
#include "object.h"
#include "tag.h"
+#include "trace.h"
#include "tree-walk.h"
#include "tree.h"
+#include "object-file.h"
#include "object-store.h"
#include "midx.h"
#include "commit-graph.h"
+#include "pack-revindex.h"
#include "promisor-remote.h"
#include "wrapper.h"
diff --git a/pager.c b/pager.c
index b66bbff278..63055d0873 100644
--- a/pager.c
+++ b/pager.c
@@ -1,9 +1,13 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "config.h"
+#include "editor.h"
+#include "pager.h"
#include "run-command.h"
#include "sigchain.h"
#include "alias.h"
+int pager_use_color = 1;
+
#ifndef DEFAULT_PAGER
#define DEFAULT_PAGER "less"
#endif
diff --git a/pager.h b/pager.h
new file mode 100644
index 0000000000..b77433026d
--- /dev/null
+++ b/pager.h
@@ -0,0 +1,17 @@
+#ifndef PAGER_H
+#define PAGER_H
+
+struct child_process;
+
+const char *git_pager(int stdout_is_tty);
+void setup_pager(void);
+int pager_in_use(void);
+int term_columns(void);
+void term_clear_line(void);
+int decimal_width(uintmax_t);
+int check_pager_config(const char *cmd);
+void prepare_pager_args(struct child_process *, const char *pager);
+
+extern int pager_use_color;
+
+#endif /* PAGER_H */
diff --git a/parse-options-cb.c b/parse-options-cb.c
index 10f2f75e83..298decf48f 100644
--- a/parse-options-cb.c
+++ b/parse-options-cb.c
@@ -1,11 +1,11 @@
#include "git-compat-util.h"
#include "parse-options.h"
#include "branch.h"
-#include "cache.h"
#include "commit.h"
#include "color.h"
#include "environment.h"
#include "gettext.h"
+#include "object-name.h"
#include "string-list.h"
#include "strvec.h"
#include "oid-array.h"
diff --git a/path.c b/path.c
index dff215ac69..7c1cd8182a 100644
--- a/path.c
+++ b/path.c
@@ -18,6 +18,7 @@
#include "object-store.h"
#include "lockfile.h"
#include "exec-cmd.h"
+#include "wrapper.h"
static int get_st_mode_bits(const char *path, int *mode)
{
diff --git a/pkt-line.c b/pkt-line.c
index 36ae0fea4a..3561d85358 100644
--- a/pkt-line.c
+++ b/pkt-line.c
@@ -3,6 +3,7 @@
#include "gettext.h"
#include "hex.h"
#include "run-command.h"
+#include "trace.h"
#include "wrapper.h"
#include "write-or-die.h"
diff --git a/preload-index.c b/preload-index.c
index 52544d004e..4abf9c983b 100644
--- a/preload-index.c
+++ b/preload-index.c
@@ -11,6 +11,7 @@
#include "progress.h"
#include "thread-utils.h"
#include "repository.h"
+#include "trace2.h"
/*
* Mostly randomly chosen maximum thread counts: we
diff --git a/pretty.c b/pretty.c
index 76fc4f61e4..0bb938021b 100644
--- a/pretty.c
+++ b/pretty.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "alloc.h"
#include "config.h"
#include "commit.h"
@@ -7,6 +7,7 @@
#include "hex.h"
#include "utf8.h"
#include "diff.h"
+#include "pager.h"
#include "revision.h"
#include "string-list.h"
#include "mailmap.h"
diff --git a/progress.c b/progress.c
index 44c784d75f..72d5e0c73c 100644
--- a/progress.c
+++ b/progress.c
@@ -9,10 +9,12 @@
*/
#define GIT_TEST_PROGRESS_ONLY
-#include "cache.h"
+#include "git-compat-util.h"
+#include "pager.h"
#include "progress.h"
#include "strbuf.h"
#include "trace.h"
+#include "trace2.h"
#include "utf8.h"
#include "config.h"
diff --git a/promisor-remote.c b/promisor-remote.c
index a8dbb788e8..1adcd6fb0a 100644
--- a/promisor-remote.c
+++ b/promisor-remote.c
@@ -1,9 +1,10 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "gettext.h"
#include "hex.h"
#include "object-store.h"
#include "promisor-remote.h"
#include "config.h"
+#include "trace2.h"
#include "transport.h"
#include "strvec.h"
#include "packfile.h"
diff --git a/protocol.c b/protocol.c
index bdb32e1eeb..079ba75acf 100644
--- a/protocol.c
+++ b/protocol.c
@@ -1,7 +1,8 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "config.h"
#include "environment.h"
#include "protocol.h"
+#include "trace2.h"
static enum protocol_version parse_protocol_version(const char *value)
{
diff --git a/protocol.h b/protocol.h
index cef1a4a01c..de66bf80f8 100644
--- a/protocol.h
+++ b/protocol.h
@@ -1,6 +1,27 @@
#ifndef PROTOCOL_H
#define PROTOCOL_H
+/*
+ * Intensive research over the course of many years has shown that
+ * port 9418 is totally unused by anything else. Or
+ *
+ * Your search - "port 9418" - did not match any documents.
+ *
+ * as www.google.com puts it.
+ *
+ * This port has been properly assigned for git use by IANA:
+ * git (Assigned-9418) [I06-050728-0001].
+ *
+ * git 9418/tcp git pack transfer service
+ * git 9418/udp git pack transfer service
+ *
+ * with Linus Torvalds <torvalds@osdl.org> as the point of
+ * contact. September 2005.
+ *
+ * See http://www.iana.org/assignments/port-numbers
+ */
+#define DEFAULT_GIT_PORT 9418
+
enum protocol_version {
protocol_unknown_version = -1,
protocol_v0 = 0,
diff --git a/quote.c b/quote.c
index 7ccb5a06cd..43c739671e 100644
--- a/quote.c
+++ b/quote.c
@@ -1,5 +1,6 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "alloc.h"
+#include "path.h"
#include "quote.h"
#include "strbuf.h"
#include "strvec.h"
diff --git a/quote.h b/quote.h
index 87ff458b06..0300c29104 100644
--- a/quote.h
+++ b/quote.h
@@ -3,6 +3,8 @@
struct strbuf;
+extern int quote_path_fully;
+
/* Help to copy the thing properly quoted for the shell safety.
* any single quote is replaced with '\'', any exclamation point
* is replaced with '\!', and the whole thing is enclosed in a
diff --git a/range-diff.c b/range-diff.c
index d1ed3b8ee5..a1e0cffb9f 100644
--- a/range-diff.c
+++ b/range-diff.c
@@ -2,6 +2,7 @@
#include "environment.h"
#include "gettext.h"
#include "range-diff.h"
+#include "object-name.h"
#include "string-list.h"
#include "run-command.h"
#include "strvec.h"
@@ -10,6 +11,7 @@
#include "linear-assignment.h"
#include "diffcore.h"
#include "commit.h"
+#include "pager.h"
#include "pretty.h"
#include "userdiff.h"
#include "apply.h"
diff --git a/read-cache.c b/read-cache.c
index 2a49178633..e919af3c77 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -14,15 +14,20 @@
#include "cache-tree.h"
#include "refs.h"
#include "dir.h"
+#include "object-file.h"
#include "object-store.h"
+#include "oid-array.h"
#include "tree.h"
#include "commit.h"
#include "blob.h"
#include "environment.h"
#include "gettext.h"
+#include "mem-pool.h"
+#include "object-name.h"
#include "resolve-undo.h"
#include "run-command.h"
#include "strbuf.h"
+#include "trace2.h"
#include "varint.h"
#include "split-index.h"
#include "utf8.h"
diff --git a/rebase-interactive.c b/rebase-interactive.c
index 79ed61b9fa..789f407361 100644
--- a/rebase-interactive.c
+++ b/rebase-interactive.c
@@ -1,5 +1,6 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "commit.h"
+#include "editor.h"
#include "environment.h"
#include "gettext.h"
#include "sequencer.h"
@@ -8,6 +9,7 @@
#include "commit-slab.h"
#include "config.h"
#include "dir.h"
+#include "object-name.h"
#include "wrapper.h"
static const char edit_todo_list_advice[] =
diff --git a/ref-filter.c b/ref-filter.c
index 72175612f3..10aab14f03 100644
--- a/ref-filter.c
+++ b/ref-filter.c
@@ -6,7 +6,9 @@
#include "parse-options.h"
#include "refs.h"
#include "wildmatch.h"
+#include "object-name.h"
#include "object-store.h"
+#include "oid-array.h"
#include "repository.h"
#include "commit.h"
#include "remote.h"
diff --git a/refs.c b/refs.c
index 0f369dbde7..d2a98e1c21 100644
--- a/refs.c
+++ b/refs.c
@@ -2,7 +2,8 @@
* The backend-independent part of the reference module.
*/
-#include "cache.h"
+#include "git-compat-util.h"
+#include "advice.h"
#include "alloc.h"
#include "config.h"
#include "environment.h"
@@ -15,6 +16,7 @@
#include "refs/refs-internal.h"
#include "run-command.h"
#include "hook.h"
+#include "object-name.h"
#include "object-store.h"
#include "object.h"
#include "tag.h"
diff --git a/refs/files-backend.c b/refs/files-backend.c
index e6a6971381..d0581ee41a 100644
--- a/refs/files-backend.c
+++ b/refs/files-backend.c
@@ -12,6 +12,7 @@
#include "../dir-iterator.h"
#include "../lockfile.h"
#include "../object.h"
+#include "../object-file.h"
#include "../dir.h"
#include "../chdir-notify.h"
#include "../setup.h"
diff --git a/refs/packed-backend.c b/refs/packed-backend.c
index 1eba1015dd..2333ed5a1f 100644
--- a/refs/packed-backend.c
+++ b/refs/packed-backend.c
@@ -9,6 +9,7 @@
#include "../iterator.h"
#include "../lockfile.h"
#include "../chdir-notify.h"
+#include "../wrapper.h"
#include "../write-or-die.h"
enum mmap_strategy {
diff --git a/refs/ref-cache.h b/refs/ref-cache.h
index 850d9d3744..cf4ad9070b 100644
--- a/refs/ref-cache.h
+++ b/refs/ref-cache.h
@@ -1,7 +1,7 @@
#ifndef REFS_REF_CACHE_H
#define REFS_REF_CACHE_H
-#include "cache.h"
+#include "hash.h"
struct ref_dir;
struct ref_store;
diff --git a/remote-curl.c b/remote-curl.c
index db3bc431fc..acf7b2bb40 100644
--- a/remote-curl.c
+++ b/remote-curl.c
@@ -21,6 +21,7 @@
#include "setup.h"
#include "protocol.h"
#include "quote.h"
+#include "trace2.h"
#include "transport.h"
#include "write-or-die.h"
diff --git a/remote.c b/remote.c
index 3a831cb530..0764fca0db 100644
--- a/remote.c
+++ b/remote.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "abspath.h"
#include "alloc.h"
#include "config.h"
@@ -9,6 +9,7 @@
#include "urlmatch.h"
#include "refs.h"
#include "refspec.h"
+#include "object-name.h"
#include "object-store.h"
#include "commit.h"
#include "diff.h"
diff --git a/repository.c b/repository.c
index f6d9f5db08..c53e480e32 100644
--- a/repository.c
+++ b/repository.c
@@ -14,6 +14,7 @@
#include "setup.h"
#include "submodule-config.h"
#include "sparse-index.h"
+#include "trace2.h"
#include "promisor-remote.h"
/* The main repository */
diff --git a/rerere.c b/rerere.c
index 5516e336d0..7abc94bf44 100644
--- a/rerere.c
+++ b/rerere.c
@@ -1,4 +1,4 @@
-#include "git-compat-util.h"
+#include "cache.h"
#include "abspath.h"
#include "alloc.h"
#include "config.h"
@@ -13,6 +13,7 @@
#include "ll-merge.h"
#include "attr.h"
#include "pathspec.h"
+#include "object-file.h"
#include "object-store.h"
#include "hash-lookup.h"
#include "strmap.h"
diff --git a/reset.c b/reset.c
index ab300923e0..48da0adf85 100644
--- a/reset.c
+++ b/reset.c
@@ -3,6 +3,7 @@
#include "gettext.h"
#include "hex.h"
#include "lockfile.h"
+#include "object-name.h"
#include "refs.h"
#include "reset.h"
#include "run-command.h"
diff --git a/resolve-undo.h b/resolve-undo.h
index 2b3f0f901e..d1ea972771 100644
--- a/resolve-undo.h
+++ b/resolve-undo.h
@@ -1,7 +1,12 @@
#ifndef RESOLVE_UNDO_H
#define RESOLVE_UNDO_H
-#include "cache.h"
+struct cache_entry;
+struct index_state;
+struct pathspec;
+struct string_list;
+
+#include "hash.h"
struct resolve_undo_info {
unsigned int mode[3];
diff --git a/revision.c b/revision.c
index 106ca1ce6c..b33cc1d106 100644
--- a/revision.c
+++ b/revision.c
@@ -1,9 +1,11 @@
-#include "git-compat-util.h"
+#include "cache.h"
#include "alloc.h"
#include "config.h"
#include "environment.h"
#include "gettext.h"
#include "hex.h"
+#include "object-name.h"
+#include "object-file.h"
#include "object-store.h"
#include "tag.h"
#include "blob.h"
@@ -31,6 +33,7 @@
#include "worktree.h"
#include "setup.h"
#include "strvec.h"
+#include "trace2.h"
#include "commit-reach.h"
#include "commit-graph.h"
#include "prio-queue.h"
diff --git a/run-command.c b/run-command.c
index 614d48fa9a..e64bb08a5b 100644
--- a/run-command.c
+++ b/run-command.c
@@ -8,6 +8,8 @@
#include "thread-utils.h"
#include "strbuf.h"
#include "string-list.h"
+#include "trace.h"
+#include "trace2.h"
#include "quote.h"
#include "config.h"
#include "packfile.h"
diff --git a/scalar.c b/scalar.c
index de07c37d21..1326e1f608 100644
--- a/scalar.c
+++ b/scalar.c
@@ -2,7 +2,7 @@
* The Scalar command-line interface.
*/
-#include "cache.h"
+#include "git-compat-util.h"
#include "abspath.h"
#include "gettext.h"
#include "parse-options.h"
@@ -16,6 +16,7 @@
#include "packfile.h"
#include "help.h"
#include "setup.h"
+#include "trace2.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 f81bbb28d7..7ebd1b3507 100644
--- a/send-pack.c
+++ b/send-pack.c
@@ -14,6 +14,7 @@
#include "quote.h"
#include "transport.h"
#include "version.h"
+#include "wrapper.h"
#include "oid-array.h"
#include "gpg-interface.h"
#include "shallow.h"
diff --git a/sequencer.c b/sequencer.c
index d2c7698c48..c88d1d9553 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -1,5 +1,6 @@
#include "cache.h"
#include "abspath.h"
+#include "advice.h"
#include "alloc.h"
#include "config.h"
#include "environment.h"
@@ -7,8 +8,11 @@
#include "hex.h"
#include "lockfile.h"
#include "dir.h"
+#include "object-file.h"
+#include "object-name.h"
#include "object-store.h"
#include "object.h"
+#include "pager.h"
#include "commit.h"
#include "sequencer.h"
#include "tag.h"
diff --git a/server-info.c b/server-info.c
index 355b6e01a5..68098ddd1a 100644
--- a/server-info.c
+++ b/server-info.c
@@ -9,6 +9,7 @@
#include "commit.h"
#include "tag.h"
#include "packfile.h"
+#include "object-file.h"
#include "object-store.h"
#include "strbuf.h"
#include "wrapper.h"
diff --git a/setup.c b/setup.c
index 6c5b85e96c..59abc16ba6 100644
--- a/setup.c
+++ b/setup.c
@@ -1,7 +1,8 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "abspath.h"
#include "environment.h"
#include "gettext.h"
+#include "object-name.h"
#include "repository.h"
#include "config.h"
#include "dir.h"
@@ -10,6 +11,8 @@
#include "chdir-notify.h"
#include "promisor-remote.h"
#include "quote.h"
+#include "trace2.h"
+#include "wrapper.h"
static int inside_git_dir = -1;
static int inside_work_tree = -1;
diff --git a/shallow.c b/shallow.c
index b4d726bd59..128f56179e 100644
--- a/shallow.c
+++ b/shallow.c
@@ -17,6 +17,7 @@
#include "list-objects.h"
#include "commit-reach.h"
#include "shallow.h"
+#include "trace.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 0af582858b..6cbfd391c4 100644
--- a/sideband.c
+++ b/sideband.c
@@ -1,6 +1,7 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "color.h"
#include "config.h"
+#include "editor.h"
#include "gettext.h"
#include "sideband.h"
#include "help.h"
diff --git a/split-index.c b/split-index.c
index c98807c655..5602b74994 100644
--- a/split-index.c
+++ b/split-index.c
@@ -1,6 +1,7 @@
#include "cache.h"
#include "alloc.h"
#include "gettext.h"
+#include "mem-pool.h"
#include "split-index.h"
#include "ewah/ewok.h"
diff --git a/split-index.h b/split-index.h
index 7a435ca2c9..1a153f47ba 100644
--- a/split-index.h
+++ b/split-index.h
@@ -1,7 +1,7 @@
#ifndef SPLIT_INDEX_H
#define SPLIT_INDEX_H
-#include "cache.h"
+#include "hash.h"
struct index_state;
struct strbuf;
diff --git a/strbuf.c b/strbuf.c
index 70a83e7980..729378ec82 100644
--- a/strbuf.c
+++ b/strbuf.c
@@ -1,9 +1,10 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "abspath.h"
#include "alloc.h"
#include "environment.h"
#include "gettext.h"
#include "hex.h"
+#include "object-name.h"
#include "refs.h"
#include "string-list.h"
#include "utf8.h"
@@ -1179,34 +1180,6 @@ int strbuf_normalize_path(struct strbuf *src)
return 0;
}
-int strbuf_edit_interactively(struct strbuf *buffer, const char *path,
- const char *const *env)
-{
- char *path2 = NULL;
- int fd, res = 0;
-
- if (!is_absolute_path(path))
- path = path2 = xstrdup(git_path("%s", path));
-
- fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0666);
- if (fd < 0)
- res = error_errno(_("could not open '%s' for writing"), path);
- else if (write_in_full(fd, buffer->buf, buffer->len) < 0) {
- res = error_errno(_("could not write to '%s'"), path);
- close(fd);
- } else if (close(fd) < 0)
- res = error_errno(_("could not close '%s'"), path);
- else {
- strbuf_reset(buffer);
- if (launch_editor(path, buffer, env) < 0)
- res = error_errno(_("could not edit '%s'"), path);
- unlink(path);
- }
-
- free(path2);
- return res;
-}
-
void strbuf_strip_file_from_path(struct strbuf *sb)
{
char *path_sep = find_last_dir_sep(sb->buf);
diff --git a/strbuf.h b/strbuf.h
index b980f9edc6..3dfeadb44c 100644
--- a/strbuf.h
+++ b/strbuf.h
@@ -640,30 +640,6 @@ void strbuf_repo_add_unique_abbrev(struct strbuf *sb, struct repository *repo,
void strbuf_add_unique_abbrev(struct strbuf *sb, const struct object_id *oid,
int abbrev_len);
-/**
- * Launch the user preferred editor to edit a file and fill the buffer
- * with the file's contents upon the user completing their editing. The
- * third argument can be used to set the environment which the editor is
- * run in. If the buffer is NULL the editor is launched as usual but the
- * file's contents are not read into the buffer upon completion.
- */
-int launch_editor(const char *path, struct strbuf *buffer,
- const char *const *env);
-
-int launch_sequence_editor(const char *path, struct strbuf *buffer,
- const char *const *env);
-
-/*
- * In contrast to `launch_editor()`, this function writes out the contents
- * of the specified file first, then clears the `buffer`, then launches
- * the editor and reads back in the file contents into the `buffer`.
- * Finally, it deletes the temporary file.
- *
- * If `path` is relative, it refers to a file in the `.git` directory.
- */
-int strbuf_edit_interactively(struct strbuf *buffer, const char *path,
- const char *const *env);
-
/*
* Remove the filename from the provided path string. If the path
* contains a trailing separator, then the path is considered a directory
diff --git a/streaming.c b/streaming.c
index 024fd796b7..21e39585e8 100644
--- a/streaming.c
+++ b/streaming.c
@@ -1,10 +1,12 @@
/*
* Copyright (c) 2011, Google Inc.
*/
-#include "cache.h"
+#include "git-compat-util.h"
+#include "convert.h"
#include "environment.h"
#include "streaming.h"
#include "repository.h"
+#include "object-file.h"
#include "object-store.h"
#include "replace-object.h"
#include "packfile.h"
diff --git a/submodule-config.c b/submodule-config.c
index ecf0fcf007..7fc0812b64 100644
--- a/submodule-config.c
+++ b/submodule-config.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "alloc.h"
#include "dir.h"
#include "environment.h"
@@ -9,6 +9,7 @@
#include "submodule-config.h"
#include "submodule.h"
#include "strbuf.h"
+#include "object-name.h"
#include "object-store.h"
#include "parse-options.h"
#include "tree-walk.h"
diff --git a/submodule.c b/submodule.c
index 94644fac0a..2e78f51349 100644
--- a/submodule.c
+++ b/submodule.c
@@ -24,10 +24,13 @@
#include "remote.h"
#include "worktree.h"
#include "parse-options.h"
+#include "object-file.h"
+#include "object-name.h"
#include "object-store.h"
#include "commit-reach.h"
#include "setup.h"
#include "shallow.h"
+#include "trace2.h"
static int config_update_recurse_submodules = RECURSE_SUBMODULES_OFF;
static int initialized_fetch_ref_tips;
diff --git a/t/helper/test-date.c b/t/helper/test-date.c
index 2d9232cc68..0683d46574 100644
--- a/t/helper/test-date.c
+++ b/t/helper/test-date.c
@@ -1,6 +1,6 @@
#include "test-tool.h"
-#include "cache.h"
#include "date.h"
+#include "trace.h"
static const char *usage_msg = "\n"
" test-tool date relative [time_t]...\n"
diff --git a/t/helper/test-fast-rebase.c b/t/helper/test-fast-rebase.c
index fd48e0ee2c..d1d63feaa9 100644
--- a/t/helper/test-fast-rebase.c
+++ b/t/helper/test-fast-rebase.c
@@ -20,6 +20,7 @@
#include "hex.h"
#include "lockfile.h"
#include "merge-ort.h"
+#include "object-name.h"
#include "refs.h"
#include "revision.h"
#include "sequencer.h"
diff --git a/t/helper/test-lazy-init-name-hash.c b/t/helper/test-lazy-init-name-hash.c
index 06ce3a47cc..f23d983c11 100644
--- a/t/helper/test-lazy-init-name-hash.c
+++ b/t/helper/test-lazy-init-name-hash.c
@@ -4,6 +4,7 @@
#include "environment.h"
#include "parse-options.h"
#include "setup.h"
+#include "trace.h"
static int single;
static int multi;
diff --git a/t/helper/test-match-trees.c b/t/helper/test-match-trees.c
index 508eb7066a..35a2b8005c 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 "object-name.h"
#include "setup.h"
#include "tree.h"
diff --git a/t/helper/test-mergesort.c b/t/helper/test-mergesort.c
index 335e5bb3a9..737e0c5235 100644
--- a/t/helper/test-mergesort.c
+++ b/t/helper/test-mergesort.c
@@ -1,5 +1,6 @@
#include "test-tool.h"
#include "cache.h"
+#include "mem-pool.h"
#include "mergesort.h"
static uint32_t minstd_rand(uint32_t *state)
diff --git a/t/helper/test-oidmap.c b/t/helper/test-oidmap.c
index a7b7b38df1..1b0e7eecb4 100644
--- a/t/helper/test-oidmap.c
+++ b/t/helper/test-oidmap.c
@@ -1,6 +1,6 @@
#include "test-tool.h"
-#include "cache.h"
#include "hex.h"
+#include "object-name.h"
#include "oidmap.h"
#include "setup.h"
#include "strbuf.h"
diff --git a/t/helper/test-path-utils.c b/t/helper/test-path-utils.c
index 4f5ac2fadc..6355c9e4b6 100644
--- a/t/helper/test-path-utils.c
+++ b/t/helper/test-path-utils.c
@@ -4,6 +4,7 @@
#include "environment.h"
#include "setup.h"
#include "string-list.h"
+#include "trace.h"
#include "utf8.h"
/*
diff --git a/t/helper/test-reach.c b/t/helper/test-reach.c
index b0deaa106a..5b6f217441 100644
--- a/t/helper/test-reach.c
+++ b/t/helper/test-reach.c
@@ -1,11 +1,11 @@
#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 "object-name.h"
#include "parse-options.h"
#include "ref-filter.h"
#include "setup.h"
diff --git a/t/helper/test-submodule-config.c b/t/helper/test-submodule-config.c
index 40a6ee45af..5e462faa9d 100644
--- a/t/helper/test-submodule-config.c
+++ b/t/helper/test-submodule-config.c
@@ -1,6 +1,6 @@
#include "test-tool.h"
-#include "cache.h"
#include "config.h"
+#include "object-name.h"
#include "setup.h"
#include "submodule-config.h"
#include "submodule.h"
diff --git a/tag.c b/tag.c
index 01ed67d6fa..96dbd5b2d5 100644
--- a/tag.c
+++ b/tag.c
@@ -1,6 +1,7 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "environment.h"
#include "tag.h"
+#include "object-name.h"
#include "object-store.h"
#include "commit.h"
#include "tree.h"
diff --git a/tmp-objdir.c b/tmp-objdir.c
index 5adad1925d..c33a554f92 100644
--- a/tmp-objdir.c
+++ b/tmp-objdir.c
@@ -1,9 +1,10 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "tmp-objdir.h"
#include "abspath.h"
#include "chdir-notify.h"
#include "dir.h"
#include "environment.h"
+#include "object-file.h"
#include "sigchain.h"
#include "string-list.h"
#include "strbuf.h"
diff --git a/trace.c b/trace.c
index 81318a2455..592c141d78 100644
--- a/trace.c
+++ b/trace.c
@@ -21,11 +21,12 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
-#include "cache.h"
+#include "git-compat-util.h"
#include "abspath.h"
#include "environment.h"
#include "quote.h"
#include "setup.h"
+#include "trace.h"
#include "wrapper.h"
struct trace_key trace_default_key = { "GIT_TRACE", 0, 0, 0 };
diff --git a/trace2.c b/trace2.c
index e8ba62c0c3..21264df71b 100644
--- a/trace2.c
+++ b/trace2.c
@@ -7,6 +7,7 @@
#include "thread-utils.h"
#include "version.h"
#include "trace.h"
+#include "trace2.h"
#include "trace2/tr2_cfg.h"
#include "trace2/tr2_cmd_name.h"
#include "trace2/tr2_ctr.h"
diff --git a/transport-helper.c b/transport-helper.c
index 76d146ee88..6b816940dc 100644
--- a/transport-helper.c
+++ b/transport-helper.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "transport.h"
#include "quote.h"
#include "run-command.h"
@@ -7,6 +7,7 @@
#include "environment.h"
#include "gettext.h"
#include "hex.h"
+#include "object-name.h"
#include "revision.h"
#include "remote.h"
#include "string-list.h"
diff --git a/transport.c b/transport.c
index 89a220425e..0bf2d6940c 100644
--- a/transport.c
+++ b/transport.c
@@ -1,4 +1,5 @@
-#include "cache.h"
+#include "git-compat-util.h"
+#include "advice.h"
#include "alloc.h"
#include "config.h"
#include "environment.h"
@@ -22,8 +23,10 @@
#include "string-list.h"
#include "oid-array.h"
#include "sigchain.h"
+#include "trace2.h"
#include "transport-internal.h"
#include "protocol.h"
+#include "object-name.h"
#include "object-store.h"
#include "color.h"
#include "bundle-uri.h"
diff --git a/tree-walk.c b/tree-walk.c
index 38b6556478..2993c48c2f 100644
--- a/tree-walk.c
+++ b/tree-walk.c
@@ -4,7 +4,9 @@
#include "dir.h"
#include "gettext.h"
#include "hex.h"
+#include "object-file.h"
#include "object-store.h"
+#include "trace2.h"
#include "tree.h"
#include "pathspec.h"
#include "json-writer.h"
diff --git a/tree.c b/tree.c
index 2b78708766..e9d51ce2e0 100644
--- a/tree.c
+++ b/tree.c
@@ -2,6 +2,7 @@
#include "cache-tree.h"
#include "hex.h"
#include "tree.h"
+#include "object-name.h"
#include "object-store.h"
#include "blob.h"
#include "commit.h"
diff --git a/unpack-trees.c b/unpack-trees.c
index 3ded68ecb6..c0732aa0c2 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -1,4 +1,5 @@
#include "cache.h"
+#include "advice.h"
#include "strvec.h"
#include "repository.h"
#include "config.h"
@@ -17,6 +18,7 @@
#include "sparse-index.h"
#include "submodule.h"
#include "submodule-config.h"
+#include "trace2.h"
#include "fsmonitor.h"
#include "object-store.h"
#include "promisor-remote.h"
diff --git a/unpack-trees.h b/unpack-trees.h
index 61c06eb7c5..30622aeebf 100644
--- a/unpack-trees.h
+++ b/unpack-trees.h
@@ -2,6 +2,7 @@
#define UNPACK_TREES_H
#include "cache.h"
+#include "convert.h"
#include "strvec.h"
#include "string-list.h"
#include "tree-walk.h"
diff --git a/upload-pack.c b/upload-pack.c
index e23f16dfdd..e16dee783d 100644
--- a/upload-pack.c
+++ b/upload-pack.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "config.h"
#include "environment.h"
#include "gettext.h"
@@ -8,6 +8,7 @@
#include "sideband.h"
#include "repository.h"
#include "object-store.h"
+#include "oid-array.h"
#include "tag.h"
#include "object.h"
#include "commit.h"
@@ -22,6 +23,7 @@
#include "version.h"
#include "string-list.h"
#include "strvec.h"
+#include "trace2.h"
#include "prio-queue.h"
#include "protocol.h"
#include "quote.h"
@@ -30,6 +32,7 @@
#include "commit-graph.h"
#include "commit-reach.h"
#include "shallow.h"
+#include "wrapper.h"
#include "write-or-die.h"
/* Remember to update object flag allocation in object.h */
diff --git a/walker.c b/walker.c
index cfbd257fdb..24ff7dfdc2 100644
--- a/walker.c
+++ b/walker.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "gettext.h"
#include "hex.h"
#include "walker.h"
diff --git a/wrapper.c b/wrapper.c
index ee83757590..c130d7518b 100644
--- a/wrapper.c
+++ b/wrapper.c
@@ -5,6 +5,7 @@
#include "abspath.h"
#include "config.h"
#include "gettext.h"
+#include "trace2.h"
#include "wrapper.h"
static intmax_t count_fsync_writeout_only;
diff --git a/wt-status.c b/wt-status.c
index 4bef09de1c..97b9c1c035 100644
--- a/wt-status.c
+++ b/wt-status.c
@@ -1,4 +1,5 @@
#include "cache.h"
+#include "advice.h"
#include "wt-status.h"
#include "object.h"
#include "dir.h"
@@ -7,6 +8,7 @@
#include "environment.h"
#include "gettext.h"
#include "hex.h"
+#include "object-name.h"
#include "revision.h"
#include "diffcore.h"
#include "quote.h"
@@ -18,6 +20,8 @@
#include "column.h"
#include "setup.h"
#include "strbuf.h"
+#include "trace.h"
+#include "trace2.h"
#include "utf8.h"
#include "worktree.h"
#include "lockfile.h"