This series fixes compilation errors when using a simple test.c file that includes git-compat-util.h and then exactly one other header (and repeating this for different headers of git). Changes since v2 (full range-diff below): - Ensure the first #include in C files is either git-compat-util.h, cache.h, or builtin.h (pointed out by Ramsay). Also, although not important, also tweaked a couple other #include orders to put cache.h first in some .h files. Elijah Newren (6): Add missing includes and forward declares alloc: make allocate_alloc_state and clear_alloc_state more consistent Move definition of enum branch_track from cache.h to branch.h urlmatch.h: fix include guard compat/precompose_utf8.h: use more common include guard style Add missing includes and forward declares alloc.c | 2 +- alloc.h | 4 +++- apply.h | 3 +++ archive.h | 3 +++ attr.h | 1 + bisect.h | 2 ++ branch.h | 13 +++++++++++++ bulk-checkin.h | 2 ++ cache.h | 10 ---------- column.h | 1 + commit-graph.h | 1 + compat/precompose_utf8.h | 3 ++- config.c | 1 + config.h | 5 +++++ connected.h | 1 + convert.h | 2 ++ csum-file.h | 2 ++ diffcore.h | 4 ++++ dir-iterator.h | 2 ++ environment.c | 1 + fsck.h | 1 + fsmonitor.h | 7 +++++++ gpg-interface.h | 2 ++ khash.h | 3 +++ list-objects-filter.h | 4 ++++ list-objects.h | 4 ++++ ll-merge.h | 2 ++ mailinfo.h | 2 ++ mailmap.h | 2 ++ merge-recursive.h | 4 +++- notes-merge.h | 4 ++++ notes-utils.h | 3 +++ notes.h | 3 +++ object-store.h | 1 + object.h | 2 ++ oidmap.h | 1 + pack-bitmap.h | 3 +++ pack-objects.h | 1 + patch-ids.h | 6 ++++++ path.h | 1 + pathspec.h | 5 +++++ pretty.h | 4 ++++ reachable.h | 2 ++ reflog-walk.h | 1 + refs.h | 2 ++ remote.h | 1 + repository.h | 2 ++ resolve-undo.h | 2 ++ revision.h | 1 + send-pack.h | 4 ++++ sequencer.h | 5 +++++ shortlog.h | 2 ++ submodule.h | 10 ++++++++-- tempfile.h | 1 + trailer.h | 2 ++ tree-walk.h | 2 ++ unpack-trees.h | 5 ++++- url.h | 2 ++ urlmatch.h | 2 ++ utf8.h | 2 ++ worktree.h | 1 + 61 files changed, 160 insertions(+), 17 deletions(-) 1: 2bd09172ef ! 1: f7d50cef3b Add missing includes and forward declares @@ -242,8 +242,8 @@ #ifndef __AC_KHASH_H #define __AC_KHASH_H -+#include "hashmap.h" +#include "cache.h" ++#include "hashmap.h" + #define AC_VERSION_KHASH_H "0.2.8" @@ -693,8 +693,8 @@ #define UNPACK_TREES_H -#include "tree-walk.h" - #include "argv-array.h" +#include "cache.h" + #include "argv-array.h" +#include "string-list.h" +#include "tree-walk.h" 2: 854860e967 = 2: e46bf7d601 alloc: make allocate_alloc_state and clear_alloc_state more consistent 3: c91c4eaa38 ! 3: aec8ddda59 Move definition of enum branch_track from cache.h to branch.h @@ -63,22 +63,22 @@ --- a/config.c +++ b/config.c @@ - * Copyright (C) Johannes Schindelin, 2005 * */ -+#include "branch.h" #include "cache.h" ++#include "branch.h" #include "config.h" #include "repository.h" + #include "lockfile.h" diff --git a/environment.c b/environment.c --- a/environment.c +++ b/environment.c @@ - * even if you might want to know where the git directory etc * are. */ -+#include "branch.h" #include "cache.h" ++#include "branch.h" #include "repository.h" #include "config.h" + #include "refs.h" 4: 550568912b = 4: 14e33fb5ff urlmatch.h: fix include guard 5: 1186b37a3c = 5: 3e02a381af compat/precompose_utf8.h: use more common include guard style 6: 0642f8ecf0 = 6: aca61bade1 Add missing includes and forward declares -- 2.18.0.549.gd4454f3f9b