object-store-ll.h: split this header out of object-store.h
The vast majority of files including object-store.h did not need dir.h nor khash.h. Split the header into two files, and let most just depend upon object-store-ll.h, while letting the two callers that need it depend on the full object-store.h. After this patch: $ git grep -h include..object-store | sort | uniq -c 2 #include "object-store.h" 129 #include "object-store-ll.h" Diff best viewed with `--color-moved`. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Elijah Newren committed
May 16, 2023 at 06:34 UTC
a034e9106ff1a4cb6fcb6f2ea3a1a47b4d2ba173
131 files changed
+677
-655
apply.c
+1
-1
@@ -12,7 +12,7 @@
12
#include "alloc.h"
13
#include "base85.h"
14
#include "config.h"
15
-#include "object-store.h"
15
+#include "object-store-ll.h"
16
#include "blob.h"
17
#include "delta.h"
18
#include "diff.h"
archive-tar.c
+1
-1
@@ -9,7 +9,7 @@
9
#include "hex.h"
10
#include "tar.h"
11
#include "archive.h"
12
-#include "object-store.h"
12
+#include "object-store-ll.h"
13
#include "streaming.h"
14
#include "run-command.h"
15
#include "write-or-die.h"
archive-zip.c
+1
-1
@@ -9,7 +9,7 @@
9
#include "hex.h"
10
#include "streaming.h"
11
#include "utf8.h"
12
-#include "object-store.h"
12
+#include "object-store-ll.h"
13
#include "userdiff.h"
14
#include "write-or-die.h"
15
#include "xdiff-interface.h"
archive.c
+1
-1
@@ -10,7 +10,7 @@
10
#include "pretty.h"
11
#include "setup.h"
12
#include "refs.h"
13
-#include "object-store.h"
13
+#include "object-store-ll.h"
14
#include "commit.h"
15
#include "tree.h"
16
#include "tree-walk.h"
attr.c
+1
-1
@@ -19,7 +19,7 @@
19
#include "quote.h"
20
#include "read-cache-ll.h"
21
#include "revision.h"
22
-#include "object-store.h"
22
+#include "object-store-ll.h"
23
#include "setup.h"
24
#include "thread-utils.h"
25
#include "tree-walk.h"
bisect.c
+1
-1
@@ -18,7 +18,7 @@
18
#include "commit-slab.h"
19
#include "commit-reach.h"
20
#include "object-name.h"
21
-#include "object-store.h"
21
+#include "object-store-ll.h"
22
#include "path.h"
23
#include "dir.h"
24
blame.c
+1
-1
@@ -1,6 +1,6 @@
1
#include "git-compat-util.h"
2
#include "refs.h"
3
-#include "object-store.h"
3
+#include "object-store-ll.h"
4
#include "cache-tree.h"
5
#include "mergesort.h"
6
#include "convert.h"
builtin/blame.c
+1
-1
@@ -29,7 +29,7 @@
29
#include "dir.h"
30
#include "progress.h"
31
#include "object-name.h"
32
-#include "object-store.h"
32
+#include "object-store-ll.h"
33
#include "pager.h"
34
#include "blame.h"
35
#include "refs.h"
builtin/cat-file.c
+1
-1
@@ -21,7 +21,7 @@
21
#include "packfile.h"
22
#include "object-file.h"
23
#include "object-name.h"
24
-#include "object-store.h"
24
+#include "object-store-ll.h"
25
#include "replace-object.h"
26
#include "promisor-remote.h"
27
#include "mailmap.h"
builtin/checkout.c
+1
-1
@@ -18,7 +18,7 @@
18
#include "mem-pool.h"
19
#include "merge-recursive.h"
20
#include "object-name.h"
21
-#include "object-store.h"
21
+#include "object-store-ll.h"
22
#include "parse-options.h"
23
#include "path.h"
24
#include "preload-index.h"
builtin/clone.c
+1
-1
@@ -23,7 +23,7 @@
23
#include "refs.h"
24
#include "refspec.h"
25
#include "object-file.h"
26
-#include "object-store.h"
26
+#include "object-store-ll.h"
27
#include "tree.h"
28
#include "tree-walk.h"
29
#include "unpack-trees.h"
builtin/commit-graph.c
+1
-1
@@ -9,7 +9,7 @@
9
#include "parse-options.h"
10
#include "repository.h"
11
#include "commit-graph.h"
12
-#include "object-store.h"
12
+#include "object-store-ll.h"
13
#include "progress.h"
14
#include "replace-object.h"
15
#include "tag.h"
builtin/commit-tree.c
+1
-1
@@ -8,7 +8,7 @@
8
#include "gettext.h"
9
#include "hex.h"
10
#include "object-name.h"
11
-#include "object-store.h"
11
+#include "object-store-ll.h"
12
#include "repository.h"
13
#include "commit.h"
14
#include "tree.h"
builtin/count-objects.c
+1
-1
@@ -14,7 +14,7 @@
14
#include "parse-options.h"
15
#include "quote.h"
16
#include "packfile.h"
17
-#include "object-store.h"
17
+#include "object-store-ll.h"
18
19
static unsigned long garbage;
20
static off_t size_garbage;
builtin/describe.c
+1
-1
@@ -19,7 +19,7 @@
19
#include "setup.h"
20
#include "strvec.h"
21
#include "run-command.h"
22
-#include "object-store.h"
22
+#include "object-store-ll.h"
23
#include "list-objects.h"
24
#include "commit-slab.h"
25
#include "wildmatch.h"
builtin/difftool.c
+1
-1
@@ -28,7 +28,7 @@
28
#include "strbuf.h"
29
#include "lockfile.h"
30
#include "object-file.h"
31
-#include "object-store.h"
31
+#include "object-store-ll.h"
32
#include "dir.h"
33
#include "entry.h"
34
#include "setup.h"
builtin/fast-export.c
+1
-1
@@ -10,7 +10,7 @@
10
#include "refs.h"
11
#include "refspec.h"
12
#include "object-file.h"
13
-#include "object-store.h"
13
+#include "object-store-ll.h"
14
#include "commit.h"
15
#include "object.h"
16
#include "tag.h"
builtin/fast-import.c
+1
-1
@@ -21,7 +21,7 @@
21
#include "packfile.h"
22
#include "object-file.h"
23
#include "object-name.h"
24
-#include "object-store.h"
24
+#include "object-store-ll.h"
25
#include "mem-pool.h"
26
#include "commit-reach.h"
27
#include "khash.h"
builtin/fetch.c
+1
-1
@@ -11,7 +11,7 @@
11
#include "refs.h"
12
#include "refspec.h"
13
#include "object-name.h"
14
-#include "object-store.h"
14
+#include "object-store-ll.h"
15
#include "oidset.h"
16
#include "oid-array.h"
17
#include "commit.h"
builtin/fsck.c
+1
-1
@@ -20,7 +20,7 @@
20
#include "packfile.h"
21
#include "object-file.h"
22
#include "object-name.h"
23
-#include "object-store.h"
23
+#include "object-store-ll.h"
24
#include "path.h"
25
#include "read-cache-ll.h"
26
#include "replace-object.h"
builtin/gc.c
+1
-1
@@ -27,7 +27,7 @@
27
#include "commit-graph.h"
28
#include "packfile.h"
29
#include "object-file.h"
30
-#include "object-store.h"
30
+#include "object-store-ll.h"
31
#include "pack.h"
32
#include "pack-objects.h"
33
#include "path.h"
builtin/grep.c
+1
-1
@@ -27,7 +27,7 @@
27
#include "submodule-config.h"
28
#include "object-file.h"
29
#include "object-name.h"
30
-#include "object-store.h"
30
+#include "object-store-ll.h"
31
#include "packfile.h"
32
#include "pager.h"
33
#include "path.h"
builtin/hash-object.c
+2
-1
@@ -10,12 +10,13 @@
10
#include "gettext.h"
11
#include "hex.h"
12
#include "object-file.h"
13
-#include "object-store.h"
13
+#include "object-store-ll.h"
14
#include "blob.h"
15
#include "quote.h"
16
#include "parse-options.h"
17
#include "exec-cmd.h"
18
#include "setup.h"
19
+#include "strbuf.h"
20
#include "write-or-die.h"
21
22
/*
builtin/index-pack.c
+2
-1
@@ -14,12 +14,13 @@
14
#include "progress.h"
15
#include "fsck.h"
16
#include "exec-cmd.h"
17
+#include "strbuf.h"
18
#include "streaming.h"
19
#include "thread-utils.h"
20
#include "packfile.h"
21
#include "pack-revindex.h"
22
#include "object-file.h"
22
-#include "object-store.h"
23
+#include "object-store-ll.h"
24
#include "oid-array.h"
25
#include "replace-object.h"
26
#include "promisor-remote.h"
builtin/log.c
+1
-1
@@ -14,7 +14,7 @@
14
#include "refs.h"
15
#include "object-file.h"
16
#include "object-name.h"
17
-#include "object-store.h"
17
+#include "object-store-ll.h"
18
#include "pager.h"
19
#include "color.h"
20
#include "commit.h"
builtin/ls-tree.c
+1
-1
@@ -8,7 +8,7 @@
8
#include "gettext.h"
9
#include "hex.h"
10
#include "object-name.h"
11
-#include "object-store.h"
11
+#include "object-store-ll.h"
12
#include "blob.h"
13
#include "tree.h"
14
#include "commit.h"
builtin/merge-tree.c
+1
-1
@@ -9,7 +9,7 @@
9
#include "commit-reach.h"
10
#include "merge-ort.h"
11
#include "object-name.h"
12
-#include "object-store.h"
12
+#include "object-store-ll.h"
13
#include "parse-options.h"
14
#include "repository.h"
15
#include "blob.h"
builtin/mktag.c
+2
-1
@@ -2,10 +2,11 @@
2
#include "gettext.h"
3
#include "hex.h"
4
#include "parse-options.h"
5
+#include "strbuf.h"
6
#include "tag.h"
7
#include "replace-object.h"
8
#include "object-file.h"
8
-#include "object-store.h"
9
+#include "object-store-ll.h"
10
#include "fsck.h"
11
#include "config.h"
12
builtin/mktree.c
+2
-1
@@ -8,9 +8,10 @@
8
#include "gettext.h"
9
#include "hex.h"
10
#include "quote.h"
11
+#include "strbuf.h"
12
#include "tree.h"
13
#include "parse-options.h"
13
-#include "object-store.h"
14
+#include "object-store-ll.h"
15
16
static struct treeent {
17
unsigned mode;
builtin/multi-pack-index.c
+2
-1
@@ -5,8 +5,9 @@
5
#include "gettext.h"
6
#include "parse-options.h"
7
#include "midx.h"
8
+#include "strbuf.h"
9
#include "trace2.h"
9
-#include "object-store.h"
10
+#include "object-store-ll.h"
11
12
#define BUILTIN_MIDX_WRITE_USAGE \
13
N_("git multi-pack-index [<options>] write [--preferred-pack=<pack>]" \
builtin/notes.c
+1
-1
@@ -14,7 +14,7 @@
14
#include "hex.h"
15
#include "notes.h"
16
#include "object-name.h"
17
-#include "object-store.h"
17
+#include "object-store-ll.h"
18
#include "path.h"
19
#include "repository.h"
20
#include "blob.h"
builtin/pack-objects.c
+1
-1
@@ -34,7 +34,7 @@
34
#include "list.h"
35
#include "packfile.h"
36
#include "object-file.h"
37
-#include "object-store.h"
37
+#include "object-store-ll.h"
38
#include "replace-object.h"
39
#include "dir.h"
40
#include "midx.h"
builtin/pack-redundant.c
+1
-1
@@ -11,7 +11,7 @@
11
#include "hex.h"
12
#include "repository.h"
13
#include "packfile.h"
14
-#include "object-store.h"
14
+#include "object-store-ll.h"
15
16
#define BLKSIZE 512
17
builtin/prune.c
+2
-1
@@ -1,6 +1,7 @@
1
#include "builtin.h"
2
#include "commit.h"
3
#include "diff.h"
4
+#include "dir.h"
5
#include "environment.h"
6
#include "gettext.h"
7
#include "hex.h"
@@ -13,7 +14,7 @@
14
#include "replace-object.h"
15
#include "object-file.h"
16
#include "object-name.h"
16
-#include "object-store.h"
17
+#include "object-store-ll.h"
18
#include "shallow.h"
19
20
static const char * const prune_usage[] = {
builtin/receive-pack.c
+1
-1
@@ -30,7 +30,7 @@
30
#include "oidset.h"
31
#include "packfile.h"
32
#include "object-name.h"
33
-#include "object-store.h"
33
+#include "object-store-ll.h"
34
#include "path.h"
35
#include "protocol.h"
36
#include "commit-reach.h"
builtin/remote.c
+1
-1
@@ -11,7 +11,7 @@
11
#include "rebase.h"
12
#include "refs.h"
13
#include "refspec.h"
14
-#include "object-store.h"
14
+#include "object-store-ll.h"
15
#include "strvec.h"
16
#include "commit-reach.h"
17
#include "progress.h"
builtin/repack.c
+1
-1
@@ -16,7 +16,7 @@
16
#include "midx.h"
17
#include "packfile.h"
18
#include "prune-packed.h"
19
-#include "object-store.h"
19
+#include "object-store-ll.h"
20
#include "promisor-remote.h"
21
#include "shallow.h"
22
#include "pack.h"
builtin/replace.c
+1
-1
@@ -20,7 +20,7 @@
20
#include "run-command.h"
21
#include "object-file.h"
22
#include "object-name.h"
23
-#include "object-store.h"
23
+#include "object-store-ll.h"
24
#include "replace-object.h"
25
#include "repository.h"
26
#include "tag.h"
builtin/rev-list.c
+1
-1
@@ -12,7 +12,7 @@
12
#include "object.h"
13
#include "object-name.h"
14
#include "object-file.h"
15
-#include "object-store.h"
15
+#include "object-store-ll.h"
16
#include "pack.h"
17
#include "pack-bitmap.h"
18
#include "log-tree.h"
builtin/show-ref.c
+1
-1
@@ -4,7 +4,7 @@
4
#include "hex.h"
5
#include "refs.h"
6
#include "object-name.h"
7
-#include "object-store.h"
7
+#include "object-store-ll.h"
8
#include "object.h"
9
#include "tag.h"
10
#include "string-list.h"
builtin/submodule--helper.c
+1
-1
@@ -29,7 +29,7 @@
29
#include "diff.h"
30
#include "object-file.h"
31
#include "object-name.h"
32
-#include "object-store.h"
32
+#include "object-store-ll.h"
33
#include "advice.h"
34
#include "branch.h"
35
#include "list-objects-filter-options.h"
builtin/tag.c
+1
-1
@@ -15,7 +15,7 @@
15
#include "hex.h"
16
#include "refs.h"
17
#include "object-name.h"
18
-#include "object-store.h"
18
+#include "object-store-ll.h"
19
#include "path.h"
20
#include "tag.h"
21
#include "run-command.h"
builtin/unpack-file.c
+1
-1
@@ -2,7 +2,7 @@
2
#include "config.h"
3
#include "hex.h"
4
#include "object-name.h"
5
-#include "object-store.h"
5
+#include "object-store-ll.h"
6
#include "wrapper.h"
7
8
static char *create_temp_file(struct object_id *oid)
builtin/unpack-objects.c
+1
-1
@@ -5,7 +5,7 @@
5
#include "gettext.h"
6
#include "git-zlib.h"
7
#include "hex.h"
8
-#include "object-store.h"
8
+#include "object-store-ll.h"
9
#include "object.h"
10
#include "delta.h"
11
#include "pack.h"
builtin/verify-commit.c
+1
-1
@@ -9,7 +9,7 @@
9
#include "config.h"
10
#include "gettext.h"
11
#include "object-name.h"
12
-#include "object-store.h"
12
+#include "object-store-ll.h"
13
#include "repository.h"
14
#include "commit.h"
15
#include "run-command.h"
bulk-checkin.c
+1
-1
@@ -16,7 +16,7 @@
16
#include "tmp-objdir.h"
17
#include "packfile.h"
18
#include "object-file.h"
19
-#include "object-store.h"
19
+#include "object-store-ll.h"
20
#include "wrapper.h"
21
22
static int odb_transaction_nesting;
bundle-uri.c
+1
-1
@@ -4,7 +4,7 @@
4
#include "copy.h"
5
#include "environment.h"
6
#include "gettext.h"
7
-#include "object-store.h"
7
+#include "object-store-ll.h"
8
#include "refs.h"
9
#include "run-command.h"
10
#include "hashmap.h"
bundle.c
+1
-1
@@ -4,7 +4,7 @@
4
#include "environment.h"
5
#include "gettext.h"
6
#include "hex.h"
7
-#include "object-store.h"
7
+#include "object-store-ll.h"
8
#include "repository.h"
9
#include "object.h"
10
#include "commit.h"
cache-tree.c
+1
-1
@@ -8,7 +8,7 @@
8
#include "cache-tree.h"
9
#include "bulk-checkin.h"
10
#include "object-file.h"
11
-#include "object-store.h"
11
+#include "object-store-ll.h"
12
#include "read-cache-ll.h"
13
#include "replace-object.h"
14
#include "promisor-remote.h"
combine-diff.c
+1
-1
@@ -1,5 +1,5 @@
1
#include "git-compat-util.h"
2
-#include "object-store.h"
2
+#include "object-store-ll.h"
3
#include "commit.h"
4
#include "convert.h"
5
#include "blob.h"
commit-graph.c
+1
-1
@@ -12,7 +12,7 @@
12
#include "hash-lookup.h"
13
#include "commit-graph.h"
14
#include "object-file.h"
15
-#include "object-store.h"
15
+#include "object-store-ll.h"
16
#include "oid-array.h"
17
#include "path.h"
18
#include "alloc.h"
commit-graph.h
+1
-1
@@ -1,7 +1,7 @@
1
#ifndef COMMIT_GRAPH_H
2
#define COMMIT_GRAPH_H
3
4
-#include "object-store.h"
4
+#include "object-store-ll.h"
5
#include "oidset.h"
6
7
#define GIT_TEST_COMMIT_GRAPH "GIT_TEST_COMMIT_GRAPH"
commit.c
+1
-1
@@ -7,7 +7,7 @@
7
#include "hex.h"
8
#include "repository.h"
9
#include "object-name.h"
10
-#include "object-store.h"
10
+#include "object-store-ll.h"
11
#include "pkt-line.h"
12
#include "utf8.h"
13
#include "diff.h"
config.c
+1
-1
@@ -25,7 +25,7 @@
25
#include "hashmap.h"
26
#include "string-list.h"
27
#include "object-name.h"
28
-#include "object-store.h"
28
+#include "object-store-ll.h"
29
#include "pager.h"
30
#include "path.h"
31
#include "utf8.h"
connected.c
+1
-1
@@ -1,7 +1,7 @@
1
#include "git-compat-util.h"
2
#include "gettext.h"
3
#include "hex.h"
4
-#include "object-store.h"
4
+#include "object-store-ll.h"
5
#include "run-command.h"
6
#include "sigchain.h"
7
#include "connected.h"
convert.c
+1
-1
@@ -5,7 +5,7 @@
5
#include "copy.h"
6
#include "gettext.h"
7
#include "hex.h"
8
-#include "object-store.h"
8
+#include "object-store-ll.h"
9
#include "attr.h"
10
#include "run-command.h"
11
#include "quote.h"
diagnose.c
+1
-1
@@ -7,7 +7,7 @@
7
#include "gettext.h"
8
#include "hex.h"
9
#include "strvec.h"
10
-#include "object-store.h"
10
+#include "object-store-ll.h"
11
#include "packfile.h"
12
#include "parse-options.h"
13
#include "write-or-die.h"
diff.c
+1
-1
@@ -20,7 +20,7 @@
20
#include "attr.h"
21
#include "run-command.h"
22
#include "utf8.h"
23
-#include "object-store.h"
23
+#include "object-store-ll.h"
24
#include "userdiff.h"
25
#include "submodule-config.h"
26
#include "submodule.h"
diffcore-rename.c
+1
-1
@@ -6,7 +6,7 @@
6
#include "alloc.h"
7
#include "diff.h"
8
#include "diffcore.h"
9
-#include "object-store.h"
9
+#include "object-store-ll.h"
10
#include "hashmap.h"
11
#include "mem-pool.h"
12
#include "oid-array.h"
dir.c
+1
-1
@@ -15,7 +15,7 @@
15
#include "gettext.h"
16
#include "name-hash.h"
17
#include "object-file.h"
18
-#include "object-store.h"
18
+#include "object-store-ll.h"
19
#include "path.h"
20
#include "attr.h"
21
#include "refs.h"
entry.c
+1
-1
@@ -1,6 +1,6 @@
1
#include "git-compat-util.h"
2
#include "blob.h"
3
-#include "object-store.h"
3
+#include "object-store-ll.h"
4
#include "dir.h"
5
#include "environment.h"
6
#include "gettext.h"
environment.c
+1
-1
@@ -20,7 +20,7 @@
20
#include "commit.h"
21
#include "strvec.h"
22
#include "object-file.h"
23
-#include "object-store.h"
23
+#include "object-store-ll.h"
24
#include "path.h"
25
#include "replace-object.h"
26
#include "tmp-objdir.h"
fetch-pack.c
+1
-1
@@ -24,7 +24,7 @@
24
#include "oid-array.h"
25
#include "oidset.h"
26
#include "packfile.h"
27
-#include "object-store.h"
27
+#include "object-store-ll.h"
28
#include "path.h"
29
#include "connected.h"
30
#include "fetch-negotiator.h"
fmt-merge-msg.c
+1
-1
@@ -4,7 +4,7 @@
4
#include "environment.h"
5
#include "refs.h"
6
#include "object-name.h"
7
-#include "object-store.h"
7
+#include "object-store-ll.h"
8
#include "diff.h"
9
#include "diff-merges.h"
10
#include "hex.h"
fsck.c
+2
-1
@@ -1,8 +1,9 @@
1
#include "git-compat-util.h"
2
#include "alloc.h"
3
#include "date.h"
4
+#include "dir.h"
5
#include "hex.h"
5
-#include "object-store.h"
6
+#include "object-store-ll.h"
7
#include "path.h"
8
#include "repository.h"
9
#include "object.h"
grep.c
+1
-1
@@ -3,7 +3,7 @@
3
#include "gettext.h"
4
#include "grep.h"
5
#include "hex.h"
6
-#include "object-store.h"
6
+#include "object-store-ll.h"
7
#include "pretty.h"
8
#include "userdiff.h"
9
#include "xdiff-interface.h"
http-backend.c
+1
-1
@@ -16,7 +16,7 @@
16
#include "url.h"
17
#include "strvec.h"
18
#include "packfile.h"
19
-#include "object-store.h"
19
+#include "object-store-ll.h"
20
#include "protocol.h"
21
#include "date.h"
22
#include "wrapper.h"
http-push.c
+1
-1
@@ -18,7 +18,7 @@
18
#include "tree.h"
19
#include "tree-walk.h"
20
#include "packfile.h"
21
-#include "object-store.h"
21
+#include "object-store-ll.h"
22
#include "commit-reach.h"
23
24
#ifdef EXPAT_NEEDS_XMLPARSE_H
http-walker.c
+1
-1
@@ -7,7 +7,7 @@
7
#include "list.h"
8
#include "transport.h"
9
#include "packfile.h"
10
-#include "object-store.h"
10
+#include "object-store-ll.h"
11
12
struct alt_base {
13
char *base;
http.c
+1
-1
@@ -18,7 +18,7 @@
18
#include "protocol.h"
19
#include "string-list.h"
20
#include "object-file.h"
21
-#include "object-store.h"
21
+#include "object-store-ll.h"
22
23
static struct trace_key trace_curl = TRACE_KEY_INIT(CURL);
24
static int trace_curl_data = 1;
list-objects-filter.c
+1
-1
@@ -16,7 +16,7 @@
16
#include "oidmap.h"
17
#include "oidset.h"
18
#include "object-name.h"
19
-#include "object-store.h"
19
+#include "object-store-ll.h"
20
21
/* Remember to update object flag allocation in object.h */
22
/*
list-objects.c
+1
-1
@@ -12,7 +12,7 @@
12
#include "list-objects-filter.h"
13
#include "list-objects-filter-options.h"
14
#include "packfile.h"
15
-#include "object-store.h"
15
+#include "object-store-ll.h"
16
#include "trace.h"
17
18
struct traversal_context {
log-tree.c
+1
-1
@@ -5,7 +5,7 @@
5
#include "environment.h"
6
#include "hex.h"
7
#include "object-name.h"
8
-#include "object-store.h"
8
+#include "object-store-ll.h"
9
#include "repository.h"
10
#include "tmp-objdir.h"
11
#include "commit.h"
mailmap.c
+1
-1
@@ -3,7 +3,7 @@
3
#include "string-list.h"
4
#include "mailmap.h"
5
#include "object-name.h"
6
-#include "object-store.h"
6
+#include "object-store-ll.h"
7
#include "setup.h"
8
9
const char *git_mailmap_file;
match-trees.c
+2
-1
@@ -1,9 +1,10 @@
1
#include "git-compat-util.h"
2
#include "hex.h"
3
#include "match-trees.h"
4
+#include "strbuf.h"
5
#include "tree.h"
6
#include "tree-walk.h"
6
-#include "object-store.h"
7
+#include "object-store-ll.h"
8
9
static int score_missing(unsigned mode)
10
{
merge-blobs.c
+1
-1
@@ -4,7 +4,7 @@
4
#include "merge-ll.h"
5
#include "blob.h"
6
#include "merge-blobs.h"
7
-#include "object-store.h"
7
+#include "object-store-ll.h"
8
9
static int fill_mmfile_blob(mmfile_t *f, struct blob *obj)
10
{
merge-ort.c
+1
-1
@@ -34,7 +34,7 @@
34
#include "match-trees.h"
35
#include "mem-pool.h"
36
#include "object-name.h"
37
-#include "object-store.h"
37
+#include "object-store-ll.h"
38
#include "oid-array.h"
39
#include "path.h"
40
#include "promisor-remote.h"
merge-recursive.c
+1
-1
@@ -26,7 +26,7 @@
26
#include "name-hash.h"
27
#include "object-file.h"
28
#include "object-name.h"
29
-#include "object-store.h"
29
+#include "object-store-ll.h"
30
#include "path.h"
31
#include "repository.h"
32
#include "revision.h"
midx.c
+1
-1
@@ -9,7 +9,7 @@
9
#include "lockfile.h"
10
#include "packfile.h"
11
#include "object-file.h"
12
-#include "object-store.h"
12
+#include "object-store-ll.h"
13
#include "hash-lookup.h"
14
#include "midx.h"
15
#include "progress.h"
notes-cache.c
+2
-1
@@ -1,10 +1,11 @@
1
#include "git-compat-util.h"
2
#include "notes-cache.h"
3
-#include "object-store.h"
3
+#include "object-store-ll.h"
4
#include "pretty.h"
5
#include "repository.h"
6
#include "commit.h"
7
#include "refs.h"
8
+#include "strbuf.h"
9
10
static int notes_cache_match_validity(struct repository *r,
11
const char *ref,
notes-merge.c
+1
-1
@@ -5,7 +5,7 @@
5
#include "refs.h"
6
#include "object-file.h"
7
#include "object-name.h"
8
-#include "object-store.h"
8
+#include "object-store-ll.h"
9
#include "path.h"
10
#include "repository.h"
11
#include "diff.h"
notes.c
+1
-1
@@ -4,7 +4,7 @@
4
#include "hex.h"
5
#include "notes.h"
6
#include "object-name.h"
7
-#include "object-store.h"
7
+#include "object-store-ll.h"
8
#include "blob.h"
9
#include "tree.h"
10
#include "utf8.h"
object-name.c
+1
-1
@@ -17,7 +17,7 @@
17
#include "oidtree.h"
18
#include "packfile.h"
19
#include "pretty.h"
20
-#include "object-store.h"
20
+#include "object-store-ll.h"
21
#include "read-cache-ll.h"
22
#include "repository.h"
23
#include "setup.h"
object-store-ll.h
new
+533
@@ -0,0 +1,533 @@
1
+#ifndef OBJECT_STORE_LL_H
2
+#define OBJECT_STORE_LL_H
3
+
4
+#include "hashmap.h"
5
+#include "object.h"
6
+#include "list.h"
7
+#include "thread-utils.h"
8
+#include "oidset.h"
9
+
10
+struct oidmap;
11
+struct oidtree;
12
+struct strbuf;
13
+
14
+struct object_directory {
15
+ struct object_directory *next;
16
+
17
+ /*
18
+ * Used to store the results of readdir(3) calls when we are OK
19
+ * sacrificing accuracy due to races for speed. That includes
20
+ * object existence with OBJECT_INFO_QUICK, as well as
21
+ * our search for unique abbreviated hashes. Don't use it for tasks
22
+ * requiring greater accuracy!
23
+ *
24
+ * Be sure to call odb_load_loose_cache() before using.
25
+ */
26
+ uint32_t loose_objects_subdir_seen[8]; /* 256 bits */
27
+ struct oidtree *loose_objects_cache;
28
+
29
+ /*
30
+ * This is a temporary object store created by the tmp_objdir
31
+ * facility. Disable ref updates since the objects in the store
32
+ * might be discarded on rollback.
33
+ */
34
+ int disable_ref_updates;
35
+
36
+ /*
37
+ * This object store is ephemeral, so there is no need to fsync.
38
+ */
39
+ int will_destroy;
40
+
41
+ /*
42
+ * Path to the alternative object store. If this is a relative path,
43
+ * it is relative to the current working directory.
44
+ */
45
+ char *path;
46
+};
47
+
48
+struct input_stream {
49
+ const void *(*read)(struct input_stream *, unsigned long *len);
50
+ void *data;
51
+ int is_finished;
52
+};
53
+
54
+void prepare_alt_odb(struct repository *r);
55
+int has_alt_odb(struct repository *r);
56
+char *compute_alternate_path(const char *path, struct strbuf *err);
57
+struct object_directory *find_odb(struct repository *r, const char *obj_dir);
58
+typedef int alt_odb_fn(struct object_directory *, void *);
59
+int foreach_alt_odb(alt_odb_fn, void*);
60
+typedef void alternate_ref_fn(const struct object_id *oid, void *);
61
+void for_each_alternate_ref(alternate_ref_fn, void *);
62
+
63
+/*
64
+ * Add the directory to the on-disk alternates file; the new entry will also
65
+ * take effect in the current process.
66
+ */
67
+void add_to_alternates_file(const char *dir);
68
+
69
+/*
70
+ * Add the directory to the in-memory list of alternates (along with any
71
+ * recursive alternates it points to), but do not modify the on-disk alternates
72
+ * file.
73
+ */
74
+void add_to_alternates_memory(const char *dir);
75
+
76
+/*
77
+ * Replace the current writable object directory with the specified temporary
78
+ * object directory; returns the former primary object directory.
79
+ */
80
+struct object_directory *set_temporary_primary_odb(const char *dir, int will_destroy);
81
+
82
+/*
83
+ * Restore a previous ODB replaced by set_temporary_main_odb.
84
+ */
85
+void restore_primary_odb(struct object_directory *restore_odb, const char *old_path);
86
+
87
+/*
88
+ * Populate and return the loose object cache array corresponding to the
89
+ * given object ID.
90
+ */
91
+struct oidtree *odb_loose_cache(struct object_directory *odb,
92
+ const struct object_id *oid);
93
+
94
+/* Empty the loose object cache for the specified object directory. */
95
+void odb_clear_loose_cache(struct object_directory *odb);
96
+
97
+/* Clear and free the specified object directory */
98
+void free_object_directory(struct object_directory *odb);
99
+
100
+struct packed_git {
101
+ struct hashmap_entry packmap_ent;
102
+ struct packed_git *next;
103
+ struct list_head mru;
104
+ struct pack_window *windows;
105
+ off_t pack_size;
106
+ const void *index_data;
107
+ size_t index_size;
108
+ uint32_t num_objects;
109
+ uint32_t crc_offset;
110
+ struct oidset bad_objects;
111
+ int index_version;
112
+ time_t mtime;
113
+ int pack_fd;
114
+ int index; /* for builtin/pack-objects.c */
115
+ unsigned pack_local:1,
116
+ pack_keep:1,
117
+ pack_keep_in_core:1,
118
+ freshened:1,
119
+ do_not_close:1,
120
+ pack_promisor:1,
121
+ multi_pack_index:1,
122
+ is_cruft:1;
123
+ unsigned char hash[GIT_MAX_RAWSZ];
124
+ struct revindex_entry *revindex;
125
+ const uint32_t *revindex_data;
126
+ const uint32_t *revindex_map;
127
+ size_t revindex_size;
128
+ /*
129
+ * mtimes_map points at the beginning of the memory mapped region of
130
+ * this pack's corresponding .mtimes file, and mtimes_size is the size
131
+ * of that .mtimes file
132
+ */
133
+ const uint32_t *mtimes_map;
134
+ size_t mtimes_size;
135
+ /* something like ".git/objects/pack/xxxxx.pack" */
136
+ char pack_name[FLEX_ARRAY]; /* more */
137
+};
138
+
139
+struct multi_pack_index;
140
+
141
+static inline int pack_map_entry_cmp(const void *cmp_data UNUSED,
142
+ const struct hashmap_entry *entry,
143
+ const struct hashmap_entry *entry2,
144
+ const void *keydata)
145
+{
146
+ const char *key = keydata;
147
+ const struct packed_git *pg1, *pg2;
148
+
149
+ pg1 = container_of(entry, const struct packed_git, packmap_ent);
150
+ pg2 = container_of(entry2, const struct packed_git, packmap_ent);
151
+
152
+ return strcmp(pg1->pack_name, key ? key : pg2->pack_name);
153
+}
154
+
155
+struct raw_object_store {
156
+ /*
157
+ * Set of all object directories; the main directory is first (and
158
+ * cannot be NULL after initialization). Subsequent directories are
159
+ * alternates.
160
+ */
161
+ struct object_directory *odb;
162
+ struct object_directory **odb_tail;
163
+ struct kh_odb_path_map *odb_by_path;
164
+
165
+ int loaded_alternates;
166
+
167
+ /*
168
+ * A list of alternate object directories loaded from the environment;
169
+ * this should not generally need to be accessed directly, but will
170
+ * populate the "odb" list when prepare_alt_odb() is run.
171
+ */
172
+ char *alternate_db;
173
+
174
+ /*
175
+ * Objects that should be substituted by other objects
176
+ * (see git-replace(1)).
177
+ */
178
+ struct oidmap *replace_map;
179
+ unsigned replace_map_initialized : 1;
180
+ pthread_mutex_t replace_mutex; /* protect object replace functions */
181
+
182
+ struct commit_graph *commit_graph;
183
+ unsigned commit_graph_attempted : 1; /* if loading has been attempted */
184
+
185
+ /*
186
+ * private data
187
+ *
188
+ * should only be accessed directly by packfile.c and midx.c
189
+ */
190
+ struct multi_pack_index *multi_pack_index;
191
+
192
+ /*
193
+ * private data
194
+ *
195
+ * should only be accessed directly by packfile.c
196
+ */
197
+
198
+ struct packed_git *packed_git;
199
+ /* A most-recently-used ordered version of the packed_git list. */
200
+ struct list_head packed_git_mru;
201
+
202
+ struct {
203
+ struct packed_git **packs;
204
+ unsigned flags;
205
+ } kept_pack_cache;
206
+
207
+ /*
208
+ * A map of packfiles to packed_git structs for tracking which
209
+ * packs have been loaded already.
210
+ */
211
+ struct hashmap pack_map;
212
+
213
+ /*
214
+ * A fast, rough count of the number of objects in the repository.
215
+ * These two fields are not meant for direct access. Use
216
+ * repo_approximate_object_count() instead.
217
+ */
218
+ unsigned long approximate_object_count;
219
+ unsigned approximate_object_count_valid : 1;
220
+
221
+ /*
222
+ * Whether packed_git has already been populated with this repository's
223
+ * packs.
224
+ */
225
+ unsigned packed_git_initialized : 1;
226
+};
227
+
228
+struct raw_object_store *raw_object_store_new(void);
229
+void raw_object_store_clear(struct raw_object_store *o);
230
+
231
+/*
232
+ * Put in `buf` the name of the file in the local object database that
233
+ * would be used to store a loose object with the specified oid.
234
+ */
235
+const char *loose_object_path(struct repository *r, struct strbuf *buf,
236
+ const struct object_id *oid);
237
+
238
+void *map_loose_object(struct repository *r, const struct object_id *oid,
239
+ unsigned long *size);
240
+
241
+void *repo_read_object_file(struct repository *r,
242
+ const struct object_id *oid,
243
+ enum object_type *type,
244
+ unsigned long *size);
245
+
246
+/* Read and unpack an object file into memory, write memory to an object file */
247
+int oid_object_info(struct repository *r, const struct object_id *, unsigned long *);
248
+
249
+void hash_object_file(const struct git_hash_algo *algo, const void *buf,
250
+ unsigned long len, enum object_type type,
251
+ struct object_id *oid);
252
+
253
+int write_object_file_flags(const void *buf, unsigned long len,
254
+ enum object_type type, struct object_id *oid,
255
+ unsigned flags);
256
+static inline int write_object_file(const void *buf, unsigned long len,
257
+ enum object_type type, struct object_id *oid)
258
+{
259
+ return write_object_file_flags(buf, len, type, oid, 0);
260
+}
261
+
262
+int write_object_file_literally(const void *buf, unsigned long len,
263
+ const char *type, struct object_id *oid,
264
+ unsigned flags);
265
+int stream_loose_object(struct input_stream *in_stream, size_t len,
266
+ struct object_id *oid);
267
+
268
+/*
269
+ * Add an object file to the in-memory object store, without writing it
270
+ * to disk.
271
+ *
272
+ * Callers are responsible for calling write_object_file to record the
273
+ * object in persistent storage before writing any other new objects
274
+ * that reference it.
275
+ */
276
+int pretend_object_file(void *, unsigned long, enum object_type,
277
+ struct object_id *oid);
278
+
279
+int force_object_loose(const struct object_id *oid, time_t mtime);
280
+
281
+struct object_info {
282
+ /* Request */
283
+ enum object_type *typep;
284
+ unsigned long *sizep;
285
+ off_t *disk_sizep;
286
+ struct object_id *delta_base_oid;
287
+ struct strbuf *type_name;
288
+ void **contentp;
289
+
290
+ /* Response */
291
+ enum {
292
+ OI_CACHED,
293
+ OI_LOOSE,
294
+ OI_PACKED,
295
+ OI_DBCACHED
296
+ } whence;
297
+ union {
298
+ /*
299
+ * struct {
300
+ * ... Nothing to expose in this case
301
+ * } cached;
302
+ * struct {
303
+ * ... Nothing to expose in this case
304
+ * } loose;
305
+ */
306
+ struct {
307
+ struct packed_git *pack;
308
+ off_t offset;
309
+ unsigned int is_delta;
310
+ } packed;
311
+ } u;
312
+};
313
+
314
+/*
315
+ * Initializer for a "struct object_info" that wants no items. You may
316
+ * also memset() the memory to all-zeroes.
317
+ */
318
+#define OBJECT_INFO_INIT { 0 }
319
+
320
+/* Invoke lookup_replace_object() on the given hash */
321
+#define OBJECT_INFO_LOOKUP_REPLACE 1
322
+/* Allow reading from a loose object file of unknown/bogus type */
323
+#define OBJECT_INFO_ALLOW_UNKNOWN_TYPE 2
324
+/* Do not retry packed storage after checking packed and loose storage */
325
+#define OBJECT_INFO_QUICK 8
326
+/*
327
+ * Do not attempt to fetch the object if missing (even if fetch_is_missing is
328
+ * nonzero).
329
+ */
330
+#define OBJECT_INFO_SKIP_FETCH_OBJECT 16
331
+/*
332
+ * This is meant for bulk prefetching of missing blobs in a partial
333
+ * clone. Implies OBJECT_INFO_SKIP_FETCH_OBJECT and OBJECT_INFO_QUICK
334
+ */
335
+#define OBJECT_INFO_FOR_PREFETCH (OBJECT_INFO_SKIP_FETCH_OBJECT | OBJECT_INFO_QUICK)
336
+
337
+/* Die if object corruption (not just an object being missing) was detected. */
338
+#define OBJECT_INFO_DIE_IF_CORRUPT 32
339
+
340
+int oid_object_info_extended(struct repository *r,
341
+ const struct object_id *,
342
+ struct object_info *, unsigned flags);
343
+
344
+/*
345
+ * Open the loose object at path, check its hash, and return the contents,
346
+ * use the "oi" argument to assert things about the object, or e.g. populate its
347
+ * type, and size. If the object is a blob, then "contents" may return NULL,
348
+ * to allow streaming of large blobs.
349
+ *
350
+ * Returns 0 on success, negative on error (details may be written to stderr).
351
+ */
352
+int read_loose_object(const char *path,
353
+ const struct object_id *expected_oid,
354
+ struct object_id *real_oid,
355
+ void **contents,
356
+ struct object_info *oi);
357
+
358
+/* Retry packed storage after checking packed and loose storage */
359
+#define HAS_OBJECT_RECHECK_PACKED 1
360
+
361
+/*
362
+ * Returns 1 if the object exists. This function will not lazily fetch objects
363
+ * in a partial clone.
364
+ */
365
+int has_object(struct repository *r, const struct object_id *oid,
366
+ unsigned flags);
367
+
368
+/*
369
+ * These macros and functions are deprecated. If checking existence for an
370
+ * object that is likely to be missing and/or whose absence is relatively
371
+ * inconsequential (or is consequential but the caller is prepared to handle
372
+ * it), use has_object(), which has better defaults (no lazy fetch in a partial
373
+ * clone and no rechecking of packed storage). In the unlikely event that a
374
+ * caller needs to assert existence of an object that it fully expects to
375
+ * exist, and wants to trigger a lazy fetch in a partial clone, use
376
+ * oid_object_info_extended() with a NULL struct object_info.
377
+ *
378
+ * These functions can be removed once all callers have migrated to
379
+ * has_object() and/or oid_object_info_extended().
380
+ */
381
+int repo_has_object_file(struct repository *r, const struct object_id *oid);
382
+int repo_has_object_file_with_flags(struct repository *r,
383
+ const struct object_id *oid, int flags);
384
+
385
+/*
386
+ * Return true iff an alternate object database has a loose object
387
+ * with the specified name. This function does not respect replace
388
+ * references.
389
+ */
390
+int has_loose_object_nonlocal(const struct object_id *);
391
+
392
+int has_loose_object(const struct object_id *);
393
+
394
+/**
395
+ * format_object_header() is a thin wrapper around s xsnprintf() that
396
+ * writes the initial "<type> <obj-len>" part of the loose object
397
+ * header. It returns the size that snprintf() returns + 1.
398
+ */
399
+int format_object_header(char *str, size_t size, enum object_type type,
400
+ size_t objsize);
401
+
402
+void assert_oid_type(const struct object_id *oid, enum object_type expect);
403
+
404
+/*
405
+ * Enabling the object read lock allows multiple threads to safely call the
406
+ * following functions in parallel: repo_read_object_file(),
407
+ * read_object_with_reference(), oid_object_info() and oid_object_info_extended().
408
+ *
409
+ * obj_read_lock() and obj_read_unlock() may also be used to protect other
410
+ * section which cannot execute in parallel with object reading. Since the used
411
+ * lock is a recursive mutex, these sections can even contain calls to object
412
+ * reading functions. However, beware that in these cases zlib inflation won't
413
+ * be performed in parallel, losing performance.
414
+ *
415
+ * TODO: oid_object_info_extended()'s call stack has a recursive behavior. If
416
+ * any of its callees end up calling it, this recursive call won't benefit from
417
+ * parallel inflation.
418
+ */
419
+void enable_obj_read_lock(void);
420
+void disable_obj_read_lock(void);
421
+
422
+extern int obj_read_use_lock;
423
+extern pthread_mutex_t obj_read_mutex;
424
+
425
+static inline void obj_read_lock(void)
426
+{
427
+ if(obj_read_use_lock)
428
+ pthread_mutex_lock(&obj_read_mutex);
429
+}
430
+
431
+static inline void obj_read_unlock(void)
432
+{
433
+ if(obj_read_use_lock)
434
+ pthread_mutex_unlock(&obj_read_mutex);
435
+}
436
+
437
+/*
438
+ * Iterate over the files in the loose-object parts of the object
439
+ * directory "path", triggering the following callbacks:
440
+ *
441
+ * - loose_object is called for each loose object we find.
442
+ *
443
+ * - loose_cruft is called for any files that do not appear to be
444
+ * loose objects. Note that we only look in the loose object
445
+ * directories "objects/[0-9a-f]{2}/", so we will not report
446
+ * "objects/foobar" as cruft.
447
+ *
448
+ * - loose_subdir is called for each top-level hashed subdirectory
449
+ * of the object directory (e.g., "$OBJDIR/f0"). It is called
450
+ * after the objects in the directory are processed.
451
+ *
452
+ * Any callback that is NULL will be ignored. Callbacks returning non-zero
453
+ * will end the iteration.
454
+ *
455
+ * In the "buf" variant, "path" is a strbuf which will also be used as a
456
+ * scratch buffer, but restored to its original contents before
457
+ * the function returns.
458
+ */
459
+typedef int each_loose_object_fn(const struct object_id *oid,
460
+ const char *path,
461
+ void *data);
462
+typedef int each_loose_cruft_fn(const char *basename,
463
+ const char *path,
464
+ void *data);
465
+typedef int each_loose_subdir_fn(unsigned int nr,
466
+ const char *path,
467
+ void *data);
468
+int for_each_file_in_obj_subdir(unsigned int subdir_nr,
469
+ struct strbuf *path,
470
+ each_loose_object_fn obj_cb,
471
+ each_loose_cruft_fn cruft_cb,
472
+ each_loose_subdir_fn subdir_cb,
473
+ void *data);
474
+int for_each_loose_file_in_objdir(const char *path,
475
+ each_loose_object_fn obj_cb,
476
+ each_loose_cruft_fn cruft_cb,
477
+ each_loose_subdir_fn subdir_cb,
478
+ void *data);
479
+int for_each_loose_file_in_objdir_buf(struct strbuf *path,
480
+ each_loose_object_fn obj_cb,
481
+ each_loose_cruft_fn cruft_cb,
482
+ each_loose_subdir_fn subdir_cb,
483
+ void *data);
484
+
485
+/* Flags for for_each_*_object() below. */
486
+enum for_each_object_flags {
487
+ /* Iterate only over local objects, not alternates. */
488
+ FOR_EACH_OBJECT_LOCAL_ONLY = (1<<0),
489
+
490
+ /* Only iterate over packs obtained from the promisor remote. */
491
+ FOR_EACH_OBJECT_PROMISOR_ONLY = (1<<1),
492
+
493
+ /*
494
+ * Visit objects within a pack in packfile order rather than .idx order
495
+ */
496
+ FOR_EACH_OBJECT_PACK_ORDER = (1<<2),
497
+
498
+ /* Only iterate over packs that are not marked as kept in-core. */
499
+ FOR_EACH_OBJECT_SKIP_IN_CORE_KEPT_PACKS = (1<<3),
500
+
501
+ /* Only iterate over packs that do not have .keep files. */
502
+ FOR_EACH_OBJECT_SKIP_ON_DISK_KEPT_PACKS = (1<<4),
503
+};
504
+
505
+/*
506
+ * Iterate over all accessible loose objects without respect to
507
+ * reachability. By default, this includes both local and alternate objects.
508
+ * The order in which objects are visited is unspecified.
509
+ *
510
+ * Any flags specific to packs are ignored.
511
+ */
512
+int for_each_loose_object(each_loose_object_fn, void *,
513
+ enum for_each_object_flags flags);
514
+
515
+/*
516
+ * Iterate over all accessible packed objects without respect to reachability.
517
+ * By default, this includes both local and alternate packs.
518
+ *
519
+ * Note that some objects may appear twice if they are found in multiple packs.
520
+ * Each pack is visited in an unspecified order. By default, objects within a
521
+ * pack are visited in pack-idx order (i.e., sorted by oid).
522
+ */
523
+typedef int each_packed_object_fn(const struct object_id *oid,
524
+ struct packed_git *pack,
525
+ uint32_t pos,
526
+ void *data);
527
+int for_each_object_in_pack(struct packed_git *p,
528
+ each_packed_object_fn, void *data,
529
+ enum for_each_object_flags flags);
530
+int for_each_packed_object(each_packed_object_fn, void *,
531
+ enum for_each_object_flags flags);
532
+
533
+#endif /* OBJECT_STORE_LL_H */
object-store.h
+1
-527
@@ -1,537 +1,11 @@
1
#ifndef OBJECT_STORE_H
2
#define OBJECT_STORE_H
3
4
-#include "object.h"
5
-#include "list.h"
6
-#include "thread-utils.h"
4
#include "khash.h"
5
#include "dir.h"
9
-#include "oidset.h"
10
-
11
-struct oidmap;
12
-struct oidtree;
13
-struct strbuf;
14
-
15
-struct object_directory {
16
- struct object_directory *next;
17
-
18
- /*
19
- * Used to store the results of readdir(3) calls when we are OK
20
- * sacrificing accuracy due to races for speed. That includes
21
- * object existence with OBJECT_INFO_QUICK, as well as
22
- * our search for unique abbreviated hashes. Don't use it for tasks
23
- * requiring greater accuracy!
24
- *
25
- * Be sure to call odb_load_loose_cache() before using.
26
- */
27
- uint32_t loose_objects_subdir_seen[8]; /* 256 bits */
28
- struct oidtree *loose_objects_cache;
29
-
30
- /*
31
- * This is a temporary object store created by the tmp_objdir
32
- * facility. Disable ref updates since the objects in the store
33
- * might be discarded on rollback.
34
- */
35
- int disable_ref_updates;
36
-
37
- /*
38
- * This object store is ephemeral, so there is no need to fsync.
39
- */
40
- int will_destroy;
41
-
42
- /*
43
- * Path to the alternative object store. If this is a relative path,
44
- * it is relative to the current working directory.
45
- */
46
- char *path;
47
-};
48
-
49
-struct input_stream {
50
- const void *(*read)(struct input_stream *, unsigned long *len);
51
- void *data;
52
- int is_finished;
53
-};
6
+#include "object-store-ll.h"
7
8
KHASH_INIT(odb_path_map, const char * /* key: odb_path */,
9
struct object_directory *, 1, fspathhash, fspatheq)
10
58
-void prepare_alt_odb(struct repository *r);
59
-int has_alt_odb(struct repository *r);
60
-char *compute_alternate_path(const char *path, struct strbuf *err);
61
-struct object_directory *find_odb(struct repository *r, const char *obj_dir);
62
-typedef int alt_odb_fn(struct object_directory *, void *);
63
-int foreach_alt_odb(alt_odb_fn, void*);
64
-typedef void alternate_ref_fn(const struct object_id *oid, void *);
65
-void for_each_alternate_ref(alternate_ref_fn, void *);
66
-
67
-/*
68
- * Add the directory to the on-disk alternates file; the new entry will also
69
- * take effect in the current process.
70
- */
71
-void add_to_alternates_file(const char *dir);
72
-
73
-/*
74
- * Add the directory to the in-memory list of alternates (along with any
75
- * recursive alternates it points to), but do not modify the on-disk alternates
76
- * file.
77
- */
78
-void add_to_alternates_memory(const char *dir);
79
-
80
-/*
81
- * Replace the current writable object directory with the specified temporary
82
- * object directory; returns the former primary object directory.
83
- */
84
-struct object_directory *set_temporary_primary_odb(const char *dir, int will_destroy);
85
-
86
-/*
87
- * Restore a previous ODB replaced by set_temporary_main_odb.
88
- */
89
-void restore_primary_odb(struct object_directory *restore_odb, const char *old_path);
90
-
91
-/*
92
- * Populate and return the loose object cache array corresponding to the
93
- * given object ID.
94
- */
95
-struct oidtree *odb_loose_cache(struct object_directory *odb,
96
- const struct object_id *oid);
97
-
98
-/* Empty the loose object cache for the specified object directory. */
99
-void odb_clear_loose_cache(struct object_directory *odb);
100
-
101
-/* Clear and free the specified object directory */
102
-void free_object_directory(struct object_directory *odb);
103
-
104
-struct packed_git {
105
- struct hashmap_entry packmap_ent;
106
- struct packed_git *next;
107
- struct list_head mru;
108
- struct pack_window *windows;
109
- off_t pack_size;
110
- const void *index_data;
111
- size_t index_size;
112
- uint32_t num_objects;
113
- uint32_t crc_offset;
114
- struct oidset bad_objects;
115
- int index_version;
116
- time_t mtime;
117
- int pack_fd;
118
- int index; /* for builtin/pack-objects.c */
119
- unsigned pack_local:1,
120
- pack_keep:1,
121
- pack_keep_in_core:1,
122
- freshened:1,
123
- do_not_close:1,
124
- pack_promisor:1,
125
- multi_pack_index:1,
126
- is_cruft:1;
127
- unsigned char hash[GIT_MAX_RAWSZ];
128
- struct revindex_entry *revindex;
129
- const uint32_t *revindex_data;
130
- const uint32_t *revindex_map;
131
- size_t revindex_size;
132
- /*
133
- * mtimes_map points at the beginning of the memory mapped region of
134
- * this pack's corresponding .mtimes file, and mtimes_size is the size
135
- * of that .mtimes file
136
- */
137
- const uint32_t *mtimes_map;
138
- size_t mtimes_size;
139
- /* something like ".git/objects/pack/xxxxx.pack" */
140
- char pack_name[FLEX_ARRAY]; /* more */
141
-};
142
-
143
-struct multi_pack_index;
144
-
145
-static inline int pack_map_entry_cmp(const void *cmp_data UNUSED,
146
- const struct hashmap_entry *entry,
147
- const struct hashmap_entry *entry2,
148
- const void *keydata)
149
-{
150
- const char *key = keydata;
151
- const struct packed_git *pg1, *pg2;
152
-
153
- pg1 = container_of(entry, const struct packed_git, packmap_ent);
154
- pg2 = container_of(entry2, const struct packed_git, packmap_ent);
155
-
156
- return strcmp(pg1->pack_name, key ? key : pg2->pack_name);
157
-}
158
-
159
-struct raw_object_store {
160
- /*
161
- * Set of all object directories; the main directory is first (and
162
- * cannot be NULL after initialization). Subsequent directories are
163
- * alternates.
164
- */
165
- struct object_directory *odb;
166
- struct object_directory **odb_tail;
167
- struct kh_odb_path_map *odb_by_path;
168
-
169
- int loaded_alternates;
170
-
171
- /*
172
- * A list of alternate object directories loaded from the environment;
173
- * this should not generally need to be accessed directly, but will
174
- * populate the "odb" list when prepare_alt_odb() is run.
175
- */
176
- char *alternate_db;
177
-
178
- /*
179
- * Objects that should be substituted by other objects
180
- * (see git-replace(1)).
181
- */
182
- struct oidmap *replace_map;
183
- unsigned replace_map_initialized : 1;
184
- pthread_mutex_t replace_mutex; /* protect object replace functions */
185
-
186
- struct commit_graph *commit_graph;
187
- unsigned commit_graph_attempted : 1; /* if loading has been attempted */
188
-
189
- /*
190
- * private data
191
- *
192
- * should only be accessed directly by packfile.c and midx.c
193
- */
194
- struct multi_pack_index *multi_pack_index;
195
-
196
- /*
197
- * private data
198
- *
199
- * should only be accessed directly by packfile.c
200
- */
201
-
202
- struct packed_git *packed_git;
203
- /* A most-recently-used ordered version of the packed_git list. */
204
- struct list_head packed_git_mru;
205
-
206
- struct {
207
- struct packed_git **packs;
208
- unsigned flags;
209
- } kept_pack_cache;
210
-
211
- /*
212
- * A map of packfiles to packed_git structs for tracking which
213
- * packs have been loaded already.
214
- */
215
- struct hashmap pack_map;
216
-
217
- /*
218
- * A fast, rough count of the number of objects in the repository.
219
- * These two fields are not meant for direct access. Use
220
- * repo_approximate_object_count() instead.
221
- */
222
- unsigned long approximate_object_count;
223
- unsigned approximate_object_count_valid : 1;
224
-
225
- /*
226
- * Whether packed_git has already been populated with this repository's
227
- * packs.
228
- */
229
- unsigned packed_git_initialized : 1;
230
-};
231
-
232
-struct raw_object_store *raw_object_store_new(void);
233
-void raw_object_store_clear(struct raw_object_store *o);
234
-
235
-/*
236
- * Put in `buf` the name of the file in the local object database that
237
- * would be used to store a loose object with the specified oid.
238
- */
239
-const char *loose_object_path(struct repository *r, struct strbuf *buf,
240
- const struct object_id *oid);
241
-
242
-void *map_loose_object(struct repository *r, const struct object_id *oid,
243
- unsigned long *size);
244
-
245
-void *repo_read_object_file(struct repository *r,
246
- const struct object_id *oid,
247
- enum object_type *type,
248
- unsigned long *size);
249
-
250
-/* Read and unpack an object file into memory, write memory to an object file */
251
-int oid_object_info(struct repository *r, const struct object_id *, unsigned long *);
252
-
253
-void hash_object_file(const struct git_hash_algo *algo, const void *buf,
254
- unsigned long len, enum object_type type,
255
- struct object_id *oid);
256
-
257
-int write_object_file_flags(const void *buf, unsigned long len,
258
- enum object_type type, struct object_id *oid,
259
- unsigned flags);
260
-static inline int write_object_file(const void *buf, unsigned long len,
261
- enum object_type type, struct object_id *oid)
262
-{
263
- return write_object_file_flags(buf, len, type, oid, 0);
264
-}
265
-
266
-int write_object_file_literally(const void *buf, unsigned long len,
267
- const char *type, struct object_id *oid,
268
- unsigned flags);
269
-int stream_loose_object(struct input_stream *in_stream, size_t len,
270
- struct object_id *oid);
271
-
272
-/*
273
- * Add an object file to the in-memory object store, without writing it
274
- * to disk.
275
- *
276
- * Callers are responsible for calling write_object_file to record the
277
- * object in persistent storage before writing any other new objects
278
- * that reference it.
279
- */
280
-int pretend_object_file(void *, unsigned long, enum object_type,
281
- struct object_id *oid);
282
-
283
-int force_object_loose(const struct object_id *oid, time_t mtime);
284
-
285
-struct object_info {
286
- /* Request */
287
- enum object_type *typep;
288
- unsigned long *sizep;
289
- off_t *disk_sizep;
290
- struct object_id *delta_base_oid;
291
- struct strbuf *type_name;
292
- void **contentp;
293
-
294
- /* Response */
295
- enum {
296
- OI_CACHED,
297
- OI_LOOSE,
298
- OI_PACKED,
299
- OI_DBCACHED
300
- } whence;
301
- union {
302
- /*
303
- * struct {
304
- * ... Nothing to expose in this case
305
- * } cached;
306
- * struct {
307
- * ... Nothing to expose in this case
308
- * } loose;
309
- */
310
- struct {
311
- struct packed_git *pack;
312
- off_t offset;
313
- unsigned int is_delta;
314
- } packed;
315
- } u;
316
-};
317
-
318
-/*
319
- * Initializer for a "struct object_info" that wants no items. You may
320
- * also memset() the memory to all-zeroes.
321
- */
322
-#define OBJECT_INFO_INIT { 0 }
323
-
324
-/* Invoke lookup_replace_object() on the given hash */
325
-#define OBJECT_INFO_LOOKUP_REPLACE 1
326
-/* Allow reading from a loose object file of unknown/bogus type */
327
-#define OBJECT_INFO_ALLOW_UNKNOWN_TYPE 2
328
-/* Do not retry packed storage after checking packed and loose storage */
329
-#define OBJECT_INFO_QUICK 8
330
-/*
331
- * Do not attempt to fetch the object if missing (even if fetch_is_missing is
332
- * nonzero).
333
- */
334
-#define OBJECT_INFO_SKIP_FETCH_OBJECT 16
335
-/*
336
- * This is meant for bulk prefetching of missing blobs in a partial
337
- * clone. Implies OBJECT_INFO_SKIP_FETCH_OBJECT and OBJECT_INFO_QUICK
338
- */
339
-#define OBJECT_INFO_FOR_PREFETCH (OBJECT_INFO_SKIP_FETCH_OBJECT | OBJECT_INFO_QUICK)
340
-
341
-/* Die if object corruption (not just an object being missing) was detected. */
342
-#define OBJECT_INFO_DIE_IF_CORRUPT 32
343
-
344
-int oid_object_info_extended(struct repository *r,
345
- const struct object_id *,
346
- struct object_info *, unsigned flags);
347
-
348
-/*
349
- * Open the loose object at path, check its hash, and return the contents,
350
- * use the "oi" argument to assert things about the object, or e.g. populate its
351
- * type, and size. If the object is a blob, then "contents" may return NULL,
352
- * to allow streaming of large blobs.
353
- *
354
- * Returns 0 on success, negative on error (details may be written to stderr).
355
- */
356
-int read_loose_object(const char *path,
357
- const struct object_id *expected_oid,
358
- struct object_id *real_oid,
359
- void **contents,
360
- struct object_info *oi);
361
-
362
-/* Retry packed storage after checking packed and loose storage */
363
-#define HAS_OBJECT_RECHECK_PACKED 1
364
-
365
-/*
366
- * Returns 1 if the object exists. This function will not lazily fetch objects
367
- * in a partial clone.
368
- */
369
-int has_object(struct repository *r, const struct object_id *oid,
370
- unsigned flags);
371
-
372
-/*
373
- * These macros and functions are deprecated. If checking existence for an
374
- * object that is likely to be missing and/or whose absence is relatively
375
- * inconsequential (or is consequential but the caller is prepared to handle
376
- * it), use has_object(), which has better defaults (no lazy fetch in a partial
377
- * clone and no rechecking of packed storage). In the unlikely event that a
378
- * caller needs to assert existence of an object that it fully expects to
379
- * exist, and wants to trigger a lazy fetch in a partial clone, use
380
- * oid_object_info_extended() with a NULL struct object_info.
381
- *
382
- * These functions can be removed once all callers have migrated to
383
- * has_object() and/or oid_object_info_extended().
384
- */
385
-int repo_has_object_file(struct repository *r, const struct object_id *oid);
386
-int repo_has_object_file_with_flags(struct repository *r,
387
- const struct object_id *oid, int flags);
388
-
389
-/*
390
- * Return true iff an alternate object database has a loose object
391
- * with the specified name. This function does not respect replace
392
- * references.
393
- */
394
-int has_loose_object_nonlocal(const struct object_id *);
395
-
396
-int has_loose_object(const struct object_id *);
397
-
398
-/**
399
- * format_object_header() is a thin wrapper around s xsnprintf() that
400
- * writes the initial "<type> <obj-len>" part of the loose object
401
- * header. It returns the size that snprintf() returns + 1.
402
- */
403
-int format_object_header(char *str, size_t size, enum object_type type,
404
- size_t objsize);
405
-
406
-void assert_oid_type(const struct object_id *oid, enum object_type expect);
407
-
408
-/*
409
- * Enabling the object read lock allows multiple threads to safely call the
410
- * following functions in parallel: repo_read_object_file(),
411
- * read_object_with_reference(), oid_object_info() and oid_object_info_extended().
412
- *
413
- * obj_read_lock() and obj_read_unlock() may also be used to protect other
414
- * section which cannot execute in parallel with object reading. Since the used
415
- * lock is a recursive mutex, these sections can even contain calls to object
416
- * reading functions. However, beware that in these cases zlib inflation won't
417
- * be performed in parallel, losing performance.
418
- *
419
- * TODO: oid_object_info_extended()'s call stack has a recursive behavior. If
420
- * any of its callees end up calling it, this recursive call won't benefit from
421
- * parallel inflation.
422
- */
423
-void enable_obj_read_lock(void);
424
-void disable_obj_read_lock(void);
425
-
426
-extern int obj_read_use_lock;
427
-extern pthread_mutex_t obj_read_mutex;
428
-
429
-static inline void obj_read_lock(void)
430
-{
431
- if(obj_read_use_lock)
432
- pthread_mutex_lock(&obj_read_mutex);
433
-}
434
-
435
-static inline void obj_read_unlock(void)
436
-{
437
- if(obj_read_use_lock)
438
- pthread_mutex_unlock(&obj_read_mutex);
439
-}
440
-
441
-/*
442
- * Iterate over the files in the loose-object parts of the object
443
- * directory "path", triggering the following callbacks:
444
- *
445
- * - loose_object is called for each loose object we find.
446
- *
447
- * - loose_cruft is called for any files that do not appear to be
448
- * loose objects. Note that we only look in the loose object
449
- * directories "objects/[0-9a-f]{2}/", so we will not report
450
- * "objects/foobar" as cruft.
451
- *
452
- * - loose_subdir is called for each top-level hashed subdirectory
453
- * of the object directory (e.g., "$OBJDIR/f0"). It is called
454
- * after the objects in the directory are processed.
455
- *
456
- * Any callback that is NULL will be ignored. Callbacks returning non-zero
457
- * will end the iteration.
458
- *
459
- * In the "buf" variant, "path" is a strbuf which will also be used as a
460
- * scratch buffer, but restored to its original contents before
461
- * the function returns.
462
- */
463
-typedef int each_loose_object_fn(const struct object_id *oid,
464
- const char *path,
465
- void *data);
466
-typedef int each_loose_cruft_fn(const char *basename,
467
- const char *path,
468
- void *data);
469
-typedef int each_loose_subdir_fn(unsigned int nr,
470
- const char *path,
471
- void *data);
472
-int for_each_file_in_obj_subdir(unsigned int subdir_nr,
473
- struct strbuf *path,
474
- each_loose_object_fn obj_cb,
475
- each_loose_cruft_fn cruft_cb,
476
- each_loose_subdir_fn subdir_cb,
477
- void *data);
478
-int for_each_loose_file_in_objdir(const char *path,
479
- each_loose_object_fn obj_cb,
480
- each_loose_cruft_fn cruft_cb,
481
- each_loose_subdir_fn subdir_cb,
482
- void *data);
483
-int for_each_loose_file_in_objdir_buf(struct strbuf *path,
484
- each_loose_object_fn obj_cb,
485
- each_loose_cruft_fn cruft_cb,
486
- each_loose_subdir_fn subdir_cb,
487
- void *data);
488
-
489
-/* Flags for for_each_*_object() below. */
490
-enum for_each_object_flags {
491
- /* Iterate only over local objects, not alternates. */
492
- FOR_EACH_OBJECT_LOCAL_ONLY = (1<<0),
493
-
494
- /* Only iterate over packs obtained from the promisor remote. */
495
- FOR_EACH_OBJECT_PROMISOR_ONLY = (1<<1),
496
-
497
- /*
498
- * Visit objects within a pack in packfile order rather than .idx order
499
- */
500
- FOR_EACH_OBJECT_PACK_ORDER = (1<<2),
501
-
502
- /* Only iterate over packs that are not marked as kept in-core. */
503
- FOR_EACH_OBJECT_SKIP_IN_CORE_KEPT_PACKS = (1<<3),
504
-
505
- /* Only iterate over packs that do not have .keep files. */
506
- FOR_EACH_OBJECT_SKIP_ON_DISK_KEPT_PACKS = (1<<4),
507
-};
508
-
509
-/*
510
- * Iterate over all accessible loose objects without respect to
511
- * reachability. By default, this includes both local and alternate objects.
512
- * The order in which objects are visited is unspecified.
513
- *
514
- * Any flags specific to packs are ignored.
515
- */
516
-int for_each_loose_object(each_loose_object_fn, void *,
517
- enum for_each_object_flags flags);
518
-
519
-/*
520
- * Iterate over all accessible packed objects without respect to reachability.
521
- * By default, this includes both local and alternate packs.
522
- *
523
- * Note that some objects may appear twice if they are found in multiple packs.
524
- * Each pack is visited in an unspecified order. By default, objects within a
525
- * pack are visited in pack-idx order (i.e., sorted by oid).
526
- */
527
-typedef int each_packed_object_fn(const struct object_id *oid,
528
- struct packed_git *pack,
529
- uint32_t pos,
530
- void *data);
531
-int for_each_object_in_pack(struct packed_git *p,
532
- each_packed_object_fn, void *data,
533
- enum for_each_object_flags flags);
534
-int for_each_packed_object(each_packed_object_fn, void *,
535
- enum for_each_object_flags flags);
536
-
11
#endif /* OBJECT_STORE_H */
oss-fuzz/fuzz-pack-idx.c
+1
-1
@@ -1,5 +1,5 @@
1
#include "git-compat-util.h"
2
-#include "object-store.h"
2
+#include "object-store-ll.h"
3
#include "packfile.h"
4
5
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
pack-bitmap-write.c
+1
-1
@@ -3,7 +3,7 @@
3
#include "environment.h"
4
#include "gettext.h"
5
#include "hex.h"
6
-#include "object-store.h"
6
+#include "object-store-ll.h"
7
#include "commit.h"
8
#include "tag.h"
9
#include "diff.h"
pack-bitmap.c
+1
-1
@@ -17,7 +17,7 @@
17
#include "repository.h"
18
#include "trace2.h"
19
#include "object-file.h"
20
-#include "object-store.h"
20
+#include "object-store-ll.h"
21
#include "list-objects-filter-options.h"
22
#include "midx.h"
23
#include "config.h"
pack-check.c
+1
-1
@@ -7,7 +7,7 @@
7
#include "progress.h"
8
#include "packfile.h"
9
#include "object-file.h"
10
-#include "object-store.h"
10
+#include "object-store-ll.h"
11
12
struct idx_entry {
13
off_t offset;
pack-mtimes.c
+2
-1
@@ -2,8 +2,9 @@
2
#include "gettext.h"
3
#include "pack-mtimes.h"
4
#include "object-file.h"
5
-#include "object-store.h"
5
+#include "object-store-ll.h"
6
#include "packfile.h"
7
+#include "strbuf.h"
8
9
static char *pack_mtimes_filename(struct packed_git *p)
10
{
pack-objects.h
+1
-1
@@ -1,7 +1,7 @@
1
#ifndef PACK_OBJECTS_H
2
#define PACK_OBJECTS_H
3
4
-#include "object-store.h"
4
+#include "object-store-ll.h"
5
#include "thread-utils.h"
6
#include "pack.h"
7
pack-revindex.c
+2
-1
@@ -2,8 +2,9 @@
2
#include "gettext.h"
3
#include "pack-revindex.h"
4
#include "object-file.h"
5
-#include "object-store.h"
5
+#include "object-store-ll.h"
6
#include "packfile.h"
7
+#include "strbuf.h"
8
#include "trace2.h"
9
#include "config.h"
10
#include "midx.h"
pack-write.c
+1
@@ -11,6 +11,7 @@
11
#include "pack-objects.h"
12
#include "pack-revindex.h"
13
#include "path.h"
14
+#include "strbuf.h"
15
#include "wrapper.h"
16
17
void reset_pack_idx_option(struct pack_idx_option *opts)
packfile.c
+1
-1
@@ -19,7 +19,7 @@
19
#include "tree-walk.h"
20
#include "tree.h"
21
#include "object-file.h"
22
-#include "object-store.h"
22
+#include "object-store-ll.h"
23
#include "midx.h"
24
#include "commit-graph.h"
25
#include "pack-revindex.h"
path.c
+1
-1
@@ -15,7 +15,7 @@
15
#include "submodule-config.h"
16
#include "path.h"
17
#include "packfile.h"
18
-#include "object-store.h"
18
+#include "object-store-ll.h"
19
#include "lockfile.h"
20
#include "exec-cmd.h"
21
#include "wrapper.h"
promisor-remote.c
+1
-1
@@ -1,7 +1,7 @@
1
#include "git-compat-util.h"
2
#include "gettext.h"
3
#include "hex.h"
4
-#include "object-store.h"
4
+#include "object-store-ll.h"
5
#include "promisor-remote.h"
6
#include "config.h"
7
#include "trace2.h"
protocol-caps.c
+1
-1
@@ -7,7 +7,7 @@
7
#include "hash-ll.h"
8
#include "hex.h"
9
#include "object.h"
10
-#include "object-store.h"
10
+#include "object-store-ll.h"
11
#include "string-list.h"
12
#include "strbuf.h"
13
prune-packed.c
+1
-1
@@ -1,7 +1,7 @@
1
#include "git-compat-util.h"
2
#include "environment.h"
3
#include "gettext.h"
4
-#include "object-store.h"
4
+#include "object-store-ll.h"
5
#include "packfile.h"
6
#include "progress.h"
7
#include "prune-packed.h"
reachable.c
+1
-1
@@ -13,7 +13,7 @@
13
#include "list-objects.h"
14
#include "packfile.h"
15
#include "worktree.h"
16
-#include "object-store.h"
16
+#include "object-store-ll.h"
17
#include "pack-bitmap.h"
18
#include "pack-mtimes.h"
19
read-cache.c
+1
-1
@@ -17,7 +17,7 @@
17
#include "refs.h"
18
#include "dir.h"
19
#include "object-file.h"
20
-#include "object-store.h"
20
+#include "object-store-ll.h"
21
#include "oid-array.h"
22
#include "tree.h"
23
#include "commit.h"
ref-filter.c
+1
-1
@@ -8,7 +8,7 @@
8
#include "refs.h"
9
#include "wildmatch.h"
10
#include "object-name.h"
11
-#include "object-store.h"
11
+#include "object-store-ll.h"
12
#include "oid-array.h"
13
#include "repository.h"
14
#include "commit.h"
reflog.c
+1
-1
@@ -1,6 +1,6 @@
1
#include "git-compat-util.h"
2
#include "gettext.h"
3
-#include "object-store.h"
3
+#include "object-store-ll.h"
4
#include "reflog.h"
5
#include "refs.h"
6
#include "revision.h"
refs.c
+1
-1
@@ -17,7 +17,7 @@
17
#include "run-command.h"
18
#include "hook.h"
19
#include "object-name.h"
20
-#include "object-store.h"
20
+#include "object-store-ll.h"
21
#include "object.h"
22
#include "path.h"
23
#include "tag.h"
remote.c
+1
-1
@@ -10,7 +10,7 @@
10
#include "refs.h"
11
#include "refspec.h"
12
#include "object-name.h"
13
-#include "object-store.h"
13
+#include "object-store-ll.h"
14
#include "path.h"
15
#include "commit.h"
16
#include "diff.h"
replace-object.c
+1
-1
@@ -2,7 +2,7 @@
2
#include "gettext.h"
3
#include "hex.h"
4
#include "oidmap.h"
5
-#include "object-store.h"
5
+#include "object-store-ll.h"
6
#include "replace-object.h"
7
#include "refs.h"
8
#include "repository.h"
replace-object.h
+1
-1
@@ -3,7 +3,7 @@
3
4
#include "oidmap.h"
5
#include "repository.h"
6
-#include "object-store.h"
6
+#include "object-store-ll.h"
7
8
/*
9
* Do replace refs need to be checked this run? This variable is
repository.c
+1
-1
@@ -6,7 +6,7 @@
6
#include "git-compat-util.h"
7
#include "abspath.h"
8
#include "repository.h"
9
-#include "object-store.h"
9
+#include "object-store-ll.h"
10
#include "config.h"
11
#include "object.h"
12
#include "lockfile.h"
rerere.c
+1
-1
@@ -17,7 +17,7 @@
17
#include "path.h"
18
#include "pathspec.h"
19
#include "object-file.h"
20
-#include "object-store.h"
20
+#include "object-store-ll.h"
21
#include "hash-lookup.h"
22
#include "strmap.h"
23
#include "wrapper.h"
revision.c
+1
-1
@@ -6,7 +6,7 @@
6
#include "hex.h"
7
#include "object-name.h"
8
#include "object-file.h"
9
-#include "object-store.h"
9
+#include "object-store-ll.h"
10
#include "tag.h"
11
#include "blob.h"
12
#include "tree.h"
send-pack.c
+1
-1
@@ -5,7 +5,7 @@
5
#include "gettext.h"
6
#include "hex.h"
7
#include "refs.h"
8
-#include "object-store.h"
8
+#include "object-store-ll.h"
9
#include "pkt-line.h"
10
#include "sideband.h"
11
#include "run-command.h"
sequencer.c
+1
-1
@@ -11,7 +11,7 @@
11
#include "dir.h"
12
#include "object-file.h"
13
#include "object-name.h"
14
-#include "object-store.h"
14
+#include "object-store-ll.h"
15
#include "object.h"
16
#include "pager.h"
17
#include "commit.h"
server-info.c
+1
-1
@@ -11,7 +11,7 @@
11
#include "packfile.h"
12
#include "path.h"
13
#include "object-file.h"
14
-#include "object-store.h"
14
+#include "object-store-ll.h"
15
#include "server-info.h"
16
#include "strbuf.h"
17
#include "wrapper.h"
shallow.c
+1
-1
@@ -4,7 +4,7 @@
4
#include "repository.h"
5
#include "tempfile.h"
6
#include "lockfile.h"
7
-#include "object-store.h"
7
+#include "object-store-ll.h"
8
#include "commit.h"
9
#include "tag.h"
10
#include "pkt-line.h"
streaming.c
+1
-1
@@ -7,7 +7,7 @@
7
#include "streaming.h"
8
#include "repository.h"
9
#include "object-file.h"
10
-#include "object-store.h"
10
+#include "object-store-ll.h"
11
#include "replace-object.h"
12
#include "packfile.h"
13
#include "wrapper.h"
submodule-config.c
+1
-1
@@ -11,7 +11,7 @@
11
#include "submodule.h"
12
#include "strbuf.h"
13
#include "object-name.h"
14
-#include "object-store.h"
14
+#include "object-store-ll.h"
15
#include "parse-options.h"
16
#include "thread-utils.h"
17
#include "tree-walk.h"
submodule.c
+1
-1
@@ -27,7 +27,7 @@
27
#include "parse-options.h"
28
#include "object-file.h"
29
#include "object-name.h"
30
-#include "object-store.h"
30
+#include "object-store-ll.h"
31
#include "commit-reach.h"
32
#include "read-cache-ll.h"
33
#include "setup.h"
t/helper/test-pack-mtimes.c
+1
-1
@@ -1,7 +1,7 @@
1
#include "test-tool.h"
2
#include "hex.h"
3
#include "strbuf.h"
4
-#include "object-store.h"
4
+#include "object-store-ll.h"
5
#include "packfile.h"
6
#include "pack-mtimes.h"
7
#include "setup.h"
t/helper/test-partial-clone.c
+1
-1
@@ -1,7 +1,7 @@
1
#include "test-tool.h"
2
#include "hex.h"
3
#include "repository.h"
4
-#include "object-store.h"
4
+#include "object-store-ll.h"
5
#include "setup.h"
6
7
/*
t/helper/test-read-graph.c
+1
-1
@@ -1,7 +1,7 @@
1
#include "test-tool.h"
2
#include "commit-graph.h"
3
#include "repository.h"
4
-#include "object-store.h"
4
+#include "object-store-ll.h"
5
#include "bloom.h"
6
#include "setup.h"
7
t/helper/test-read-midx.c
+1
-1
@@ -2,7 +2,7 @@
2
#include "hex.h"
3
#include "midx.h"
4
#include "repository.h"
5
-#include "object-store.h"
5
+#include "object-store-ll.h"
6
#include "pack-bitmap.h"
7
#include "packfile.h"
8
#include "setup.h"
t/helper/test-ref-store.c
+2
-1
@@ -3,9 +3,10 @@
3
#include "refs.h"
4
#include "setup.h"
5
#include "worktree.h"
6
-#include "object-store.h"
6
+#include "object-store-ll.h"
7
#include "path.h"
8
#include "repository.h"
9
+#include "strbuf.h"
10
#include "revision.h"
11
12
struct flag_definition {
t/helper/test-repository.c
+1
-1
@@ -4,7 +4,7 @@
4
#include "config.h"
5
#include "environment.h"
6
#include "hex.h"
7
-#include "object-store.h"
7
+#include "object-store-ll.h"
8
#include "object.h"
9
#include "repository.h"
10
#include "setup.h"
tag.c
+1
-1
@@ -2,7 +2,7 @@
2
#include "environment.h"
3
#include "tag.h"
4
#include "object-name.h"
5
-#include "object-store.h"
5
+#include "object-store-ll.h"
6
#include "commit.h"
7
#include "tree.h"
8
#include "blob.h"
tmp-objdir.c
+1
-1
@@ -11,7 +11,7 @@
11
#include "strbuf.h"
12
#include "strvec.h"
13
#include "quote.h"
14
-#include "object-store.h"
14
+#include "object-store-ll.h"
15
16
struct tmp_objdir {
17
struct strbuf path;
transport.c
+1
-1
@@ -27,7 +27,7 @@
27
#include "transport-internal.h"
28
#include "protocol.h"
29
#include "object-name.h"
30
-#include "object-store.h"
30
+#include "object-store-ll.h"
31
#include "color.h"
32
#include "bundle-uri.h"
33
#include "wrapper.h"
tree-walk.c
+1
-1
@@ -5,7 +5,7 @@
5
#include "gettext.h"
6
#include "hex.h"
7
#include "object-file.h"
8
-#include "object-store.h"
8
+#include "object-store-ll.h"
9
#include "trace2.h"
10
#include "tree.h"
11
#include "pathspec.h"
tree.c
+1
-1
@@ -3,7 +3,7 @@
3
#include "hex.h"
4
#include "tree.h"
5
#include "object-name.h"
6
-#include "object-store.h"
6
+#include "object-store-ll.h"
7
#include "blob.h"
8
#include "commit.h"
9
#include "tag.h"
unpack-trees.c
+1
-1
@@ -23,7 +23,7 @@
23
#include "symlinks.h"
24
#include "trace2.h"
25
#include "fsmonitor.h"
26
-#include "object-store.h"
26
+#include "object-store-ll.h"
27
#include "promisor-remote.h"
28
#include "entry.h"
29
#include "parallel-checkout.h"
upload-pack.c
+1
-1
@@ -7,7 +7,7 @@
7
#include "pkt-line.h"
8
#include "sideband.h"
9
#include "repository.h"
10
-#include "object-store.h"
10
+#include "object-store-ll.h"
11
#include "oid-array.h"
12
#include "tag.h"
13
#include "object.h"
walker.c
+2
-1
@@ -3,8 +3,9 @@
3
#include "hex.h"
4
#include "walker.h"
5
#include "repository.h"
6
-#include "object-store.h"
6
+#include "object-store-ll.h"
7
#include "commit.h"
8
+#include "strbuf.h"
9
#include "tree.h"
10
#include "tree-walk.h"
11
#include "tag.h"
xdiff-interface.c
+2
-1
@@ -1,7 +1,8 @@
1
#include "git-compat-util.h"
2
#include "config.h"
3
#include "hex.h"
4
-#include "object-store.h"
4
+#include "object-store-ll.h"
5
+#include "strbuf.h"
6
#include "xdiff-interface.h"
7
#include "xdiff/xtypes.h"
8
#include "xdiff/xdiffi.h"