Coverage Report

Created: 2024-09-16 06:10

/src/git/object.h
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 */