summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--alloc.c2
-rw-r--r--alloc.h4
-rw-r--r--apply.h3
-rw-r--r--archive.h1
-rw-r--r--attr.h1
-rw-r--r--bisect.h2
-rw-r--r--branch.h13
-rw-r--r--bulk-checkin.h2
-rw-r--r--cache.h10
-rw-r--r--column.h1
-rw-r--r--commit-graph.h1
-rw-r--r--compat/precompose_utf8.h3
-rw-r--r--config.c1
-rw-r--r--config.h5
-rw-r--r--connected.h1
-rw-r--r--convert.h2
-rw-r--r--csum-file.h2
-rw-r--r--diffcore.h4
-rw-r--r--dir-iterator.h2
-rw-r--r--environment.c1
-rw-r--r--fsck.h1
-rw-r--r--fsmonitor.h3
-rw-r--r--gpg-interface.h2
-rw-r--r--khash.h3
-rw-r--r--list-objects-filter.h4
-rw-r--r--list-objects.h4
-rw-r--r--ll-merge.h2
-rw-r--r--mailinfo.h2
-rw-r--r--mailmap.h2
-rw-r--r--merge-recursive.h4
-rw-r--r--notes-merge.h4
-rw-r--r--notes-utils.h3
-rw-r--r--notes.h3
-rw-r--r--object-store.h1
-rw-r--r--object.h2
-rw-r--r--oidmap.h1
-rw-r--r--pack-bitmap.h3
-rw-r--r--pack-objects.h1
-rw-r--r--patch-ids.h6
-rw-r--r--path.h1
-rw-r--r--pathspec.h2
-rw-r--r--pretty.h4
-rw-r--r--reachable.h2
-rw-r--r--reflog-walk.h1
-rw-r--r--refs.h2
-rw-r--r--remote.h1
-rw-r--r--repository.h2
-rw-r--r--resolve-undo.h2
-rw-r--r--revision.h1
-rw-r--r--send-pack.h4
-rw-r--r--sequencer.h5
-rw-r--r--shortlog.h2
-rw-r--r--submodule.h10
-rw-r--r--tempfile.h1
-rw-r--r--trailer.h2
-rw-r--r--tree-walk.h2
-rw-r--r--unpack-trees.h5
-rw-r--r--url.h2
-rw-r--r--urlmatch.h2
-rw-r--r--utf8.h2
-rw-r--r--worktree.h1
61 files changed, 151 insertions, 17 deletions
diff --git a/alloc.c b/alloc.c
index c2fc5d688..e7aa81b7a 100644
--- a/alloc.c
+++ b/alloc.c
@@ -36,7 +36,7 @@ struct alloc_state {
int slab_nr, slab_alloc;
};
-void *allocate_alloc_state(void)
+struct alloc_state *allocate_alloc_state(void)
{
return xcalloc(1, sizeof(struct alloc_state));
}
diff --git a/alloc.h b/alloc.h
index 3e4e828db..ba356ed84 100644
--- a/alloc.h
+++ b/alloc.h
@@ -1,9 +1,11 @@
#ifndef ALLOC_H
#define ALLOC_H
+struct alloc_state;
struct tree;
struct commit;
struct tag;
+struct repository;
void *alloc_blob_node(struct repository *r);
void *alloc_tree_node(struct repository *r);
@@ -13,7 +15,7 @@ void *alloc_object_node(struct repository *r);
void alloc_report(struct repository *r);
unsigned int alloc_commit_index(struct repository *r);
-void *allocate_alloc_state(void);
+struct alloc_state *allocate_alloc_state(void);
void clear_alloc_state(struct alloc_state *s);
#endif
diff --git a/apply.h b/apply.h
index 78c8bcfc3..594834813 100644
--- a/apply.h
+++ b/apply.h
@@ -1,6 +1,9 @@
#ifndef APPLY_H
#define APPLY_H
+#include "lockfile.h"
+#include "string-list.h"
+
struct repository;
enum apply_ws_error_action {
diff --git a/archive.h b/archive.h
index 75b9a8606..d4f97a00f 100644
--- a/archive.h
+++ b/archive.h
@@ -1,6 +1,7 @@
#ifndef ARCHIVE_H
#define ARCHIVE_H
+#include "cache.h"
#include "pathspec.h"
struct repository;
diff --git a/attr.h b/attr.h
index 01dab4a12..2be86db36 100644
--- a/attr.h
+++ b/attr.h
@@ -9,6 +9,7 @@ struct git_attr;
/* opaque structures used internally for attribute collection */
struct all_attrs_item;
struct attr_stack;
+struct index_state;
/*
* Given a string, return the gitattribute object that
diff --git a/bisect.h b/bisect.h
index a5d9248a4..34df20935 100644
--- a/bisect.h
+++ b/bisect.h
@@ -1,6 +1,8 @@
#ifndef BISECT_H
#define BISECT_H
+struct commit_list;
+
/*
* Find bisection. If something is found, `reaches` will be the number of
* commits that the best commit reaches. `all` will be the count of
diff --git a/branch.h b/branch.h
index 473d0a93e..5cace4581 100644
--- a/branch.h
+++ b/branch.h
@@ -1,6 +1,19 @@
#ifndef BRANCH_H
#define BRANCH_H
+struct strbuf;
+
+enum branch_track {
+ BRANCH_TRACK_UNSPECIFIED = -1,
+ BRANCH_TRACK_NEVER = 0,
+ BRANCH_TRACK_REMOTE,
+ BRANCH_TRACK_ALWAYS,
+ BRANCH_TRACK_EXPLICIT,
+ BRANCH_TRACK_OVERRIDE
+};
+
+extern enum branch_track git_branch_track;
+
/* Functions for acting on the information about branches. */
/*
diff --git a/bulk-checkin.h b/bulk-checkin.h
index a85527318..f438f9381 100644
--- a/bulk-checkin.h
+++ b/bulk-checkin.h
@@ -4,6 +4,8 @@
#ifndef BULK_CHECKIN_H
#define BULK_CHECKIN_H
+#include "cache.h"
+
extern int index_bulk_checkin(struct object_id *oid,
int fd, size_t size, enum object_type type,
const char *path, unsigned flags);
diff --git a/cache.h b/cache.h
index 66d3b91cd..b1fd3d58a 100644
--- a/cache.h
+++ b/cache.h
@@ -917,15 +917,6 @@ enum log_refs_config {
};
extern enum log_refs_config log_all_ref_updates;
-enum branch_track {
- BRANCH_TRACK_UNSPECIFIED = -1,
- BRANCH_TRACK_NEVER = 0,
- BRANCH_TRACK_REMOTE,
- BRANCH_TRACK_ALWAYS,
- BRANCH_TRACK_EXPLICIT,
- BRANCH_TRACK_OVERRIDE
-};
-
enum rebase_setup_type {
AUTOREBASE_NEVER = 0,
AUTOREBASE_LOCAL,
@@ -942,7 +933,6 @@ enum push_default_type {
PUSH_DEFAULT_UNSPECIFIED
};
-extern enum branch_track git_branch_track;
extern enum rebase_setup_type autorebase;
extern enum push_default_type push_default;
diff --git a/column.h b/column.h
index 0a61917fa..2567a5cf4 100644
--- a/column.h
+++ b/column.h
@@ -36,6 +36,7 @@ static inline int column_active(unsigned int colopts)
return (colopts & COL_ENABLE_MASK) == COL_ENABLED;
}
+struct string_list;
extern void print_columns(const struct string_list *list, unsigned int colopts,
const struct column_options *opts);
diff --git a/commit-graph.h b/commit-graph.h
index 76e098934..eea62f8c0 100644
--- a/commit-graph.h
+++ b/commit-graph.h
@@ -4,6 +4,7 @@
#include "git-compat-util.h"
#include "repository.h"
#include "string-list.h"
+#include "cache.h"
struct commit;
diff --git a/compat/precompose_utf8.h b/compat/precompose_utf8.h
index a94e7c434..6f843d3e1 100644
--- a/compat/precompose_utf8.h
+++ b/compat/precompose_utf8.h
@@ -1,4 +1,6 @@
#ifndef PRECOMPOSE_UNICODE_H
+#define PRECOMPOSE_UNICODE_H
+
#include <sys/stat.h>
#include <sys/types.h>
#include <dirent.h>
@@ -41,5 +43,4 @@ int precompose_utf8_closedir(PREC_DIR *dirp);
#define DIR PREC_DIR
#endif /* PRECOMPOSE_UNICODE_C */
-#define PRECOMPOSE_UNICODE_H
#endif /* PRECOMPOSE_UNICODE_H */
diff --git a/config.c b/config.c
index 444690922..f97ea3475 100644
--- a/config.c
+++ b/config.c
@@ -6,6 +6,7 @@
*
*/
#include "cache.h"
+#include "branch.h"
#include "config.h"
#include "repository.h"
#include "lockfile.h"
diff --git a/config.h b/config.h
index 2d5c18b05..ab46e0165 100644
--- a/config.h
+++ b/config.h
@@ -1,6 +1,11 @@
#ifndef CONFIG_H
#define CONFIG_H
+#include "hashmap.h"
+#include "string-list.h"
+
+struct object_id;
+
/* git_config_parse_key() returns these negated: */
#define CONFIG_INVALID_KEY 1
#define CONFIG_NO_SECTION_OR_NAME 2
diff --git a/connected.h b/connected.h
index 322dc7637..e4c961817 100644
--- a/connected.h
+++ b/connected.h
@@ -1,6 +1,7 @@
#ifndef CONNECTED_H
#define CONNECTED_H
+struct object_id;
struct transport;
/*
diff --git a/convert.h b/convert.h
index 6d0ee887e..831559f10 100644
--- a/convert.h
+++ b/convert.h
@@ -7,6 +7,8 @@
#include "string-list.h"
struct index_state;
+struct object_id;
+struct strbuf;
#define CONV_EOL_RNDTRP_DIE (1<<0) /* Die if CRLF to LF to CRLF is different */
#define CONV_EOL_RNDTRP_WARN (1<<1) /* Warn if CRLF to LF to CRLF is different */
diff --git a/csum-file.h b/csum-file.h
index c5a2e335e..3bf718473 100644
--- a/csum-file.h
+++ b/csum-file.h
@@ -1,6 +1,8 @@
#ifndef CSUM_FILE_H
#define CSUM_FILE_H
+#include "hash.h"
+
struct progress;
/* A SHA1-protected file */
diff --git a/diffcore.h b/diffcore.h
index 81281a398..8d81a45f5 100644
--- a/diffcore.h
+++ b/diffcore.h
@@ -4,6 +4,10 @@
#ifndef DIFFCORE_H
#define DIFFCORE_H
+#include "cache.h"
+
+struct diff_options;
+
/* This header file is internal between diff.c and its diff transformers
* (e.g. diffcore-rename, diffcore-pickaxe). Never include this header
* in anything else.
diff --git a/dir-iterator.h b/dir-iterator.h
index 27739e6c2..970793d07 100644
--- a/dir-iterator.h
+++ b/dir-iterator.h
@@ -1,6 +1,8 @@
#ifndef DIR_ITERATOR_H
#define DIR_ITERATOR_H
+#include "strbuf.h"
+
/*
* Iterate over a directory tree.
*
diff --git a/environment.c b/environment.c
index 68523b6b0..3f3c8746c 100644
--- a/environment.c
+++ b/environment.c
@@ -8,6 +8,7 @@
* are.
*/
#include "cache.h"
+#include "branch.h"
#include "repository.h"
#include "config.h"
#include "refs.h"
diff --git a/fsck.h b/fsck.h
index c3cf5e003..0c7e8c942 100644
--- a/fsck.h
+++ b/fsck.h
@@ -6,6 +6,7 @@
#define FSCK_IGNORE 3
struct fsck_options;
+struct object;
void fsck_set_msg_type(struct fsck_options *options,
const char *msg_id, const char *msg_type);
diff --git a/fsmonitor.h b/fsmonitor.h
index 65f374363..01017c43a 100644
--- a/fsmonitor.h
+++ b/fsmonitor.h
@@ -1,6 +1,9 @@
#ifndef FSMONITOR_H
#define FSMONITOR_H
+#include "cache.h"
+#include "dir.h"
+
extern struct trace_key trace_fsmonitor;
/*
diff --git a/gpg-interface.h b/gpg-interface.h
index 5ecff4aa0..acf50c461 100644
--- a/gpg-interface.h
+++ b/gpg-interface.h
@@ -1,6 +1,8 @@
#ifndef GPG_INTERFACE_H
#define GPG_INTERFACE_H
+struct strbuf;
+
#define GPG_VERIFY_VERBOSE 1
#define GPG_VERIFY_RAW 2
#define GPG_VERIFY_OMIT_STATUS 4
diff --git a/khash.h b/khash.h
index c0da40daa..07b4cc2e6 100644
--- a/khash.h
+++ b/khash.h
@@ -26,6 +26,9 @@
#ifndef __AC_KHASH_H
#define __AC_KHASH_H
+#include "cache.h"
+#include "hashmap.h"
+
#define AC_VERSION_KHASH_H "0.2.8"
typedef uint32_t khint32_t;
diff --git a/list-objects-filter.h b/list-objects-filter.h
index a963d0274..a6f6b4990 100644
--- a/list-objects-filter.h
+++ b/list-objects-filter.h
@@ -1,6 +1,10 @@
#ifndef LIST_OBJECTS_FILTER_H
#define LIST_OBJECTS_FILTER_H
+struct list_objects_filter_options;
+struct object;
+struct oidset;
+
/*
* During list-object traversal we allow certain objects to be
* filtered (omitted) from the result. The active filter uses
diff --git a/list-objects.h b/list-objects.h
index aa618d7f4..ad4076292 100644
--- a/list-objects.h
+++ b/list-objects.h
@@ -1,6 +1,10 @@
#ifndef LIST_OBJECTS_H
#define LIST_OBJECTS_H
+struct commit;
+struct object;
+struct rev_info;
+
typedef void (*show_commit_fn)(struct commit *, void *);
typedef void (*show_object_fn)(struct object *, const char *, void *);
void traverse_commit_list(struct rev_info *, show_commit_fn, show_object_fn, void *);
diff --git a/ll-merge.h b/ll-merge.h
index 244a31f55..b72b19921 100644
--- a/ll-merge.h
+++ b/ll-merge.h
@@ -5,6 +5,8 @@
#ifndef LL_MERGE_H
#define LL_MERGE_H
+#include "xdiff/xdiff.h"
+
struct ll_merge_options {
unsigned virtual_ancestor : 1;
unsigned variant : 2; /* favor ours, favor theirs, or union merge */
diff --git a/mailinfo.h b/mailinfo.h
index 04a25351d..766c03dd1 100644
--- a/mailinfo.h
+++ b/mailinfo.h
@@ -1,6 +1,8 @@
#ifndef MAILINFO_H
#define MAILINFO_H
+#include "strbuf.h"
+
#define MAX_BOUNDARIES 5
struct mailinfo {
diff --git a/mailmap.h b/mailmap.h
index ed7c93b05..d0e65646c 100644
--- a/mailmap.h
+++ b/mailmap.h
@@ -1,6 +1,8 @@
#ifndef MAILMAP_H
#define MAILMAP_H
+struct string_list;
+
int read_mailmap(struct string_list *map, char **repo_abbrev);
void clear_mailmap(struct string_list *map);
diff --git a/merge-recursive.h b/merge-recursive.h
index fa7bc6b68..0c46a5a4f 100644
--- a/merge-recursive.h
+++ b/merge-recursive.h
@@ -1,8 +1,10 @@
#ifndef MERGE_RECURSIVE_H
#define MERGE_RECURSIVE_H
-#include "unpack-trees.h"
#include "string-list.h"
+#include "unpack-trees.h"
+
+struct commit;
struct merge_options {
const char *ancestor;
diff --git a/notes-merge.h b/notes-merge.h
index f815f2345..6c74e9385 100644
--- a/notes-merge.h
+++ b/notes-merge.h
@@ -2,6 +2,10 @@
#define NOTES_MERGE_H
#include "notes-utils.h"
+#include "strbuf.h"
+
+struct commit;
+struct object_id;
#define NOTES_MERGE_WORKTREE "NOTES_MERGE_WORKTREE"
diff --git a/notes-utils.h b/notes-utils.h
index 5d79cbef5..540830652 100644
--- a/notes-utils.h
+++ b/notes-utils.h
@@ -3,6 +3,9 @@
#include "notes.h"
+struct commit_list;
+struct object_id;
+
/*
* Create new notes commit from the given notes tree
*
diff --git a/notes.h b/notes.h
index 0433f45db..414bc6855 100644
--- a/notes.h
+++ b/notes.h
@@ -3,6 +3,9 @@
#include "string-list.h"
+struct object_id;
+struct strbuf;
+
/*
* Function type for combining two notes annotating the same object.
*
diff --git a/object-store.h b/object-store.h
index 162156f5d..67e66227d 100644
--- a/object-store.h
+++ b/object-store.h
@@ -1,6 +1,7 @@
#ifndef OBJECT_STORE_H
#define OBJECT_STORE_H
+#include "cache.h"
#include "oidmap.h"
#include "list.h"
#include "sha1-array.h"
diff --git a/object.h b/object.h
index 177b1a457..6e28fdd0b 100644
--- a/object.h
+++ b/object.h
@@ -1,6 +1,8 @@
#ifndef OBJECT_H
#define OBJECT_H
+#include "cache.h"
+
struct buffer_slab;
struct parsed_object_pool {
diff --git a/oidmap.h b/oidmap.h
index d3cd2bb59..72430b611 100644
--- a/oidmap.h
+++ b/oidmap.h
@@ -1,6 +1,7 @@
#ifndef OIDMAP_H
#define OIDMAP_H
+#include "cache.h"
#include "hashmap.h"
/*
diff --git a/pack-bitmap.h b/pack-bitmap.h
index 4555907de..8a04741e1 100644
--- a/pack-bitmap.h
+++ b/pack-bitmap.h
@@ -5,6 +5,9 @@
#include "khash.h"
#include "pack-objects.h"
+struct commit;
+struct rev_info;
+
struct bitmap_disk_header {
char magic[4];
uint16_t version;
diff --git a/pack-objects.h b/pack-objects.h
index edf74dabd..08c6b57d4 100644
--- a/pack-objects.h
+++ b/pack-objects.h
@@ -2,6 +2,7 @@
#define PACK_OBJECTS_H
#include "object-store.h"
+#include "pack.h"
#define DEFAULT_DELTA_CACHE_SIZE (256 * 1024 * 1024)
diff --git a/patch-ids.h b/patch-ids.h
index bec0f727a..79ac9a849 100644
--- a/patch-ids.h
+++ b/patch-ids.h
@@ -1,6 +1,12 @@
#ifndef PATCH_IDS_H
#define PATCH_IDS_H
+#include "diff.h"
+#include "hashmap.h"
+
+struct commit;
+struct object_id;
+
struct patch_id {
struct hashmap_entry ent;
struct object_id patch_id;
diff --git a/path.h b/path.h
index ed6732e5a..b654ea8ff 100644
--- a/path.h
+++ b/path.h
@@ -2,6 +2,7 @@
#define PATH_H
struct repository;
+struct strbuf;
/*
* The result to all functions which return statically allocated memory may be
diff --git a/pathspec.h b/pathspec.h
index 099a170c2..a6525a655 100644
--- a/pathspec.h
+++ b/pathspec.h
@@ -1,6 +1,8 @@
#ifndef PATHSPEC_H
#define PATHSPEC_H
+struct index_state;
+
/* Pathspec magic */
#define PATHSPEC_FROMTOP (1<<0)
#define PATHSPEC_MAXDEPTH (1<<1)
diff --git a/pretty.h b/pretty.h
index 5c85d94e3..7359d318a 100644
--- a/pretty.h
+++ b/pretty.h
@@ -1,7 +1,11 @@
#ifndef PRETTY_H
#define PRETTY_H
+#include "cache.h"
+#include "string-list.h"
+
struct commit;
+struct strbuf;
/* Commit formats */
enum cmit_fmt {
diff --git a/reachable.h b/reachable.h
index 3c00fa052..18b0f9f2f 100644
--- a/reachable.h
+++ b/reachable.h
@@ -2,6 +2,8 @@
#define REACHEABLE_H
struct progress;
+struct rev_info;
+
extern int add_unseen_recent_objects_to_traversal(struct rev_info *revs,
timestamp_t timestamp);
extern void mark_reachable_objects(struct rev_info *revs, int mark_reflog,
diff --git a/reflog-walk.h b/reflog-walk.h
index 7553c448f..cb3e73755 100644
--- a/reflog-walk.h
+++ b/reflog-walk.h
@@ -3,6 +3,7 @@
#include "cache.h"
+struct commit;
struct reflog_walk_info;
extern void init_reflog_walk(struct reflog_walk_info **info);
diff --git a/refs.h b/refs.h
index cc2fb4c68..bd52c1bba 100644
--- a/refs.h
+++ b/refs.h
@@ -3,8 +3,10 @@
struct object_id;
struct ref_store;
+struct repository;
struct strbuf;
struct string_list;
+struct string_list_item;
struct worktree;
/*
diff --git a/remote.h b/remote.h
index 976292152..88f8480c7 100644
--- a/remote.h
+++ b/remote.h
@@ -1,6 +1,7 @@
#ifndef REMOTE_H
#define REMOTE_H
+#include "cache.h"
#include "parse-options.h"
#include "hashmap.h"
#include "refspec.h"
diff --git a/repository.h b/repository.h
index 58961037c..9f16c42c1 100644
--- a/repository.h
+++ b/repository.h
@@ -1,6 +1,8 @@
#ifndef REPOSITORY_H
#define REPOSITORY_H
+#include "path.h"
+
struct config_set;
struct git_hash_algo;
struct index_state;
diff --git a/resolve-undo.h b/resolve-undo.h
index 87291904b..fbe348efa 100644
--- a/resolve-undo.h
+++ b/resolve-undo.h
@@ -1,6 +1,8 @@
#ifndef RESOLVE_UNDO_H
#define RESOLVE_UNDO_H
+#include "cache.h"
+
struct resolve_undo_info {
unsigned int mode[3];
struct object_id oid[3];
diff --git a/revision.h b/revision.h
index 51bb57d88..007278cc1 100644
--- a/revision.h
+++ b/revision.h
@@ -1,6 +1,7 @@
#ifndef REVISION_H
#define REVISION_H
+#include "commit.h"
#include "parse-options.h"
#include "grep.h"
#include "notes.h"
diff --git a/send-pack.h b/send-pack.h
index 6af71f700..e148fcd96 100644
--- a/send-pack.h
+++ b/send-pack.h
@@ -3,6 +3,10 @@
#include "string-list.h"
+struct child_process;
+struct oid_array;
+struct ref;
+
/* Possible values for push_cert field in send_pack_args. */
#define SEND_PACK_PUSH_CERT_NEVER 0
#define SEND_PACK_PUSH_CERT_IF_ASKED 1
diff --git a/sequencer.h b/sequencer.h
index c5787c6b5..c751c9d6e 100644
--- a/sequencer.h
+++ b/sequencer.h
@@ -1,6 +1,11 @@
#ifndef SEQUENCER_H
#define SEQUENCER_H
+#include "cache.h"
+#include "strbuf.h"
+
+struct commit;
+
const char *git_path_commit_editmsg(void);
const char *git_path_seq_dir(void);
diff --git a/shortlog.h b/shortlog.h
index 5d64cfe92..2fa61c429 100644
--- a/shortlog.h
+++ b/shortlog.h
@@ -3,6 +3,8 @@
#include "string-list.h"
+struct commit;
+
struct shortlog {
struct string_list list;
int summary;
diff --git a/submodule.h b/submodule.h
index c98cd983e..7d476cefa 100644
--- a/submodule.h
+++ b/submodule.h
@@ -1,11 +1,17 @@
#ifndef SUBMODULE_H
#define SUBMODULE_H
-struct repository;
-struct diff_options;
struct argv_array;
+struct cache_entry;
+struct diff_options;
+struct index_state;
+struct object_id;
struct oid_array;
+struct pathspec;
struct remote;
+struct repository;
+struct string_list;
+struct strbuf;
enum {
RECURSE_SUBMODULES_ONLY = -5,
diff --git a/tempfile.h b/tempfile.h
index 8959c5f1b..36434eb6f 100644
--- a/tempfile.h
+++ b/tempfile.h
@@ -2,6 +2,7 @@
#define TEMPFILE_H
#include "list.h"
+#include "strbuf.h"
/*
* Handle temporary files.
diff --git a/trailer.h b/trailer.h
index 6d7f8c2a5..9c10026c3 100644
--- a/trailer.h
+++ b/trailer.h
@@ -3,6 +3,8 @@
#include "list.h"
+struct strbuf;
+
enum trailer_where {
WHERE_DEFAULT,
WHERE_END,
diff --git a/tree-walk.h b/tree-walk.h
index 805f58f00..196831007 100644
--- a/tree-walk.h
+++ b/tree-walk.h
@@ -1,6 +1,8 @@
#ifndef TREE_WALK_H
#define TREE_WALK_H
+struct strbuf;
+
struct name_entry {
const struct object_id *oid;
const char *path;
diff --git a/unpack-trees.h b/unpack-trees.h
index 534358fcc..847f217db 100644
--- a/unpack-trees.h
+++ b/unpack-trees.h
@@ -1,11 +1,14 @@
#ifndef UNPACK_TREES_H
#define UNPACK_TREES_H
-#include "tree-walk.h"
+#include "cache.h"
#include "argv-array.h"
+#include "string-list.h"
+#include "tree-walk.h"
#define MAX_UNPACK_TREES 8
+struct cache_entry;
struct unpack_trees_options;
struct exclude_list;
diff --git a/url.h b/url.h
index abdaf6fa3..f311c40a4 100644
--- a/url.h
+++ b/url.h
@@ -1,6 +1,8 @@
#ifndef URL_H
#define URL_H
+struct strbuf;
+
extern int is_url(const char *url);
extern int is_urlschemechar(int first_flag, int ch);
extern char *url_decode(const char *url);
diff --git a/urlmatch.h b/urlmatch.h
index 37ee5da85..e48214824 100644
--- a/urlmatch.h
+++ b/urlmatch.h
@@ -1,4 +1,6 @@
#ifndef URL_MATCH_H
+#define URL_MATCH_H
+
#include "string-list.h"
struct url_info {
diff --git a/utf8.h b/utf8.h
index ce1c2696e..edea55e09 100644
--- a/utf8.h
+++ b/utf8.h
@@ -1,6 +1,8 @@
#ifndef GIT_UTF8_H
#define GIT_UTF8_H
+struct strbuf;
+
typedef unsigned int ucs_char_t; /* assuming 32bit int */
size_t display_mode_esc_sequence_len(const char *s);
diff --git a/worktree.h b/worktree.h
index fe38ce10c..df3fc30f7 100644
--- a/worktree.h
+++ b/worktree.h
@@ -1,6 +1,7 @@
#ifndef WORKTREE_H
#define WORKTREE_H
+#include "cache.h"
#include "refs.h"
struct strbuf;