git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 13/17] object-store.h: move struct object_info from cache.h

From
Elijah Newren via GitGitGadget <gitgitgadget@gmail.com>
Date
Feb 24, 2023, 00:09 UTC
Message-ID
<12eb68b1ba36fcdcb5d97c6119db5581477a742c.1677197378.git.gitgitgadget@gmail.com>
In-Reply-To
<pull.1485.v2.git.1677197376.gitgitgadget@gmail.com>
From: Elijah Newren <newren@gmail.com>

Move struct object_info, and a few related #define's from cache.h to object-store.h.

A surprising effect of this change is that replace-object.h, which includes object-store.h, now needs to directly include cache.h since that is where read_replace_refs is declared and that variable is used in one of its inline functions. The next commit will move that declaration and fix that unfortunate new direct inclusion of cache.h.

Signed-off-by: Elijah Newren <newren@gmail.com>
---
 merge-blobs.c    |   2 +-
 object-store.h   | 128 +++++++++++++++++++++++------------------------
 protocol-caps.c  |   1 +
 replace-object.h |   1 +
 4 files changed, 67 insertions(+), 65 deletions(-)
diff --git a/merge-blobs.c b/merge-blobs.c
index 8138090f81c..aedcab81138 100644
--- a/merge-blobs.c
+++ b/merge-blobs.c
@@ -1,4 +1,4 @@
-#include "cache.h"
+#include "git-compat-util.h"
 #include "run-command.h"
 #include "xdiff-interface.h"
 #include "ll-merge.h"
diff --git a/object-store.h b/object-store.h
index 1a713d89d7c..82201ec3e7b 100644
--- a/object-store.h
+++ b/object-store.h
@@ -1,7 +1,7 @@
 #ifndef OBJECT_STORE_H
 #define OBJECT_STORE_H
 
-#include "cache.h"
+#include "object.h"
 #include "oidmap.h"
 #include "list.h"
 #include "oid-array.h"
