Line | Count | Source (jump to first uncovered line) |
1 | | #ifndef OBJECT_H |
2 | | #define OBJECT_H |
3 | | |
4 | | #include "hash.h" |
5 | | |
6 | | struct buffer_slab; |
7 | | struct repository; |
8 | | |
9 | | struct parsed_object_pool { |
10 | | struct repository *repo; |
11 | | struct object **obj_hash; |
12 | | int nr_objs, obj_hash_size; |
13 | | |
14 | | /* TODO: migrate alloc_states to mem-pool? */ |
15 | | struct alloc_state *blob_state; |
16 | | struct alloc_state *tree_state; |
17 | | struct alloc_state *commit_state; |
18 | | struct alloc_state *tag_state; |
19 | | struct alloc_state *object_state; |
20 | | |
21 | | /* parent substitutions from .git/info/grafts and .git/shallow */ |
22 | | struct commit_graft **grafts; |
23 | | int grafts_alloc, grafts_nr; |
24 | | |
25 | | int is_shallow; |
26 | | struct stat_validity *shallow_stat; |
27 | | char *alternate_shallow_file; |
28 | | |
29 | | int commit_graft_prepared; |
30 | | int substituted_parent; |
31 | | |
32 | | struct buffer_slab *buffer_slab; |
33 | | }; |
34 | | |
35 | | struct parsed_object_pool *parsed_object_pool_new(struct repository *repo); |
36 | | void parsed_object_pool_clear(struct parsed_object_pool *o); |
37 | | void parsed_object_pool_reset_commit_grafts(struct parsed_object_pool *o); |
38 | | |
39 | | struct object_list { |
40 | | struct object *item; |
41 | | struct object_list *next; |
42 | | }; |
43 | | |
44 | | struct object_array { |
45 | | unsigned int nr; |
46 | | unsigned int alloc; |
47 | | struct object_array_entry { |
48 | | struct object *item; |
49 | | /* |
50 | | * name or NULL. If non-NULL, the memory pointed to |
51 | | * is owned by this object *except* if it points at |
52 | | * object_array_slopbuf, which is a static copy of the |
53 | | * empty string. |
54 | | */ |
55 | | char *name; |
56 | | char *path; |
57 | | unsigned mode; |
58 | | } *objects; |
59 | | }; |
60 | | |
61 | 0 | #define OBJECT_ARRAY_INIT { 0 } |
62 | | |
63 | | void object_array_init(struct object_array *array); |
64 | | |
65 | | /* |
66 | | * object flag allocation: |
67 | | * revision.h: 0---------10 15 23------27 |
68 | | * fetch-pack.c: 01 67 |
69 | | * negotiator/default.c: 2--5 |
70 | | * walker.c: 0-2 |
71 | | * upload-pack.c: 4 11-----14 16-----19 |
72 | | * builtin/blame.c: 12-13 |
73 | | * bisect.c: 16 |
74 | | * bundle.c: 16 |
75 | | * http-push.c: 11-----14 |
76 | | * commit-graph.c: 15 |
77 | | * commit-reach.c: 16-----19 |
78 | | * sha1-name.c: 20 |
79 | | * list-objects-filter.c: 21 |
80 | | * bloom.c: 2122 |
81 | | * builtin/fsck.c: 0--3 |
82 | | * builtin/gc.c: 0 |
83 | | * builtin/index-pack.c: 2021 |
84 | | * reflog.c: 10--12 |
85 | | * builtin/show-branch.c: 0-------------------------------------------26 |
86 | | * builtin/unpack-objects.c: 2021 |
87 | | * pack-bitmap.h: 2122 |
88 | | */ |
89 | 0 | #define FLAG_BITS 28 |
90 | | |
91 | | #define TYPE_BITS 3 |
92 | | |
93 | | /* |
94 | | * Values in this enum (except those outside the 3 bit range) are part |
95 | | * of pack file format. See gitformat-pack(5) for more information. |
96 | | */ |
97 | | enum object_type { |
98 | | OBJ_BAD = -1, |
99 | | OBJ_NONE = 0, |
100 | | OBJ_COMMIT = 1, |
101 | | OBJ_TREE = 2, |
102 | | OBJ_BLOB = 3, |
103 | | OBJ_TAG = 4, |
104 | | /* 5 for future expansion */ |
105 | | OBJ_OFS_DELTA = 6, |
106 | | OBJ_REF_DELTA = 7, |
107 | | OBJ_ANY, |
108 | | OBJ_MAX |
109 | | }; |
110 | | |
111 | | /* unknown mode (impossible combination S_IFIFO|S_IFCHR) */ |
112 | 0 | #define S_IFINVALID 0030000 |
113 | | |
114 | | /* |
115 | | * A "directory link" is a link to another git directory. |
116 | | * |
117 | | * The value 0160000 is not normally a valid mode, and |
118 | | * also just happens to be S_IFDIR + S_IFLNK |
119 | | */ |
120 | 0 | #define S_IFGITLINK 0160000 |
121 | 0 | #define S_ISGITLINK(m) (((m) & S_IFMT) == S_IFGITLINK) |
122 | | |
123 | 0 | #define S_ISSPARSEDIR(m) ((m) == S_IFDIR) |
124 | | |
125 | | static inline enum object_type object_type(unsigned int mode) |
126 | 0 | { |
127 | 0 | return S_ISDIR(mode) ? OBJ_TREE : |
128 | 0 | S_ISGITLINK(mode) ? OBJ_COMMIT : |
129 | 0 | OBJ_BLOB; |
130 | 0 | } Unexecuted instantiation: add.c:object_type Unexecuted instantiation: am.c:object_type Unexecuted instantiation: archive.c:object_type Unexecuted instantiation: bisect.c:object_type Unexecuted instantiation: blame.c:object_type Unexecuted instantiation: branch.c:object_type Unexecuted instantiation: bugreport.c:object_type Unexecuted instantiation: bundle.c:object_type Unexecuted instantiation: cat-file.c:object_type Unexecuted instantiation: check-attr.c:object_type Unexecuted instantiation: check-ref-format.c:object_type Unexecuted instantiation: checkout-index.c:object_type Unexecuted instantiation: checkout.c:object_type Unexecuted instantiation: clean.c:object_type Unexecuted instantiation: clone.c:object_type Unexecuted instantiation: commit-graph.c:object_type Unexecuted instantiation: commit-tree.c:object_type Unexecuted instantiation: commit.c:object_type Unexecuted instantiation: config.c:object_type Unexecuted instantiation: count-objects.c:object_type Unexecuted instantiation: credential-cache--daemon.c:object_type Unexecuted instantiation: describe.c:object_type Unexecuted instantiation: diagnose.c:object_type Unexecuted instantiation: diff-files.c:object_type Unexecuted instantiation: diff-index.c:object_type Unexecuted instantiation: diff-tree.c:object_type Unexecuted instantiation: diff.c:object_type Unexecuted instantiation: difftool.c:object_type Unexecuted instantiation: fast-export.c:object_type Unexecuted instantiation: fast-import.c:object_type Unexecuted instantiation: fetch-pack.c:object_type Unexecuted instantiation: fetch.c:object_type Unexecuted instantiation: for-each-ref.c:object_type Unexecuted instantiation: fsck.c:object_type Unexecuted instantiation: gc.c:object_type Unexecuted instantiation: get-tar-commit-id.c:object_type Unexecuted instantiation: grep.c:object_type Unexecuted instantiation: hash-object.c:object_type Unexecuted instantiation: help.c:object_type Unexecuted instantiation: index-pack.c:object_type Unexecuted instantiation: init-db.c:object_type Unexecuted instantiation: log.c:object_type Unexecuted instantiation: ls-files.c:object_type Unexecuted instantiation: ls-remote.c:object_type Unexecuted instantiation: ls-tree.c:object_type Unexecuted instantiation: merge-base.c:object_type Unexecuted instantiation: merge-file.c:object_type Unexecuted instantiation: merge-recursive.c:object_type Unexecuted instantiation: merge-tree.c:object_type Unexecuted instantiation: merge.c:object_type Unexecuted instantiation: mktag.c:object_type Unexecuted instantiation: mktree.c:object_type Unexecuted instantiation: multi-pack-index.c:object_type Unexecuted instantiation: mv.c:object_type Unexecuted instantiation: name-rev.c:object_type Unexecuted instantiation: notes.c:object_type Unexecuted instantiation: pack-objects.c:object_type Unexecuted instantiation: pack-redundant.c:object_type Unexecuted instantiation: pack-refs.c:object_type Unexecuted instantiation: patch-id.c:object_type Unexecuted instantiation: prune.c:object_type Unexecuted instantiation: pull.c:object_type Unexecuted instantiation: push.c:object_type Unexecuted instantiation: range-diff.c:object_type Unexecuted instantiation: read-tree.c:object_type Unexecuted instantiation: rebase.c:object_type Unexecuted instantiation: receive-pack.c:object_type Unexecuted instantiation: reflog.c:object_type Unexecuted instantiation: refs.c:object_type Unexecuted instantiation: remote-ext.c:object_type Unexecuted instantiation: remote-fd.c:object_type Unexecuted instantiation: remote.c:object_type Unexecuted instantiation: repack.c:object_type Unexecuted instantiation: replace.c:object_type Unexecuted instantiation: replay.c:object_type Unexecuted instantiation: reset.c:object_type Unexecuted instantiation: rev-list.c:object_type Unexecuted instantiation: rev-parse.c:object_type Unexecuted instantiation: revert.c:object_type Unexecuted instantiation: rm.c:object_type Unexecuted instantiation: send-pack.c:object_type Unexecuted instantiation: shortlog.c:object_type Unexecuted instantiation: show-branch.c:object_type Unexecuted instantiation: show-index.c:object_type Unexecuted instantiation: show-ref.c:object_type Unexecuted instantiation: sparse-checkout.c:object_type Unexecuted instantiation: stash.c:object_type Unexecuted instantiation: stripspace.c:object_type Unexecuted instantiation: submodule--helper.c:object_type Unexecuted instantiation: symbolic-ref.c:object_type Unexecuted instantiation: tag.c:object_type Unexecuted instantiation: unpack-file.c:object_type Unexecuted instantiation: unpack-objects.c:object_type Unexecuted instantiation: update-index.c:object_type Unexecuted instantiation: update-ref.c:object_type Unexecuted instantiation: upload-pack.c:object_type Unexecuted instantiation: var.c:object_type Unexecuted instantiation: verify-commit.c:object_type Unexecuted instantiation: verify-tag.c:object_type Unexecuted instantiation: worktree.c:object_type Unexecuted instantiation: write-tree.c:object_type Unexecuted instantiation: git.c:object_type Unexecuted instantiation: fuzz-pack-headers.c:object_type Unexecuted instantiation: add-interactive.c:object_type Unexecuted instantiation: add-patch.c:object_type Unexecuted instantiation: apply.c:object_type Unexecuted instantiation: attr.c:object_type Unexecuted instantiation: blob.c:object_type Unexecuted instantiation: bloom.c:object_type Unexecuted instantiation: bulk-checkin.c:object_type Unexecuted instantiation: bundle-uri.c:object_type Unexecuted instantiation: cache-tree.c:object_type Unexecuted instantiation: combine-diff.c:object_type Unexecuted instantiation: commit-reach.c:object_type Unexecuted instantiation: connect.c:object_type Unexecuted instantiation: connected.c:object_type Unexecuted instantiation: convert.c:object_type Unexecuted instantiation: decorate.c:object_type Unexecuted instantiation: delta-islands.c:object_type Unexecuted instantiation: diff-merges.c:object_type Unexecuted instantiation: diff-lib.c:object_type Unexecuted instantiation: diff-no-index.c:object_type Unexecuted instantiation: diffcore-break.c:object_type Unexecuted instantiation: diffcore-rename.c:object_type Unexecuted instantiation: dir.c:object_type Unexecuted instantiation: entry.c:object_type Unexecuted instantiation: environment.c:object_type Unexecuted instantiation: fmt-merge-msg.c:object_type Unexecuted instantiation: fsmonitor.c:object_type Unexecuted instantiation: gpg-interface.c:object_type Unexecuted instantiation: graph.c:object_type Unexecuted instantiation: hook.c:object_type Unexecuted instantiation: line-log.c:object_type Unexecuted instantiation: list-objects-filter-options.c:object_type Unexecuted instantiation: list-objects.c:object_type Unexecuted instantiation: log-tree.c:object_type Unexecuted instantiation: mailmap.c:object_type Unexecuted instantiation: merge-blobs.c:object_type Unexecuted instantiation: merge-ort.c:object_type Unexecuted instantiation: merge-ort-wrappers.c:object_type Unexecuted instantiation: midx.c:object_type Unexecuted instantiation: midx-write.c:object_type Unexecuted instantiation: name-hash.c:object_type Unexecuted instantiation: notes-cache.c:object_type Unexecuted instantiation: notes-merge.c:object_type Unexecuted instantiation: notes-utils.c:object_type Unexecuted instantiation: object-file-convert.c:object_type Unexecuted instantiation: object-file.c:object_type Unexecuted instantiation: object-name.c:object_type Unexecuted instantiation: object.c:object_type Unexecuted instantiation: pack-bitmap-write.c:object_type Unexecuted instantiation: pack-bitmap.c:object_type Unexecuted instantiation: pack-check.c:object_type Unexecuted instantiation: pack-mtimes.c:object_type Unexecuted instantiation: pack-revindex.c:object_type Unexecuted instantiation: pack-write.c:object_type Unexecuted instantiation: packfile.c:object_type Unexecuted instantiation: parallel-checkout.c:object_type Unexecuted instantiation: parse-options-cb.c:object_type Unexecuted instantiation: patch-ids.c:object_type Unexecuted instantiation: path.c:object_type Unexecuted instantiation: pathspec.c:object_type Unexecuted instantiation: preload-index.c:object_type Unexecuted instantiation: pretty.c:object_type Unexecuted instantiation: promisor-remote.c:object_type Unexecuted instantiation: prune-packed.c:object_type Unexecuted instantiation: pseudo-merge.c:object_type Unexecuted instantiation: reachable.c:object_type Unexecuted instantiation: read-cache.c:object_type Unexecuted instantiation: rebase-interactive.c:object_type Unexecuted instantiation: ref-filter.c:object_type Unexecuted instantiation: reflog-walk.c:object_type Unexecuted instantiation: debug.c:object_type Unexecuted instantiation: files-backend.c:object_type Unexecuted instantiation: reftable-backend.c:object_type Unexecuted instantiation: iterator.c:object_type Unexecuted instantiation: packed-backend.c:object_type Unexecuted instantiation: ref-cache.c:object_type Unexecuted instantiation: refspec.c:object_type Unexecuted instantiation: replace-object.c:object_type Unexecuted instantiation: repository.c:object_type Unexecuted instantiation: rerere.c:object_type Unexecuted instantiation: resolve-undo.c:object_type Unexecuted instantiation: revision.c:object_type Unexecuted instantiation: run-command.c:object_type Unexecuted instantiation: sequencer.c:object_type Unexecuted instantiation: server-info.c:object_type Unexecuted instantiation: setup.c:object_type Unexecuted instantiation: shallow.c:object_type Unexecuted instantiation: sparse-index.c:object_type Unexecuted instantiation: streaming.c:object_type Unexecuted instantiation: submodule-config.c:object_type Unexecuted instantiation: submodule.c:object_type Unexecuted instantiation: symlinks.c:object_type Unexecuted instantiation: tmp-objdir.c:object_type Unexecuted instantiation: trace.c:object_type Unexecuted instantiation: trailer.c:object_type Unexecuted instantiation: transport-helper.c:object_type Unexecuted instantiation: transport.c:object_type Unexecuted instantiation: tree-diff.c:object_type Unexecuted instantiation: tree-walk.c:object_type Unexecuted instantiation: tree.c:object_type Unexecuted instantiation: unpack-trees.c:object_type Unexecuted instantiation: wt-status.c:object_type Unexecuted instantiation: xdiff-interface.c:object_type Unexecuted instantiation: alloc.c:object_type Unexecuted instantiation: archive-tar.c:object_type Unexecuted instantiation: archive-zip.c:object_type Unexecuted instantiation: list-objects-filter.c:object_type Unexecuted instantiation: loose.c:object_type Unexecuted instantiation: ls-refs.c:object_type Unexecuted instantiation: match-trees.c:object_type Unexecuted instantiation: default.c:object_type Unexecuted instantiation: skipping.c:object_type Unexecuted instantiation: protocol-caps.c:object_type Unexecuted instantiation: common-main.c:object_type |
131 | | |
132 | 0 | #define ce_permissions(mode) (((mode) & 0100) ? 0755 : 0644) |
133 | | static inline unsigned int create_ce_mode(unsigned int mode) |
134 | 0 | { |
135 | 0 | if (S_ISLNK(mode)) |
136 | 0 | return S_IFLNK; |
137 | 0 | if (S_ISSPARSEDIR(mode)) |
138 | 0 | return S_IFDIR; |
139 | 0 | if (S_ISDIR(mode) || S_ISGITLINK(mode)) |
140 | 0 | return S_IFGITLINK; |
141 | 0 | return S_IFREG | ce_permissions(mode); |
142 | 0 | } Unexecuted instantiation: add.c:create_ce_mode Unexecuted instantiation: am.c:create_ce_mode Unexecuted instantiation: archive.c:create_ce_mode Unexecuted instantiation: bisect.c:create_ce_mode Unexecuted instantiation: blame.c:create_ce_mode Unexecuted instantiation: branch.c:create_ce_mode Unexecuted instantiation: bugreport.c:create_ce_mode Unexecuted instantiation: bundle.c:create_ce_mode Unexecuted instantiation: cat-file.c:create_ce_mode Unexecuted instantiation: check-attr.c:create_ce_mode Unexecuted instantiation: check-ref-format.c:create_ce_mode Unexecuted instantiation: checkout-index.c:create_ce_mode Unexecuted instantiation: checkout.c:create_ce_mode Unexecuted instantiation: clean.c:create_ce_mode Unexecuted instantiation: clone.c:create_ce_mode Unexecuted instantiation: commit-graph.c:create_ce_mode Unexecuted instantiation: commit-tree.c:create_ce_mode Unexecuted instantiation: commit.c:create_ce_mode Unexecuted instantiation: config.c:create_ce_mode Unexecuted instantiation: count-objects.c:create_ce_mode Unexecuted instantiation: credential-cache--daemon.c:create_ce_mode Unexecuted instantiation: describe.c:create_ce_mode Unexecuted instantiation: diagnose.c:create_ce_mode Unexecuted instantiation: diff-files.c:create_ce_mode Unexecuted instantiation: diff-index.c:create_ce_mode Unexecuted instantiation: diff-tree.c:create_ce_mode Unexecuted instantiation: diff.c:create_ce_mode Unexecuted instantiation: difftool.c:create_ce_mode Unexecuted instantiation: fast-export.c:create_ce_mode Unexecuted instantiation: fast-import.c:create_ce_mode Unexecuted instantiation: fetch-pack.c:create_ce_mode Unexecuted instantiation: fetch.c:create_ce_mode Unexecuted instantiation: for-each-ref.c:create_ce_mode Unexecuted instantiation: fsck.c:create_ce_mode Unexecuted instantiation: gc.c:create_ce_mode Unexecuted instantiation: get-tar-commit-id.c:create_ce_mode Unexecuted instantiation: grep.c:create_ce_mode Unexecuted instantiation: hash-object.c:create_ce_mode Unexecuted instantiation: help.c:create_ce_mode Unexecuted instantiation: index-pack.c:create_ce_mode Unexecuted instantiation: init-db.c:create_ce_mode Unexecuted instantiation: log.c:create_ce_mode Unexecuted instantiation: ls-files.c:create_ce_mode Unexecuted instantiation: ls-remote.c:create_ce_mode Unexecuted instantiation: ls-tree.c:create_ce_mode Unexecuted instantiation: merge-base.c:create_ce_mode Unexecuted instantiation: merge-file.c:create_ce_mode Unexecuted instantiation: merge-recursive.c:create_ce_mode Unexecuted instantiation: merge-tree.c:create_ce_mode Unexecuted instantiation: merge.c:create_ce_mode Unexecuted instantiation: mktag.c:create_ce_mode Unexecuted instantiation: mktree.c:create_ce_mode Unexecuted instantiation: multi-pack-index.c:create_ce_mode Unexecuted instantiation: mv.c:create_ce_mode Unexecuted instantiation: name-rev.c:create_ce_mode Unexecuted instantiation: notes.c:create_ce_mode Unexecuted instantiation: pack-objects.c:create_ce_mode Unexecuted instantiation: pack-redundant.c:create_ce_mode Unexecuted instantiation: pack-refs.c:create_ce_mode Unexecuted instantiation: patch-id.c:create_ce_mode Unexecuted instantiation: prune.c:create_ce_mode Unexecuted instantiation: pull.c:create_ce_mode Unexecuted instantiation: push.c:create_ce_mode Unexecuted instantiation: range-diff.c:create_ce_mode Unexecuted instantiation: read-tree.c:create_ce_mode Unexecuted instantiation: rebase.c:create_ce_mode Unexecuted instantiation: receive-pack.c:create_ce_mode Unexecuted instantiation: reflog.c:create_ce_mode Unexecuted instantiation: refs.c:create_ce_mode Unexecuted instantiation: remote-ext.c:create_ce_mode Unexecuted instantiation: remote-fd.c:create_ce_mode Unexecuted instantiation: remote.c:create_ce_mode Unexecuted instantiation: repack.c:create_ce_mode Unexecuted instantiation: replace.c:create_ce_mode Unexecuted instantiation: replay.c:create_ce_mode Unexecuted instantiation: reset.c:create_ce_mode Unexecuted instantiation: rev-list.c:create_ce_mode Unexecuted instantiation: rev-parse.c:create_ce_mode Unexecuted instantiation: revert.c:create_ce_mode Unexecuted instantiation: rm.c:create_ce_mode Unexecuted instantiation: send-pack.c:create_ce_mode Unexecuted instantiation: shortlog.c:create_ce_mode Unexecuted instantiation: show-branch.c:create_ce_mode Unexecuted instantiation: show-index.c:create_ce_mode Unexecuted instantiation: show-ref.c:create_ce_mode Unexecuted instantiation: sparse-checkout.c:create_ce_mode Unexecuted instantiation: stash.c:create_ce_mode Unexecuted instantiation: stripspace.c:create_ce_mode Unexecuted instantiation: submodule--helper.c:create_ce_mode Unexecuted instantiation: symbolic-ref.c:create_ce_mode Unexecuted instantiation: tag.c:create_ce_mode Unexecuted instantiation: unpack-file.c:create_ce_mode Unexecuted instantiation: unpack-objects.c:create_ce_mode Unexecuted instantiation: update-index.c:create_ce_mode Unexecuted instantiation: update-ref.c:create_ce_mode Unexecuted instantiation: upload-pack.c:create_ce_mode Unexecuted instantiation: var.c:create_ce_mode Unexecuted instantiation: verify-commit.c:create_ce_mode Unexecuted instantiation: verify-tag.c:create_ce_mode Unexecuted instantiation: worktree.c:create_ce_mode Unexecuted instantiation: write-tree.c:create_ce_mode Unexecuted instantiation: git.c:create_ce_mode Unexecuted instantiation: fuzz-pack-headers.c:create_ce_mode Unexecuted instantiation: add-interactive.c:create_ce_mode Unexecuted instantiation: add-patch.c:create_ce_mode Unexecuted instantiation: apply.c:create_ce_mode Unexecuted instantiation: attr.c:create_ce_mode Unexecuted instantiation: blob.c:create_ce_mode Unexecuted instantiation: bloom.c:create_ce_mode Unexecuted instantiation: bulk-checkin.c:create_ce_mode Unexecuted instantiation: bundle-uri.c:create_ce_mode Unexecuted instantiation: cache-tree.c:create_ce_mode Unexecuted instantiation: combine-diff.c:create_ce_mode Unexecuted instantiation: commit-reach.c:create_ce_mode Unexecuted instantiation: connect.c:create_ce_mode Unexecuted instantiation: connected.c:create_ce_mode Unexecuted instantiation: convert.c:create_ce_mode Unexecuted instantiation: decorate.c:create_ce_mode Unexecuted instantiation: delta-islands.c:create_ce_mode Unexecuted instantiation: diff-merges.c:create_ce_mode Unexecuted instantiation: diff-lib.c:create_ce_mode Unexecuted instantiation: diff-no-index.c:create_ce_mode Unexecuted instantiation: diffcore-break.c:create_ce_mode Unexecuted instantiation: diffcore-rename.c:create_ce_mode Unexecuted instantiation: dir.c:create_ce_mode Unexecuted instantiation: entry.c:create_ce_mode Unexecuted instantiation: environment.c:create_ce_mode Unexecuted instantiation: fmt-merge-msg.c:create_ce_mode Unexecuted instantiation: fsmonitor.c:create_ce_mode Unexecuted instantiation: gpg-interface.c:create_ce_mode Unexecuted instantiation: graph.c:create_ce_mode Unexecuted instantiation: hook.c:create_ce_mode Unexecuted instantiation: line-log.c:create_ce_mode Unexecuted instantiation: list-objects-filter-options.c:create_ce_mode Unexecuted instantiation: list-objects.c:create_ce_mode Unexecuted instantiation: log-tree.c:create_ce_mode Unexecuted instantiation: mailmap.c:create_ce_mode Unexecuted instantiation: merge-blobs.c:create_ce_mode Unexecuted instantiation: merge-ort.c:create_ce_mode Unexecuted instantiation: merge-ort-wrappers.c:create_ce_mode Unexecuted instantiation: midx.c:create_ce_mode Unexecuted instantiation: midx-write.c:create_ce_mode Unexecuted instantiation: name-hash.c:create_ce_mode Unexecuted instantiation: notes-cache.c:create_ce_mode Unexecuted instantiation: notes-merge.c:create_ce_mode Unexecuted instantiation: notes-utils.c:create_ce_mode Unexecuted instantiation: object-file-convert.c:create_ce_mode Unexecuted instantiation: object-file.c:create_ce_mode Unexecuted instantiation: object-name.c:create_ce_mode Unexecuted instantiation: object.c:create_ce_mode Unexecuted instantiation: pack-bitmap-write.c:create_ce_mode Unexecuted instantiation: pack-bitmap.c:create_ce_mode Unexecuted instantiation: pack-check.c:create_ce_mode Unexecuted instantiation: pack-mtimes.c:create_ce_mode Unexecuted instantiation: pack-revindex.c:create_ce_mode Unexecuted instantiation: pack-write.c:create_ce_mode Unexecuted instantiation: packfile.c:create_ce_mode Unexecuted instantiation: parallel-checkout.c:create_ce_mode Unexecuted instantiation: parse-options-cb.c:create_ce_mode Unexecuted instantiation: patch-ids.c:create_ce_mode Unexecuted instantiation: path.c:create_ce_mode Unexecuted instantiation: pathspec.c:create_ce_mode Unexecuted instantiation: preload-index.c:create_ce_mode Unexecuted instantiation: pretty.c:create_ce_mode Unexecuted instantiation: promisor-remote.c:create_ce_mode Unexecuted instantiation: prune-packed.c:create_ce_mode Unexecuted instantiation: pseudo-merge.c:create_ce_mode Unexecuted instantiation: reachable.c:create_ce_mode Unexecuted instantiation: read-cache.c:create_ce_mode Unexecuted instantiation: rebase-interactive.c:create_ce_mode Unexecuted instantiation: ref-filter.c:create_ce_mode Unexecuted instantiation: reflog-walk.c:create_ce_mode Unexecuted instantiation: debug.c:create_ce_mode Unexecuted instantiation: files-backend.c:create_ce_mode Unexecuted instantiation: reftable-backend.c:create_ce_mode Unexecuted instantiation: iterator.c:create_ce_mode Unexecuted instantiation: packed-backend.c:create_ce_mode Unexecuted instantiation: ref-cache.c:create_ce_mode Unexecuted instantiation: refspec.c:create_ce_mode Unexecuted instantiation: replace-object.c:create_ce_mode Unexecuted instantiation: repository.c:create_ce_mode Unexecuted instantiation: rerere.c:create_ce_mode Unexecuted instantiation: resolve-undo.c:create_ce_mode Unexecuted instantiation: revision.c:create_ce_mode Unexecuted instantiation: run-command.c:create_ce_mode Unexecuted instantiation: sequencer.c:create_ce_mode Unexecuted instantiation: server-info.c:create_ce_mode Unexecuted instantiation: setup.c:create_ce_mode Unexecuted instantiation: shallow.c:create_ce_mode Unexecuted instantiation: sparse-index.c:create_ce_mode Unexecuted instantiation: streaming.c:create_ce_mode Unexecuted instantiation: submodule-config.c:create_ce_mode Unexecuted instantiation: submodule.c:create_ce_mode Unexecuted instantiation: symlinks.c:create_ce_mode Unexecuted instantiation: tmp-objdir.c:create_ce_mode Unexecuted instantiation: trace.c:create_ce_mode Unexecuted instantiation: trailer.c:create_ce_mode Unexecuted instantiation: transport-helper.c:create_ce_mode Unexecuted instantiation: transport.c:create_ce_mode Unexecuted instantiation: tree-diff.c:create_ce_mode Unexecuted instantiation: tree-walk.c:create_ce_mode Unexecuted instantiation: tree.c:create_ce_mode Unexecuted instantiation: unpack-trees.c:create_ce_mode Unexecuted instantiation: wt-status.c:create_ce_mode Unexecuted instantiation: xdiff-interface.c:create_ce_mode Unexecuted instantiation: alloc.c:create_ce_mode Unexecuted instantiation: archive-tar.c:create_ce_mode Unexecuted instantiation: archive-zip.c:create_ce_mode Unexecuted instantiation: list-objects-filter.c:create_ce_mode Unexecuted instantiation: loose.c:create_ce_mode Unexecuted instantiation: ls-refs.c:create_ce_mode Unexecuted instantiation: match-trees.c:create_ce_mode Unexecuted instantiation: default.c:create_ce_mode Unexecuted instantiation: skipping.c:create_ce_mode Unexecuted instantiation: protocol-caps.c:create_ce_mode Unexecuted instantiation: common-main.c:create_ce_mode |
143 | | |
144 | | static inline unsigned int canon_mode(unsigned int mode) |
145 | 0 | { |
146 | 0 | if (S_ISREG(mode)) |
147 | 0 | return S_IFREG | ce_permissions(mode); |
148 | 0 | if (S_ISLNK(mode)) |
149 | 0 | return S_IFLNK; |
150 | 0 | if (S_ISDIR(mode)) |
151 | 0 | return S_IFDIR; |
152 | 0 | return S_IFGITLINK; |
153 | 0 | } Unexecuted instantiation: add.c:canon_mode Unexecuted instantiation: am.c:canon_mode Unexecuted instantiation: archive.c:canon_mode Unexecuted instantiation: bisect.c:canon_mode Unexecuted instantiation: blame.c:canon_mode Unexecuted instantiation: branch.c:canon_mode Unexecuted instantiation: bugreport.c:canon_mode Unexecuted instantiation: bundle.c:canon_mode Unexecuted instantiation: cat-file.c:canon_mode Unexecuted instantiation: check-attr.c:canon_mode Unexecuted instantiation: check-ref-format.c:canon_mode Unexecuted instantiation: checkout-index.c:canon_mode Unexecuted instantiation: checkout.c:canon_mode Unexecuted instantiation: clean.c:canon_mode Unexecuted instantiation: clone.c:canon_mode Unexecuted instantiation: commit-graph.c:canon_mode Unexecuted instantiation: commit-tree.c:canon_mode Unexecuted instantiation: commit.c:canon_mode Unexecuted instantiation: config.c:canon_mode Unexecuted instantiation: count-objects.c:canon_mode Unexecuted instantiation: credential-cache--daemon.c:canon_mode Unexecuted instantiation: describe.c:canon_mode Unexecuted instantiation: diagnose.c:canon_mode Unexecuted instantiation: diff-files.c:canon_mode Unexecuted instantiation: diff-index.c:canon_mode Unexecuted instantiation: diff-tree.c:canon_mode Unexecuted instantiation: diff.c:canon_mode Unexecuted instantiation: difftool.c:canon_mode Unexecuted instantiation: fast-export.c:canon_mode Unexecuted instantiation: fast-import.c:canon_mode Unexecuted instantiation: fetch-pack.c:canon_mode Unexecuted instantiation: fetch.c:canon_mode Unexecuted instantiation: for-each-ref.c:canon_mode Unexecuted instantiation: fsck.c:canon_mode Unexecuted instantiation: gc.c:canon_mode Unexecuted instantiation: get-tar-commit-id.c:canon_mode Unexecuted instantiation: grep.c:canon_mode Unexecuted instantiation: hash-object.c:canon_mode Unexecuted instantiation: help.c:canon_mode Unexecuted instantiation: index-pack.c:canon_mode Unexecuted instantiation: init-db.c:canon_mode Unexecuted instantiation: log.c:canon_mode Unexecuted instantiation: ls-files.c:canon_mode Unexecuted instantiation: ls-remote.c:canon_mode Unexecuted instantiation: ls-tree.c:canon_mode Unexecuted instantiation: merge-base.c:canon_mode Unexecuted instantiation: merge-file.c:canon_mode Unexecuted instantiation: merge-recursive.c:canon_mode Unexecuted instantiation: merge-tree.c:canon_mode Unexecuted instantiation: merge.c:canon_mode Unexecuted instantiation: mktag.c:canon_mode Unexecuted instantiation: mktree.c:canon_mode Unexecuted instantiation: multi-pack-index.c:canon_mode Unexecuted instantiation: mv.c:canon_mode Unexecuted instantiation: name-rev.c:canon_mode Unexecuted instantiation: notes.c:canon_mode Unexecuted instantiation: pack-objects.c:canon_mode Unexecuted instantiation: pack-redundant.c:canon_mode Unexecuted instantiation: pack-refs.c:canon_mode Unexecuted instantiation: patch-id.c:canon_mode Unexecuted instantiation: prune.c:canon_mode Unexecuted instantiation: pull.c:canon_mode Unexecuted instantiation: push.c:canon_mode Unexecuted instantiation: range-diff.c:canon_mode Unexecuted instantiation: read-tree.c:canon_mode Unexecuted instantiation: rebase.c:canon_mode Unexecuted instantiation: receive-pack.c:canon_mode Unexecuted instantiation: reflog.c:canon_mode Unexecuted instantiation: refs.c:canon_mode Unexecuted instantiation: remote-ext.c:canon_mode Unexecuted instantiation: remote-fd.c:canon_mode Unexecuted instantiation: remote.c:canon_mode Unexecuted instantiation: repack.c:canon_mode Unexecuted instantiation: replace.c:canon_mode Unexecuted instantiation: replay.c:canon_mode Unexecuted instantiation: reset.c:canon_mode Unexecuted instantiation: rev-list.c:canon_mode Unexecuted instantiation: rev-parse.c:canon_mode Unexecuted instantiation: revert.c:canon_mode Unexecuted instantiation: rm.c:canon_mode Unexecuted instantiation: send-pack.c:canon_mode Unexecuted instantiation: shortlog.c:canon_mode Unexecuted instantiation: show-branch.c:canon_mode Unexecuted instantiation: show-index.c:canon_mode Unexecuted instantiation: show-ref.c:canon_mode Unexecuted instantiation: sparse-checkout.c:canon_mode Unexecuted instantiation: stash.c:canon_mode Unexecuted instantiation: stripspace.c:canon_mode Unexecuted instantiation: submodule--helper.c:canon_mode Unexecuted instantiation: symbolic-ref.c:canon_mode Unexecuted instantiation: tag.c:canon_mode Unexecuted instantiation: unpack-file.c:canon_mode Unexecuted instantiation: unpack-objects.c:canon_mode Unexecuted instantiation: update-index.c:canon_mode Unexecuted instantiation: update-ref.c:canon_mode Unexecuted instantiation: upload-pack.c:canon_mode Unexecuted instantiation: var.c:canon_mode Unexecuted instantiation: verify-commit.c:canon_mode Unexecuted instantiation: verify-tag.c:canon_mode Unexecuted instantiation: worktree.c:canon_mode Unexecuted instantiation: write-tree.c:canon_mode Unexecuted instantiation: git.c:canon_mode Unexecuted instantiation: fuzz-pack-headers.c:canon_mode Unexecuted instantiation: add-interactive.c:canon_mode Unexecuted instantiation: add-patch.c:canon_mode Unexecuted instantiation: apply.c:canon_mode Unexecuted instantiation: attr.c:canon_mode Unexecuted instantiation: blob.c:canon_mode Unexecuted instantiation: bloom.c:canon_mode Unexecuted instantiation: bulk-checkin.c:canon_mode Unexecuted instantiation: bundle-uri.c:canon_mode Unexecuted instantiation: cache-tree.c:canon_mode Unexecuted instantiation: combine-diff.c:canon_mode Unexecuted instantiation: commit-reach.c:canon_mode Unexecuted instantiation: connect.c:canon_mode Unexecuted instantiation: connected.c:canon_mode Unexecuted instantiation: convert.c:canon_mode Unexecuted instantiation: decorate.c:canon_mode Unexecuted instantiation: delta-islands.c:canon_mode Unexecuted instantiation: diff-merges.c:canon_mode Unexecuted instantiation: diff-lib.c:canon_mode Unexecuted instantiation: diff-no-index.c:canon_mode Unexecuted instantiation: diffcore-break.c:canon_mode Unexecuted instantiation: diffcore-rename.c:canon_mode Unexecuted instantiation: dir.c:canon_mode Unexecuted instantiation: entry.c:canon_mode Unexecuted instantiation: environment.c:canon_mode Unexecuted instantiation: fmt-merge-msg.c:canon_mode Unexecuted instantiation: fsmonitor.c:canon_mode Unexecuted instantiation: gpg-interface.c:canon_mode Unexecuted instantiation: graph.c:canon_mode Unexecuted instantiation: hook.c:canon_mode Unexecuted instantiation: line-log.c:canon_mode Unexecuted instantiation: list-objects-filter-options.c:canon_mode Unexecuted instantiation: list-objects.c:canon_mode Unexecuted instantiation: log-tree.c:canon_mode Unexecuted instantiation: mailmap.c:canon_mode Unexecuted instantiation: merge-blobs.c:canon_mode Unexecuted instantiation: merge-ort.c:canon_mode Unexecuted instantiation: merge-ort-wrappers.c:canon_mode Unexecuted instantiation: midx.c:canon_mode Unexecuted instantiation: midx-write.c:canon_mode Unexecuted instantiation: name-hash.c:canon_mode Unexecuted instantiation: notes-cache.c:canon_mode Unexecuted instantiation: notes-merge.c:canon_mode Unexecuted instantiation: notes-utils.c:canon_mode Unexecuted instantiation: object-file-convert.c:canon_mode Unexecuted instantiation: object-file.c:canon_mode Unexecuted instantiation: object-name.c:canon_mode Unexecuted instantiation: object.c:canon_mode Unexecuted instantiation: pack-bitmap-write.c:canon_mode Unexecuted instantiation: pack-bitmap.c:canon_mode Unexecuted instantiation: pack-check.c:canon_mode Unexecuted instantiation: pack-mtimes.c:canon_mode Unexecuted instantiation: pack-revindex.c:canon_mode Unexecuted instantiation: pack-write.c:canon_mode Unexecuted instantiation: packfile.c:canon_mode Unexecuted instantiation: parallel-checkout.c:canon_mode Unexecuted instantiation: parse-options-cb.c:canon_mode Unexecuted instantiation: patch-ids.c:canon_mode Unexecuted instantiation: path.c:canon_mode Unexecuted instantiation: pathspec.c:canon_mode Unexecuted instantiation: preload-index.c:canon_mode Unexecuted instantiation: pretty.c:canon_mode Unexecuted instantiation: promisor-remote.c:canon_mode Unexecuted instantiation: prune-packed.c:canon_mode Unexecuted instantiation: pseudo-merge.c:canon_mode Unexecuted instantiation: reachable.c:canon_mode Unexecuted instantiation: read-cache.c:canon_mode Unexecuted instantiation: rebase-interactive.c:canon_mode Unexecuted instantiation: ref-filter.c:canon_mode Unexecuted instantiation: reflog-walk.c:canon_mode Unexecuted instantiation: debug.c:canon_mode Unexecuted instantiation: files-backend.c:canon_mode Unexecuted instantiation: reftable-backend.c:canon_mode Unexecuted instantiation: iterator.c:canon_mode Unexecuted instantiation: packed-backend.c:canon_mode Unexecuted instantiation: ref-cache.c:canon_mode Unexecuted instantiation: refspec.c:canon_mode Unexecuted instantiation: replace-object.c:canon_mode Unexecuted instantiation: repository.c:canon_mode Unexecuted instantiation: rerere.c:canon_mode Unexecuted instantiation: resolve-undo.c:canon_mode Unexecuted instantiation: revision.c:canon_mode Unexecuted instantiation: run-command.c:canon_mode Unexecuted instantiation: sequencer.c:canon_mode Unexecuted instantiation: server-info.c:canon_mode Unexecuted instantiation: setup.c:canon_mode Unexecuted instantiation: shallow.c:canon_mode Unexecuted instantiation: sparse-index.c:canon_mode Unexecuted instantiation: streaming.c:canon_mode Unexecuted instantiation: submodule-config.c:canon_mode Unexecuted instantiation: submodule.c:canon_mode Unexecuted instantiation: symlinks.c:canon_mode Unexecuted instantiation: tmp-objdir.c:canon_mode Unexecuted instantiation: trace.c:canon_mode Unexecuted instantiation: trailer.c:canon_mode Unexecuted instantiation: transport-helper.c:canon_mode Unexecuted instantiation: transport.c:canon_mode Unexecuted instantiation: tree-diff.c:canon_mode Unexecuted instantiation: tree-walk.c:canon_mode Unexecuted instantiation: tree.c:canon_mode Unexecuted instantiation: unpack-trees.c:canon_mode Unexecuted instantiation: wt-status.c:canon_mode Unexecuted instantiation: xdiff-interface.c:canon_mode Unexecuted instantiation: alloc.c:canon_mode Unexecuted instantiation: archive-tar.c:canon_mode Unexecuted instantiation: archive-zip.c:canon_mode Unexecuted instantiation: list-objects-filter.c:canon_mode Unexecuted instantiation: loose.c:canon_mode Unexecuted instantiation: ls-refs.c:canon_mode Unexecuted instantiation: match-trees.c:canon_mode Unexecuted instantiation: default.c:canon_mode Unexecuted instantiation: skipping.c:canon_mode Unexecuted instantiation: protocol-caps.c:canon_mode Unexecuted instantiation: common-main.c:canon_mode |
154 | | |
155 | | /* |
156 | | * The object type is stored in 3 bits. |
157 | | */ |
158 | | struct object { |
159 | | unsigned parsed : 1; |
160 | | unsigned type : TYPE_BITS; |
161 | | unsigned flags : FLAG_BITS; |
162 | | struct object_id oid; |
163 | | }; |
164 | | |
165 | | const char *type_name(unsigned int type); |
166 | | int type_from_string_gently(const char *str, ssize_t, int gentle); |
167 | 0 | #define type_from_string(str) type_from_string_gently(str, -1, 0) |
168 | | |
169 | | /* |
170 | | * Return the current number of buckets in the object hashmap. |
171 | | */ |
172 | | unsigned int get_max_object_index(void); |
173 | | |
174 | | /* |
175 | | * Return the object from the specified bucket in the object hashmap. |
176 | | */ |
177 | | struct object *get_indexed_object(unsigned int); |
178 | | |
179 | | /* |
180 | | * This can be used to see if we have heard of the object before, but |
181 | | * it can return "yes we have, and here is a half-initialised object" |
182 | | * for an object that we haven't loaded/parsed yet. |
183 | | * |
184 | | * When parsing a commit to create an in-core commit object, its |
185 | | * parents list holds commit objects that represent its parents, but |
186 | | * they are expected to be lazily initialized and do not know what |
187 | | * their trees or parents are yet. When this function returns such a |
188 | | * half-initialised objects, the caller is expected to initialize them |
189 | | * by calling parse_object() on them. |
190 | | */ |
191 | | struct object *lookup_object(struct repository *r, const struct object_id *oid); |
192 | | |
193 | | void *create_object(struct repository *r, const struct object_id *oid, void *obj); |
194 | | |
195 | | void *object_as_type(struct object *obj, enum object_type type, int quiet); |
196 | | |
197 | | |
198 | | static inline const char *parse_mode(const char *str, uint16_t *modep) |
199 | 0 | { |
200 | 0 | unsigned char c; |
201 | 0 | unsigned int mode = 0; |
202 | |
|
203 | 0 | if (*str == ' ') |
204 | 0 | return NULL; |
205 | | |
206 | 0 | while ((c = *str++) != ' ') { |
207 | 0 | if (c < '0' || c > '7') |
208 | 0 | return NULL; |
209 | 0 | mode = (mode << 3) + (c - '0'); |
210 | 0 | } |
211 | 0 | *modep = mode; |
212 | 0 | return str; |
213 | 0 | } Unexecuted instantiation: add.c:parse_mode Unexecuted instantiation: am.c:parse_mode Unexecuted instantiation: archive.c:parse_mode Unexecuted instantiation: bisect.c:parse_mode Unexecuted instantiation: blame.c:parse_mode Unexecuted instantiation: branch.c:parse_mode Unexecuted instantiation: bugreport.c:parse_mode Unexecuted instantiation: bundle.c:parse_mode Unexecuted instantiation: cat-file.c:parse_mode Unexecuted instantiation: check-attr.c:parse_mode Unexecuted instantiation: check-ref-format.c:parse_mode Unexecuted instantiation: checkout-index.c:parse_mode Unexecuted instantiation: checkout.c:parse_mode Unexecuted instantiation: clean.c:parse_mode Unexecuted instantiation: clone.c:parse_mode Unexecuted instantiation: commit-graph.c:parse_mode Unexecuted instantiation: commit-tree.c:parse_mode Unexecuted instantiation: commit.c:parse_mode Unexecuted instantiation: config.c:parse_mode Unexecuted instantiation: count-objects.c:parse_mode Unexecuted instantiation: credential-cache--daemon.c:parse_mode Unexecuted instantiation: describe.c:parse_mode Unexecuted instantiation: diagnose.c:parse_mode Unexecuted instantiation: diff-files.c:parse_mode Unexecuted instantiation: diff-index.c:parse_mode Unexecuted instantiation: diff-tree.c:parse_mode Unexecuted instantiation: diff.c:parse_mode Unexecuted instantiation: difftool.c:parse_mode Unexecuted instantiation: fast-export.c:parse_mode Unexecuted instantiation: fast-import.c:parse_mode Unexecuted instantiation: fetch-pack.c:parse_mode Unexecuted instantiation: fetch.c:parse_mode Unexecuted instantiation: for-each-ref.c:parse_mode Unexecuted instantiation: fsck.c:parse_mode Unexecuted instantiation: gc.c:parse_mode Unexecuted instantiation: get-tar-commit-id.c:parse_mode Unexecuted instantiation: grep.c:parse_mode Unexecuted instantiation: hash-object.c:parse_mode Unexecuted instantiation: help.c:parse_mode Unexecuted instantiation: index-pack.c:parse_mode Unexecuted instantiation: init-db.c:parse_mode Unexecuted instantiation: log.c:parse_mode Unexecuted instantiation: ls-files.c:parse_mode Unexecuted instantiation: ls-remote.c:parse_mode Unexecuted instantiation: ls-tree.c:parse_mode Unexecuted instantiation: merge-base.c:parse_mode Unexecuted instantiation: merge-file.c:parse_mode Unexecuted instantiation: merge-recursive.c:parse_mode Unexecuted instantiation: merge-tree.c:parse_mode Unexecuted instantiation: merge.c:parse_mode Unexecuted instantiation: mktag.c:parse_mode Unexecuted instantiation: mktree.c:parse_mode Unexecuted instantiation: multi-pack-index.c:parse_mode Unexecuted instantiation: mv.c:parse_mode Unexecuted instantiation: name-rev.c:parse_mode Unexecuted instantiation: notes.c:parse_mode Unexecuted instantiation: pack-objects.c:parse_mode Unexecuted instantiation: pack-redundant.c:parse_mode Unexecuted instantiation: pack-refs.c:parse_mode Unexecuted instantiation: patch-id.c:parse_mode Unexecuted instantiation: prune.c:parse_mode Unexecuted instantiation: pull.c:parse_mode Unexecuted instantiation: push.c:parse_mode Unexecuted instantiation: range-diff.c:parse_mode Unexecuted instantiation: read-tree.c:parse_mode Unexecuted instantiation: rebase.c:parse_mode Unexecuted instantiation: receive-pack.c:parse_mode Unexecuted instantiation: reflog.c:parse_mode Unexecuted instantiation: refs.c:parse_mode Unexecuted instantiation: remote-ext.c:parse_mode Unexecuted instantiation: remote-fd.c:parse_mode Unexecuted instantiation: remote.c:parse_mode Unexecuted instantiation: repack.c:parse_mode Unexecuted instantiation: replace.c:parse_mode Unexecuted instantiation: replay.c:parse_mode Unexecuted instantiation: reset.c:parse_mode Unexecuted instantiation: rev-list.c:parse_mode Unexecuted instantiation: rev-parse.c:parse_mode Unexecuted instantiation: revert.c:parse_mode Unexecuted instantiation: rm.c:parse_mode Unexecuted instantiation: send-pack.c:parse_mode Unexecuted instantiation: shortlog.c:parse_mode Unexecuted instantiation: show-branch.c:parse_mode Unexecuted instantiation: show-index.c:parse_mode Unexecuted instantiation: show-ref.c:parse_mode Unexecuted instantiation: sparse-checkout.c:parse_mode Unexecuted instantiation: stash.c:parse_mode Unexecuted instantiation: stripspace.c:parse_mode Unexecuted instantiation: submodule--helper.c:parse_mode Unexecuted instantiation: symbolic-ref.c:parse_mode Unexecuted instantiation: tag.c:parse_mode Unexecuted instantiation: unpack-file.c:parse_mode Unexecuted instantiation: unpack-objects.c:parse_mode Unexecuted instantiation: update-index.c:parse_mode Unexecuted instantiation: update-ref.c:parse_mode Unexecuted instantiation: upload-pack.c:parse_mode Unexecuted instantiation: var.c:parse_mode Unexecuted instantiation: verify-commit.c:parse_mode Unexecuted instantiation: verify-tag.c:parse_mode Unexecuted instantiation: worktree.c:parse_mode Unexecuted instantiation: write-tree.c:parse_mode Unexecuted instantiation: git.c:parse_mode Unexecuted instantiation: fuzz-pack-headers.c:parse_mode Unexecuted instantiation: add-interactive.c:parse_mode Unexecuted instantiation: add-patch.c:parse_mode Unexecuted instantiation: apply.c:parse_mode Unexecuted instantiation: attr.c:parse_mode Unexecuted instantiation: blob.c:parse_mode Unexecuted instantiation: bloom.c:parse_mode Unexecuted instantiation: bulk-checkin.c:parse_mode Unexecuted instantiation: bundle-uri.c:parse_mode Unexecuted instantiation: cache-tree.c:parse_mode Unexecuted instantiation: combine-diff.c:parse_mode Unexecuted instantiation: commit-reach.c:parse_mode Unexecuted instantiation: connect.c:parse_mode Unexecuted instantiation: connected.c:parse_mode Unexecuted instantiation: convert.c:parse_mode Unexecuted instantiation: decorate.c:parse_mode Unexecuted instantiation: delta-islands.c:parse_mode Unexecuted instantiation: diff-merges.c:parse_mode Unexecuted instantiation: diff-lib.c:parse_mode Unexecuted instantiation: diff-no-index.c:parse_mode Unexecuted instantiation: diffcore-break.c:parse_mode Unexecuted instantiation: diffcore-rename.c:parse_mode Unexecuted instantiation: dir.c:parse_mode Unexecuted instantiation: entry.c:parse_mode Unexecuted instantiation: environment.c:parse_mode Unexecuted instantiation: fmt-merge-msg.c:parse_mode Unexecuted instantiation: fsmonitor.c:parse_mode Unexecuted instantiation: gpg-interface.c:parse_mode Unexecuted instantiation: graph.c:parse_mode Unexecuted instantiation: hook.c:parse_mode Unexecuted instantiation: line-log.c:parse_mode Unexecuted instantiation: list-objects-filter-options.c:parse_mode Unexecuted instantiation: list-objects.c:parse_mode Unexecuted instantiation: log-tree.c:parse_mode Unexecuted instantiation: mailmap.c:parse_mode Unexecuted instantiation: merge-blobs.c:parse_mode Unexecuted instantiation: merge-ort.c:parse_mode Unexecuted instantiation: merge-ort-wrappers.c:parse_mode Unexecuted instantiation: midx.c:parse_mode Unexecuted instantiation: midx-write.c:parse_mode Unexecuted instantiation: name-hash.c:parse_mode Unexecuted instantiation: notes-cache.c:parse_mode Unexecuted instantiation: notes-merge.c:parse_mode Unexecuted instantiation: notes-utils.c:parse_mode Unexecuted instantiation: object-file-convert.c:parse_mode Unexecuted instantiation: object-file.c:parse_mode Unexecuted instantiation: object-name.c:parse_mode Unexecuted instantiation: object.c:parse_mode Unexecuted instantiation: pack-bitmap-write.c:parse_mode Unexecuted instantiation: pack-bitmap.c:parse_mode Unexecuted instantiation: pack-check.c:parse_mode Unexecuted instantiation: pack-mtimes.c:parse_mode Unexecuted instantiation: pack-revindex.c:parse_mode Unexecuted instantiation: pack-write.c:parse_mode Unexecuted instantiation: packfile.c:parse_mode Unexecuted instantiation: parallel-checkout.c:parse_mode Unexecuted instantiation: parse-options-cb.c:parse_mode Unexecuted instantiation: patch-ids.c:parse_mode Unexecuted instantiation: path.c:parse_mode Unexecuted instantiation: pathspec.c:parse_mode Unexecuted instantiation: preload-index.c:parse_mode Unexecuted instantiation: pretty.c:parse_mode Unexecuted instantiation: promisor-remote.c:parse_mode Unexecuted instantiation: prune-packed.c:parse_mode Unexecuted instantiation: pseudo-merge.c:parse_mode Unexecuted instantiation: reachable.c:parse_mode Unexecuted instantiation: read-cache.c:parse_mode Unexecuted instantiation: rebase-interactive.c:parse_mode Unexecuted instantiation: ref-filter.c:parse_mode Unexecuted instantiation: reflog-walk.c:parse_mode Unexecuted instantiation: debug.c:parse_mode Unexecuted instantiation: files-backend.c:parse_mode Unexecuted instantiation: reftable-backend.c:parse_mode Unexecuted instantiation: iterator.c:parse_mode Unexecuted instantiation: packed-backend.c:parse_mode Unexecuted instantiation: ref-cache.c:parse_mode Unexecuted instantiation: refspec.c:parse_mode Unexecuted instantiation: replace-object.c:parse_mode Unexecuted instantiation: repository.c:parse_mode Unexecuted instantiation: rerere.c:parse_mode Unexecuted instantiation: resolve-undo.c:parse_mode Unexecuted instantiation: revision.c:parse_mode Unexecuted instantiation: run-command.c:parse_mode Unexecuted instantiation: sequencer.c:parse_mode Unexecuted instantiation: server-info.c:parse_mode Unexecuted instantiation: setup.c:parse_mode Unexecuted instantiation: shallow.c:parse_mode Unexecuted instantiation: sparse-index.c:parse_mode Unexecuted instantiation: streaming.c:parse_mode Unexecuted instantiation: submodule-config.c:parse_mode Unexecuted instantiation: submodule.c:parse_mode Unexecuted instantiation: symlinks.c:parse_mode Unexecuted instantiation: tmp-objdir.c:parse_mode Unexecuted instantiation: trace.c:parse_mode Unexecuted instantiation: trailer.c:parse_mode Unexecuted instantiation: transport-helper.c:parse_mode Unexecuted instantiation: transport.c:parse_mode Unexecuted instantiation: tree-diff.c:parse_mode Unexecuted instantiation: tree-walk.c:parse_mode Unexecuted instantiation: tree.c:parse_mode Unexecuted instantiation: unpack-trees.c:parse_mode Unexecuted instantiation: wt-status.c:parse_mode Unexecuted instantiation: xdiff-interface.c:parse_mode Unexecuted instantiation: alloc.c:parse_mode Unexecuted instantiation: archive-tar.c:parse_mode Unexecuted instantiation: archive-zip.c:parse_mode Unexecuted instantiation: list-objects-filter.c:parse_mode Unexecuted instantiation: loose.c:parse_mode Unexecuted instantiation: ls-refs.c:parse_mode Unexecuted instantiation: match-trees.c:parse_mode Unexecuted instantiation: default.c:parse_mode Unexecuted instantiation: skipping.c:parse_mode Unexecuted instantiation: protocol-caps.c:parse_mode Unexecuted instantiation: common-main.c:parse_mode |
214 | | |
215 | | /* |
216 | | * Returns the object, having parsed it to find out what it is. |
217 | | * |
218 | | * Returns NULL if the object is missing or corrupt. |
219 | | */ |
220 | | enum parse_object_flags { |
221 | | PARSE_OBJECT_SKIP_HASH_CHECK = 1 << 0, |
222 | | PARSE_OBJECT_DISCARD_TREE = 1 << 1, |
223 | | }; |
224 | | struct object *parse_object(struct repository *r, const struct object_id *oid); |
225 | | struct object *parse_object_with_flags(struct repository *r, |
226 | | const struct object_id *oid, |
227 | | enum parse_object_flags flags); |
228 | | |
229 | | /* |
230 | | * Like parse_object, but will die() instead of returning NULL. If the |
231 | | * "name" parameter is not NULL, it is included in the error message |
232 | | * (otherwise, the hex object ID is given). |
233 | | */ |
234 | | struct object *parse_object_or_die(const struct object_id *oid, const char *name); |
235 | | |
236 | | /* Given the result of read_sha1_file(), returns the object after |
237 | | * parsing it. eaten_p indicates if the object has a borrowed copy |
238 | | * of buffer and the caller should not free() it. |
239 | | */ |
240 | | struct object *parse_object_buffer(struct repository *r, const struct object_id *oid, enum object_type type, unsigned long size, void *buffer, int *eaten_p); |
241 | | |
242 | | /* |
243 | | * Allocate and return an object struct, even if you do not know the type of |
244 | | * the object. The returned object may have its "type" field set to a real type |
245 | | * (if somebody previously called lookup_blob(), etc), or it may be set to |
246 | | * OBJ_NONE. In the latter case, subsequent calls to lookup_blob(), etc, will |
247 | | * set the type field as appropriate. |
248 | | * |
249 | | * Use this when you do not know the expected type of an object and want to |
250 | | * avoid parsing it for efficiency reasons. Try to avoid it otherwise; it |
251 | | * may allocate excess memory, since the returned object must be as large as |
252 | | * the maximum struct of any type. |
253 | | */ |
254 | | struct object *lookup_unknown_object(struct repository *r, const struct object_id *oid); |
255 | | |
256 | | /* |
257 | | * Dispatch to the appropriate lookup_blob(), lookup_commit(), etc, based on |
258 | | * "type". |
259 | | */ |
260 | | struct object *lookup_object_by_type(struct repository *r, const struct object_id *oid, |
261 | | enum object_type type); |
262 | | |
263 | | enum peel_status { |
264 | | /* object was peeled successfully: */ |
265 | | PEEL_PEELED = 0, |
266 | | |
267 | | /* |
268 | | * object cannot be peeled because the named object (or an |
269 | | * object referred to by a tag in the peel chain), does not |
270 | | * exist. |
271 | | */ |
272 | | PEEL_INVALID = -1, |
273 | | |
274 | | /* object cannot be peeled because it is not a tag: */ |
275 | | PEEL_NON_TAG = -2, |
276 | | |
277 | | /* ref_entry contains no peeled value because it is a symref: */ |
278 | | PEEL_IS_SYMREF = -3, |
279 | | |
280 | | /* |
281 | | * ref_entry cannot be peeled because it is broken (i.e., the |
282 | | * symbolic reference cannot even be resolved to an object |
283 | | * name): |
284 | | */ |
285 | | PEEL_BROKEN = -4 |
286 | | }; |
287 | | |
288 | | /* |
289 | | * Peel the named object; i.e., if the object is a tag, resolve the |
290 | | * tag recursively until a non-tag is found. If successful, store the |
291 | | * result to oid and return PEEL_PEELED. If the object is not a tag |
292 | | * or is not valid, return PEEL_NON_TAG or PEEL_INVALID, respectively, |
293 | | * and leave oid unchanged. |
294 | | */ |
295 | | enum peel_status peel_object(struct repository *r, |
296 | | const struct object_id *name, struct object_id *oid); |
297 | | |
298 | | struct object_list *object_list_insert(struct object *item, |
299 | | struct object_list **list_p); |
300 | | |
301 | | int object_list_contains(struct object_list *list, struct object *obj); |
302 | | |
303 | | void object_list_free(struct object_list **list); |
304 | | |
305 | | /* Object array handling .. */ |
306 | | void add_object_array(struct object *obj, const char *name, struct object_array *array); |
307 | | void add_object_array_with_path(struct object *obj, const char *name, struct object_array *array, unsigned mode, const char *path); |
308 | | |
309 | | /* |
310 | | * Returns NULL if the array is empty. Otherwise, returns the last object |
311 | | * after removing its entry from the array. Other resources associated |
312 | | * with that object are left in an unspecified state and should not be |
313 | | * examined. |
314 | | */ |
315 | | struct object *object_array_pop(struct object_array *array); |
316 | | |
317 | | typedef int (*object_array_each_func_t)(struct object_array_entry *, void *); |
318 | | |
319 | | /* |
320 | | * Apply want to each entry in array, retaining only the entries for |
321 | | * which the function returns true. Preserve the order of the entries |
322 | | * that are retained. |
323 | | */ |
324 | | void object_array_filter(struct object_array *array, |
325 | | object_array_each_func_t want, void *cb_data); |
326 | | |
327 | | /* |
328 | | * Remove from array all but the first entry with a given name. |
329 | | * Warning: this function uses an O(N^2) algorithm. |
330 | | */ |
331 | | void object_array_remove_duplicates(struct object_array *array); |
332 | | |
333 | | /* |
334 | | * Remove any objects from the array, freeing all used memory; afterwards |
335 | | * the array is ready to store more objects with add_object_array(). |
336 | | */ |
337 | | void object_array_clear(struct object_array *array); |
338 | | |
339 | | void clear_object_flags(unsigned flags); |
340 | | |
341 | | /* |
342 | | * Clear the specified object flags from all in-core commit objects from |
343 | | * the specified repository. |
344 | | */ |
345 | | void repo_clear_commit_marks(struct repository *r, unsigned int flags); |
346 | | |
347 | | #endif /* OBJECT_H */ |