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

[PATCH 17/23] pretty: prepare format_commit_message to handle arbitrary repositories

From
Stefan Beller <sbeller@google.com>
Date
Dec 15, 2018, 00:09 UTC
Message-ID
<20181215000942.46033-18-sbeller@google.com>
In-Reply-To
<20181215000942.46033-1-sbeller@google.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 contrib/coccinelle/the_repository.pending.cocci | 10 ++++++++++
 pretty.c                                        | 15 ++++++++-------
 pretty.h                                        |  7 ++++++-
 3 files changed, 24 insertions(+), 8 deletions(-)
diff --git a/contrib/coccinelle/the_repository.pending.cocci b/contrib/coccinelle/the_repository.pending.cocci
index f5b42cfc62..2ee702ecf7 100644
--- a/contrib/coccinelle/the_repository.pending.cocci
+++ b/contrib/coccinelle/the_repository.pending.cocci
@@ -132,3 +132,13 @@ expression G;
 - logmsg_reencode(
 + repo_logmsg_reencode(the_repository,
   E, F, G);
+
+@@
+expression E;
+expression F;
+expression G;
+expression H;
+@@
+- format_commit_message(
++ repo_format_commit_message(the_repository,
+  E, F, G, H);
diff --git a/pretty.c b/pretty.c
index b359b68750..3240495308 100644
--- a/pretty.c
+++ b/pretty.c
@@ -1508,9 +1508,10 @@ void userformat_find_requirements(const char *fmt, struct userformat_want *w)
 	strbuf_release(&dummy);
 }
 
-void format_commit_message(const struct commit *commit,
-			   const char *format, struct strbuf *sb,
-			   const struct pretty_print_context *pretty_ctx)
+void repo_format_commit_message(struct repository *r,
+				const struct commit *commit,
+				const char *format, struct strbuf *sb,
+				const struct pretty_print_context *pretty_ctx)
 {
 	struct format_commit_context context;
 	const char *output_enc = pretty_ctx->output_encoding;
@@ -1524,9 +1525,9 @@ void format_commit_message(const struct commit *commit,
 	 * convert a commit message to UTF-8 first
 	 * as far as 'format_commit_item' assumes it in UTF-8
 	 */
-	context.message = logmsg_reencode(commit,
-					  &context.commit_encoding,
-					  utf8);
+	context.message = repo_logmsg_reencode(r, commit,
+					       &context.commit_encoding,
+					       utf8);
 
 	strbuf_expand(sb, format, format_commit_item, &context);
 	rewrap_message_tail(sb, &context, 0, 0, 0);
@@ -1550,7 +1551,7 @@ void format_commit_message(const struct commit *commit,
 	}
 
 	free(context.commit_encoding);
-	unuse_commit_buffer(commit, context.message);
+	repo_unuse_commit_buffer(r, commit, context.message);
 }
 
 static void pp_header(struct pretty_print_context *pp,
diff --git a/pretty.h b/pretty.h
index 7359d318a9..e6625269cf 100644
--- a/pretty.h
+++ b/pretty.h
@@ -103,9 +103,14 @@ void pp_remainder(struct pretty_print_context *pp, const char **msg_p,
  * Put the result to "sb".
  * Please use this function for custom formats.
  */
-void format_commit_message(const struct commit *commit,
+void repo_format_commit_message(struct repository *r,
+			const struct commit *commit,
 			const char *format, struct strbuf *sb,
 			const struct pretty_print_context *context);
+#ifndef NO_THE_REPOSITORY_COMPATIBILITY_MACROS
+#define format_commit_message(c, f, s, con) \
+	repo_format_commit_message(the_repository, c, f, s, con)
+#endif
 
 /*
  * Parse given arguments from "arg", check it for correctness and
-- 
2.20.0.405.gbc1bbc6f85-goog
Previous: Stefan BellerNext: Stefan Beller
Message 18 of 26 in “sb/more-repo-in-api”
  1. 00/23 sb/more-repo-in-apiStefan Beller, Dec 15, 2018
  2. 01/23 sha1_file: allow read_object to read objects in arbitrary repositoriesStefan Beller, Dec 15, 2018
  3. 02/23 packfile: allow has_packed_and_bad to handle arbitrary repositoriesStefan Beller, Dec 15, 2018
  4. 03/23 object-store: allow read_object_file_extended to read from any repoStefan Beller, Dec 15, 2018
  5. 04/23 object-store: prepare read_object_file to deal with any repoStefan Beller, Dec 15, 2018
  6. 05/23 object-store: prepare has_{sha1, object}_file to handle any repoStefan Beller, Dec 15, 2018
  7. 06/23 object: parse_object to honor its repository argumentStefan Beller, Dec 15, 2018
  8. 07/23 commit: allow parse_commit* to handle any repoStefan Beller, Dec 15, 2018
  9. 08/23 commit-reach.c: allow paint_down_to_common to handle any repoStefan Beller, Dec 15, 2018
  10. 09/23 commit-reach.c: allow merge_bases_many to handle any repoStefan Beller, Dec 15, 2018
  11. 10/23 commit-reach.c: allow remove_redundant to handle any repoStefan Beller, Dec 15, 2018
  12. 11/23 commit-reach.c: allow get_merge_bases_many_0 to handle any repoStefan Beller, Dec 15, 2018
  13. 12/23 commit-reach: prepare get_merge_bases to handle any repoStefan Beller, Dec 15, 2018
  14. 13/23 commit-reach: prepare in_merge_bases[_many] to handle any repoStefan Beller, Dec 15, 2018
  15. 14/23 commit: prepare get_commit_buffer to handle any repoStefan Beller, Dec 15, 2018
  16. 15/23 commit: prepare repo_unuse_commit_buffer to handle any repoStefan Beller, Dec 15, 2018
  17. 16/23 commit: prepare logmsg_reencode to handle arbitrary repositoriesStefan Beller, Dec 15, 2018
  18. 17/23 pretty: prepare format_commit_message to handle arbitrary repositoriesStefan Beller, Dec 15, 2018
  19. 18/23 submodule: use submodule repos for object lookupStefan Beller, Dec 15, 2018
  20. 19/23 submodule: don't add submodule as odb for pushStefan Beller, Dec 15, 2018
  21. 20/23 commit-graph: convert remaining functions to handle any repoStefan Beller, Dec 15, 2018
  22. 21/23 commit: prepare free_commit_buffer and release_commit_memory for any repoStefan Beller, Dec 15, 2018
  23. 22/23 path.h: make REPO_GIT_PATH_FUNC repository agnosticStefan Beller, Dec 15, 2018
  24. 23/23 t/helper/test-repository: celebrate independence from the_repositoryStefan Beller, Dec 15, 2018
  25. Derrick StoleeDec 27, 2018
  26. Junio C HamanoDec 26, 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.