@@ -284,6 +284,69 @@ int pretend_object_file(void *, unsigned long, enum object_type,
 
 int force_object_loose(const struct object_id *oid, time_t mtime);
 
+struct object_info {
+	/* Request */
+	enum object_type *typep;
+	unsigned long *sizep;
+	off_t *disk_sizep;
+	struct object_id *delta_base_oid;
+	struct strbuf *type_name;
+	void **contentp;
+
+	/* Response */
+	enum {
+		OI_CACHED,
+		OI_LOOSE,
+		OI_PACKED,
+		OI_DBCACHED
+	} whence;
+	union {
+		/*
+		 * struct {
+		 * 	... Nothing to expose in this case
+		 * } cached;
+		 * struct {
+		 * 	... Nothing to expose in this case
+		 * } loose;
+		 */
+		struct {
+			struct packed_git *pack;
+			off_t offset;
+			unsigned int is_delta;
+		} packed;
+	} u;
+};
+
+/*
+ * Initializer for a "struct object_info" that wants no items. You may
+ * also memset() the memory to all-zeroes.
+ */
+#define OBJECT_INFO_INIT { 0 }
+
+/* Invoke lookup_replace_object() on the given hash */
+#define OBJECT_INFO_LOOKUP_REPLACE 1
+/* Allow reading from a loose object file of unknown/bogus type */
+#define OBJECT_INFO_ALLOW_UNKNOWN_TYPE 2
+/* Do not retry packed storage after checking packed and loose storage */
+#define OBJECT_INFO_QUICK 8
+/*
+ * Do not attempt to fetch the object if missing (even if fetch_is_missing is
+ * nonzero).
+ */
+#define OBJECT_INFO_SKIP_FETCH_OBJECT 16
+/*
+ * This is meant for bulk prefetching of missing blobs in a partial
+ * clone. Implies OBJECT_INFO_SKIP_FETCH_OBJECT and OBJECT_INFO_QUICK
+ */
+#define OBJECT_INFO_FOR_PREFETCH (OBJECT_INFO_SKIP_FETCH_OBJECT | OBJECT_INFO_QUICK)
+
+/* Die if object corruption (not just an object being missing) was detected. */
+#define OBJECT_INFO_DIE_IF_CORRUPT 32
+
+int oid_object_info_extended(struct repository *r,
+			     const struct object_id *,
+			     struct object_info *, unsigned flags);
+
 /*
  * Open the loose object at path, check its hash, and return the contents,
  * use the "oi" argument to assert things about the object, or e.g. populate its
@@ -381,69 +444,6 @@ static inline void obj_read_unlock(void)
 		pthread_mutex_unlock(&obj_read_mutex);
 }
 
-struct object_info {
-	/* Request */
-	enum object_type *typep;
-	unsigned long *sizep;
-	off_t *disk_sizep;
-	struct object_id *delta_base_oid;
-	struct strbuf *type_name;
-	void **contentp;
-
-	/* Response */
-	enum {
-		OI_CACHED,
-		OI_LOOSE,
-		OI_PACKED,
-		OI_DBCACHED
-	} whence;
-	union {
-		/*
-		 * struct {
-		 * 	... Nothing to expose in this case
-		 * } cached;
-		 * struct {
-		 * 	... Nothing to expose in this case
-		 * } loose;
-		 */
-		struct {
-			struct packed_git *pack;
-			off_t offset;
-			unsigned int is_delta;
-		} packed;
-	} u;
-};
-
-/*
- * Initializer for a "struct object_info" that wants no items. You may
- * also memset() the memory to all-zeroes.
- */
-#define OBJECT_INFO_INIT { 0 }
-
-/* Invoke lookup_replace_object() on the given hash */
-#define OBJECT_INFO_LOOKUP_REPLACE 1
-/* Allow reading from a loose object file of unknown/bogus type */
-#define OBJECT_INFO_ALLOW_UNKNOWN_TYPE 2
-/* Do not retry packed storage after checking packed and loose storage */
-#define OBJECT_INFO_QUICK 8
-/*
- * Do not attempt to fetch the object if missing (even if fetch_is_missing is
- * nonzero).
- */
-#define OBJECT_INFO_SKIP_FETCH_OBJECT 16
-/*
- * This is meant for bulk prefetching of missing blobs in a partial
- * clone. Implies OBJECT_INFO_SKIP_FETCH_OBJECT and OBJECT_INFO_QUICK
- */
-#define OBJECT_INFO_FOR_PREFETCH (OBJECT_INFO_SKIP_FETCH_OBJECT | OBJECT_INFO_QUICK)
-
-/* Die if object corruption (not just an object being missing) was detected. */
-#define OBJECT_INFO_DIE_IF_CORRUPT 32
-
-int oid_object_info_extended(struct repository *r,
-			     const struct object_id *,
-			     struct object_info *, unsigned flags);
-
 /*
  * Iterate over the files in the loose-object parts of the object
  * directory "path", triggering the following callbacks:
diff --git a/protocol-caps.c b/protocol-caps.c
index f9bc2a8b90b..874bc815b4f 100644
--- a/protocol-caps.c
+++ b/protocol-caps.c
@@ -5,6 +5,7 @@
 #include "pkt-line.h"
 #include "strvec.h"
 #include "hash.h"
+#include "hex.h"
 #include "object.h"
 #include "object-store.h"
 #include "string-list.h"
diff --git a/replace-object.h b/replace-object.h
index 3fbc32eb7b7..3c92ae94610 100644
--- a/replace-object.h
+++ b/replace-object.h
@@ -1,6 +1,7 @@
 #ifndef REPLACE_OBJECT_H
 #define REPLACE_OBJECT_H
 
+#include "cache.h"
 #include "oidmap.h"
 #include "repository.h"
 #include "object-store.h"
-- 
gitgitgadget
Previous: Elijah Newren via GitGitGadgetNext: Elijah Newren via GitGitGadget
Message 51 of 60 in “Header cleanups”
  1. 00/16 Header cleanupsElijah Newren via GitGitGadget, Feb 23, 2023
  2. 01/16 treewide: ensure one of the appropriate headers is sourced firstElijah Newren via GitGitGadget, Feb 23, 2023
  3. 02/16 treewide: remove unnecessary git-compat-util.h includes in headersElijah Newren via GitGitGadget, Feb 23, 2023
  4. Derrick StoleeFeb 23, 2023
  5. Elijah NewrenFeb 23, 2023
  6. Junio C HamanoFeb 23, 2023
  7. Elijah NewrenFeb 23, 2023
  8. Junio C HamanoFeb 23, 2023
  9. Elijah NewrenFeb 23, 2023
  10. 03/16 treewide: remove unnecessary cache.h includesElijah Newren via GitGitGadget, Feb 23, 2023
  11. 04/16 treewide: remove unnecessary cache.h includes in source filesElijah Newren via GitGitGadget, Feb 23, 2023
  12. Derrick StoleeFeb 23, 2023
  13. 06/16 hash.h: move some oid-related declarations from cache.hElijah Newren via GitGitGadget, Feb 23, 2023
  14. Derrick StoleeFeb 23, 2023
  15. Elijah NewrenFeb 23, 2023
  16. Jonathan TanFeb 24, 2023
  17. 05/16 alloc.h: move ALLOC_GROW() functions from cache.hElijah Newren via GitGitGadget, Feb 23, 2023
  18. Derrick StoleeFeb 23, 2023
  19. Elijah NewrenFeb 23, 2023
  20. Junio C HamanoFeb 23, 2023
  21. Junio C HamanoFeb 23, 2023
  22. 07/16 hex.h: move some hex-related declarations from cache.hElijah Newren via GitGitGadget, Feb 23, 2023
  23. Derrick StoleeFeb 23, 2023
  24. Elijah NewrenFeb 23, 2023
  25. 09/16 ident.h: move ident-related declarations out of cache.hElijah Newren via GitGitGadget, Feb 23, 2023
  26. 08/16 pretty.h: move has_non_ascii() declaration from commit.hElijah Newren via GitGitGadget, Feb 23, 2023
  27. 10/16 object.h: stop depending on cache.h; make cache.h depend on object.hElijah Newren via GitGitGadget, Feb 23, 2023
  28. Derrick StoleeFeb 23, 2023
  29. Elijah NewrenFeb 23, 2023
  30. 11/16 dir.h: refactor to no longer need to include cache.hElijah Newren via GitGitGadget, Feb 23, 2023
  31. 12/16 object-store.h: move struct object_info from cache.hElijah Newren via GitGitGadget, Feb 23, 2023
  32. Derrick StoleeFeb 23, 2023
  33. Elijah NewrenFeb 23, 2023
  34. 13/16 replace-object.h: move read_replace_refs declaration from cache.h to hereElijah Newren via GitGitGadget, Feb 23, 2023
  35. 15/16 Remove unnecessary includes of builtin.hElijah Newren via GitGitGadget, Feb 23, 2023
  36. 14/16 treewide: replace cache.h with more direct headers, where possibleElijah Newren via GitGitGadget, Feb 23, 2023
  37. 16/16 diff.h: remove unnecessary include of object.hElijah Newren via GitGitGadget, Feb 23, 2023
  38. Derrick StoleeFeb 23, 2023
  39. 00/17 Header cleanupsElijah Newren via GitGitGadget, Feb 24, 2023
  40. 01/17 treewide: ensure one of the appropriate headers is sourced firstElijah Newren via GitGitGadget, Feb 24, 2023
  41. 02/17 treewide: remove unnecessary git-compat-util.h includes in headersElijah Newren via GitGitGadget, Feb 24, 2023
  42. 03/17 treewide: remove unnecessary cache.h includesElijah Newren via GitGitGadget, Feb 24, 2023
  43. 04/17 treewide: remove unnecessary cache.h includes in source filesElijah Newren via GitGitGadget, Feb 24, 2023
  44. 06/17 hash.h: move some oid-related declarations from cache.hElijah Newren via GitGitGadget, Feb 24, 2023
  45. 07/17 hex.h: move some hex-related declarations from cache.hElijah Newren via GitGitGadget, Feb 24, 2023
  46. 09/17 pretty.h: move has_non_ascii() declaration from commit.hElijah Newren via GitGitGadget, Feb 24, 2023
  47. 05/17 alloc.h: move ALLOC_GROW() functions from cache.hElijah Newren via GitGitGadget, Feb 24, 2023
  48. 10/17 ident.h: move ident-related declarations out of cache.hElijah Newren via GitGitGadget, Feb 24, 2023
  49. 11/17 object.h: stop depending on cache.h; make cache.h depend on object.hElijah Newren via GitGitGadget, Feb 24, 2023
  50. 12/17 dir.h: refactor to no longer need to include cache.hElijah Newren via GitGitGadget, Feb 24, 2023
  51. 13/17 object-store.h: move struct object_info from cache.hElijah Newren via GitGitGadget, Feb 24, 2023
  52. 15/17 treewide: replace cache.h with more direct headers, where possibleElijah Newren via GitGitGadget, Feb 24, 2023
  53. 14/17 replace-object.h: move read_replace_refs declaration from cache.h to hereElijah Newren via GitGitGadget, Feb 24, 2023
  54. 16/17 Remove unnecessary includes of builtin.hElijah Newren via GitGitGadget, Feb 24, 2023
  55. 08/17 cache.h: remove dependence on hex.h; make other files include it explicitlyElijah Newren via GitGitGadget, Feb 24, 2023
  56. 17/17 diff.h: remove unnecessary include of object.hElijah Newren via GitGitGadget, Feb 24, 2023
  57. Johannes SchindelinFeb 24, 2023
  58. Jonathan TanFeb 25, 2023
  59. Elijah NewrenFeb 25, 2023
  60. Derrick StoleeFeb 27, 2023

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.