]> git.ipfire.org Git - thirdparty/git.git/commitdiff
refs: avoid include cycle with "repository.h"
authorPatrick Steinhardt <ps@pks.im>
Fri, 14 Jun 2024 06:50:28 +0000 (08:50 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 14 Jun 2024 17:26:33 +0000 (10:26 -0700)
There is an include cycle between "refs.h" and "repository.h" via
"commit.h", "object.h" and "hash.h". This has the effect that several
definitions of structs and enums will not be visible once we merge
"hash-ll.h" back into "hash.h" in the next commit.

The only reason that "repository.h" includes "refs.h" is the definition
of `enum ref_storage_format`. Move it into "repository.h" and have
"refs.h" include "repository.h" instead to fix the cycle.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
refs.h
repository.h

diff --git a/refs.h b/refs.h
index 76d25df4de92cac00fa6a4d1d54aa5384b3d7068..a9716e5d251b02ef7a8ec977d34092dcdeb7eca5 100644 (file)
--- a/refs.h
+++ b/refs.h
@@ -2,21 +2,15 @@
 #define REFS_H
 
 #include "commit.h"
+#include "repository.h"
 
 struct object_id;
 struct ref_store;
-struct repository;
 struct strbuf;
 struct string_list;
 struct string_list_item;
 struct worktree;
 
-enum ref_storage_format {
-       REF_STORAGE_FORMAT_UNKNOWN,
-       REF_STORAGE_FORMAT_FILES,
-       REF_STORAGE_FORMAT_REFTABLE,
-};
-
 enum ref_storage_format ref_storage_format_by_name(const char *name);
 const char *ref_storage_format_to_name(enum ref_storage_format ref_storage_format);
 
index 29727edec6dbee864b904d318a132e53d5ef54a2..6ce6826c269d0713f1ee53b3c3a77215b485c68b 100644 (file)
@@ -1,7 +1,6 @@
 #ifndef REPOSITORY_H
 #define REPOSITORY_H
 
-#include "refs.h"
 #include "strmap.h"
 
 struct config_set;
@@ -27,6 +26,12 @@ enum fetch_negotiation_setting {
        FETCH_NEGOTIATION_NOOP,
 };
 
+enum ref_storage_format {
+       REF_STORAGE_FORMAT_UNKNOWN,
+       REF_STORAGE_FORMAT_FILES,
+       REF_STORAGE_FORMAT_REFTABLE,
+};
+
 struct repo_settings {
        int initialized;