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

[PATCH 04/23] object-store: prepare read_object_file to deal with any repo

From
Stefan Beller <sbeller@google.com>
Date
Nov 14, 2018, 00:12 UTC
Message-ID
<20181114001306.138053-5-sbeller@google.com>
In-Reply-To
<20181114001306.138053-1-sbeller@google.com>

As read_object_file is a widely used function (which is also regularly used in new code in flight between master..pu), changing its signature is painful is hard, as other series in flight rely on the original signature. It would burden the maintainer if we'd just change the signature.

Introduce repo_read_object_file which takes the repository argument, and hide the original read_object_file as a macro behind NO_THE_REPOSITORY_COMPATIBILITY_MACROS, similar to e675765235 (diff.c: remove implicit dependency on the_index, 2018-09-21)

Add a coccinelle patch to convert existing callers, but do not apply the resulting patch to keep the diff of this patch small.

Signed-off-by: Stefan Beller <sbeller@google.com>
---
 contrib/coccinelle/the_repository.pending.cocci | 12 ++++++++++++
 object-store.h                                  | 10 ++++++++--
 2 files changed, 20 insertions(+), 2 deletions(-)
 create mode 100644 contrib/coccinelle/the_repository.pending.cocci
diff --git a/contrib/coccinelle/the_repository.pending.cocci b/contrib/coccinelle/the_repository.pending.cocci
new file mode 100644
index 0000000000..a7ac9e0c46
--- /dev/null
+++ b/contrib/coccinelle/the_repository.pending.cocci
@@ -0,0 +1,12 @@
+// This file is used for the ongoing refactoring of
+// bringing the index or repository struct in all of
+// our code base.
+
+@@
+expression E;
+expression F;
+expression G;
+@@
+- read_object_file(
++ repo_read_object_file(the_repository,
+  E, F, G)
diff --git a/object-store.h b/object-store.h
index 3d98a682b2..00a64622e6 100644
--- a/object-store.h
+++ b/object-store.h
@@ -165,10 +165,16 @@ extern void *read_object_file_extended(struct repository *r,
 				       const struct object_id *oid,
 				       enum object_type *type,
 				       unsigned long *size, int lookup_replace);
-static inline void *read_object_file(const struct object_id *oid, enum object_type *type, unsigned long *size)
+static inline void *repo_read_object_file(struct repository *r,
+					  const struct object_id *oid,
+					  enum object_type *type,
+					  unsigned long *size)
 {
-	return read_object_file_extended(the_repository, oid, type, size, 1);
+	return read_object_file_extended(r, oid, type, size, 1);
 }
+#ifndef NO_THE_REPOSITORY_COMPATIBILITY_MACROS
+#define read_object_file(oid, type, size) repo_read_object_file(the_repository, oid, type, size)
+#endif
 
 /* Read and unpack an object file into memory, write memory to an object file */
 int oid_object_info(struct repository *r, const struct object_id *, unsigned long *);
-- 
2.19.1.1215.g8438c0b245-goog
Previous: Stefan BellerNext: Stefan Beller
Message 5 of 30 in “[PATCHv3 00/23] Bring more repository handles into our code base”
  1. Stefan BellerNov 14, 2018
  2. 01/23 sha1_file: allow read_object to read objects in arbitrary repositoriesStefan Beller, Nov 14, 2018
  3. 02/23 packfile: allow has_packed_and_bad to handle arbitrary repositoriesStefan Beller, Nov 14, 2018
  4. 03/23 object-store: allow read_object_file_extended to read from any repoStefan Beller, Nov 14, 2018
  5. 04/23 object-store: prepare read_object_file to deal with any repoStefan Beller, Nov 14, 2018
  6. 05/23 object-store: prepare has_{sha1, object}_file to handle any repoStefan Beller, Nov 14, 2018
  7. 06/23 object: parse_object to honor its repository argumentStefan Beller, Nov 14, 2018
  8. 07/23 commit: allow parse_commit* to handle any repoStefan Beller, Nov 14, 2018
  9. 08/23 commit-reach.c: allow paint_down_to_common to handle any repoStefan Beller, Nov 14, 2018
  10. 09/23 commit-reach.c: allow merge_bases_many to handle any repoStefan Beller, Nov 14, 2018
  11. 10/23 commit-reach.c: allow remove_redundant to handle any repoStefan Beller, Nov 14, 2018
  12. 11/23 commit-reach.c: allow get_merge_bases_many_0 to handle any repoStefan Beller, Nov 14, 2018
  13. 12/23 commit-reach: prepare get_merge_bases to handle any repoStefan Beller, Nov 14, 2018
  14. 13/23 commit-reach: prepare in_merge_bases[_many] to handle any repoStefan Beller, Nov 14, 2018
  15. 14/23 commit: prepare get_commit_buffer to handle any repoStefan Beller, Nov 14, 2018
  16. 15/23 commit: prepare repo_unuse_commit_buffer to handle any repoStefan Beller, Nov 14, 2018
  17. 16/23 commit: prepare logmsg_reencode to handle arbitrary repositoriesStefan Beller, Nov 14, 2018
  18. 17/23 pretty: prepare format_commit_message to handle arbitrary repositoriesStefan Beller, Nov 14, 2018
  19. 18/23 submodule: use submodule repos for object lookupStefan Beller, Nov 14, 2018
  20. Jonathan TanNov 15, 2018
  21. Stefan BellerNov 15, 2018
  22. Stefan BellerDec 12, 2018
  23. submodule: correct documentation for open_submoduleStefan Beller, Dec 12, 2018
  24. 19/23 submodule: don't add submodule as odb for pushStefan Beller, Nov 14, 2018
  25. 20/23 commit-graph: convert remaining functions to handle any repoStefan Beller, Nov 14, 2018
  26. 21/23 commit: prepare free_commit_buffer and release_commit_memory for any repoStefan Beller, Nov 14, 2018
  27. 22/23 path.h: make REPO_GIT_PATH_FUNC repository agnosticStefan Beller, Nov 14, 2018
  28. 23/23 t/helper/test-repository: celebrate independence from the_repositoryStefan Beller, Nov 14, 2018
  29. Jonathan TanNov 15, 2018
  30. Derrick StoleeNov 16, 2018

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.