treewide: ensure one of the appropriate headers is sourced first

We had several C files ignoring the rule to include one of the
appropriate headers first; fix that.

While at it, the rule in Documentation/CodingGuidelines about which
header to include has also fallen out of sync, so update the wording to
mention other allowed headers.

Unfortunately, C files in reftable/ don't actually follow the previous
or updated rule.  If you follow the #include chain in its C files,
reftable/system.h _tends_ to be first (i.e. record.c first includes
record.h, which first includes basics.h, which first includees
system.h), but not always (e.g. publicbasics.c includes another header
first that does not include system.h).  However, I'm going to punt on
making actual changes to the C files in reftable/ since I do not want to
risk bringing it out-of-sync with any version being used externally.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Elijah Newren 2023-02-24 00:09:20 +00:00 committed by Junio C Hamano
parent 06dd2baa8d
commit 8bff5ca030
14 changed files with 19 additions and 3 deletions

View File

@ -442,8 +442,12 @@ For C programs:
detail. detail.
- The first #include in C files, except in platform specific compat/ - The first #include in C files, except in platform specific compat/
implementations, must be either "git-compat-util.h", "cache.h" or implementations and sha1dc/, must be either "git-compat-util.h" or
"builtin.h". You do not have to include more than one of these. one of the approved headers that includes it first for you. (The
approved headers currently include "cache.h", "builtin.h",
"t/helper/test-tool.h", "xdiff/xinclude.h", or
"reftable/system.h"). You do not have to include more than one of
these.
- A C file must directly include the header files that declare the - A C file must directly include the header files that declare the
functions and the types it uses, except for the functions and types functions and the types it uses, except for the functions and types

View File

@ -4,6 +4,7 @@
* Based on Adam Langley's adaptation of Dan Bernstein's public domain code * Based on Adam Langley's adaptation of Dan Bernstein's public domain code
* git clone https://github.com/agl/critbit.git * git clone https://github.com/agl/critbit.git
*/ */
#include "git-compat-util.h"
#include "cbtree.h" #include "cbtree.h"
static struct cb_node *cb_node_of(const void *p) static struct cb_node *cb_node_of(const void *p)

View File

@ -1,3 +1,4 @@
#include "git-compat-util.h"
#include "config.h" #include "config.h"
#include "fsmonitor-ipc.h" #include "fsmonitor-ipc.h"

View File

@ -1,3 +1,4 @@
#include "git-compat-util.h"
#include "config.h" #include "config.h"
#include "fsmonitor.h" #include "fsmonitor.h"
#include "fsmonitor-ipc.h" #include "fsmonitor-ipc.h"

View File

@ -1,3 +1,4 @@
#include "git-compat-util.h"
#include "diff-merges.h" #include "diff-merges.h"
#include "revision.h" #include "revision.h"

View File

@ -1,3 +1,4 @@
#include "git-compat-util.h"
#include "config.h" #include "config.h"
#include "refs.h" #include "refs.h"
#include "object-store.h" #include "object-store.h"

View File

@ -2,6 +2,7 @@
* A wrapper around cbtree which stores oids * A wrapper around cbtree which stores oids
* May be used to replace oid-array for prefix (abbreviation) matches * May be used to replace oid-array for prefix (abbreviation) matches
*/ */
#include "git-compat-util.h"
#include "oidtree.h" #include "oidtree.h"
#include "alloc.h" #include "alloc.h"
#include "hash.h" #include "hash.h"

View File

@ -1,3 +1,4 @@
#include "git-compat-util.h"
#include "commit-graph.h" #include "commit-graph.h"
#include "repository.h" #include "repository.h"

View File

@ -1,3 +1,4 @@
#include "git-compat-util.h"
#include "packfile.h" #include "packfile.h"
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size); int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);

View File

@ -1,3 +1,4 @@
#include "git-compat-util.h"
#include "object-store.h" #include "object-store.h"
#include "packfile.h" #include "packfile.h"

View File

@ -1,3 +1,4 @@
#include "git-compat-util.h"
#include "object-store.h" #include "object-store.h"
#include "packfile.h" #include "packfile.h"
#include "progress.h" #include "progress.h"

View File

@ -1,3 +1,4 @@
#include "git-compat-util.h"
#include "rebase.h" #include "rebase.h"
#include "config.h" #include "config.h"
#include "gettext.h" #include "gettext.h"

View File

@ -1,4 +1,4 @@
#include "git-compat-util.h"
#include "refs-internal.h" #include "refs-internal.h"
#include "trace.h" #include "trace.h"

View File

@ -1,6 +1,7 @@
/* /*
* Generic implementation of background process infrastructure. * Generic implementation of background process infrastructure.
*/ */
#include "git-compat-util.h"
#include "sub-process.h" #include "sub-process.h"
#include "sigchain.h" #include "sigchain.h"
#include "pkt-line.h" #include "pkt-line.h"