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

[PATCH 3/7] ident: let callers omit name with fmt_indent

From
Jeff King <peff@peff.net>
Date
May 24, 2012, 23:27 UTC
Message-ID
<20120524232723.GC11084@sigill.intra.peff.net>
In-Reply-To
<20120524232515.GA11054@sigill.intra.peff.net>

Most callers want to see all of "$name <$email> $date", but a few want only limited parts, omitting the date, or even the name. We already have IDENT_NO_DATE to handle the date part, but there's not a good option for getting just the email. Callers have to done one of:

  1. Call ident_default_email; this does not respect
     environment variables, nor does it promise to trim
     whitespace or other crud from the result.
  2. Call git_{committer,author}_info; this returns the name
     and email, leaving the caller to parse out the wanted
     bits.

This patch adds IDENT_NO_NAME; it stops short of adding IDENT_NO_EMAIL, as no callers want it (nor are likely to), and it complicates the error handling of the function.

When no name is requested, the angle brackets (<>) around the email address are also omitted.

Signed-off-by: Jeff King <peff@peff.net>
---
I worked this up with IDENT_NO_EMAIL, too, but it really just made the
function harder to read. And I doubt any callers are going to want it.
 cache.h |  1 +
 ident.c | 14 +++++++++-----
 2 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/cache.h b/cache.h
index 0ac0d57..4a76c23 100644
--- a/cache.h
+++ b/cache.h
@@ -889,6 +889,7 @@ enum date_mode parse_date_format(const char *format);
 
 #define IDENT_ERROR_ON_NO_NAME 1
 #define IDENT_NO_DATE	       2
+#define IDENT_NO_NAME	       4
 extern const char *git_author_info(int);
 extern const char *git_committer_info(int);
 extern const char *fmt_ident(const char *name, const char *email, const char *date_str, int);
diff --git a/ident.c b/ident.c
index 59beef2..8b5080d 100644
--- a/ident.c
+++ b/ident.c
@@ -269,13 +269,14 @@ const char *fmt_ident(const char *name, const char *email,
 	char date[50];
 	int error_on_no_name = (flag & IDENT_ERROR_ON_NO_NAME);
 	int want_date = !(flag & IDENT_NO_DATE);
+	int want_name = !(flag & IDENT_NO_NAME);
 
-	if (!name)
+	if (want_name && !name)
 		name = ident_default_name();
 	if (!email)
 		email = ident_default_email();
 
-	if (!*name) {
+	if (want_name && !*name) {
 		struct passwd *pw;
 
 		if (error_on_no_name) {
@@ -297,10 +298,13 @@ const char *fmt_ident(const char *name, const char *email,
 	}
 
 	strbuf_reset(&ident);
-	strbuf_addstr_without_crud(&ident, name);
-	strbuf_addstr(&ident, " <");
+	if (want_name) {
+		strbuf_addstr_without_crud(&ident, name);
+		strbuf_addstr(&ident, " <");
+	}
 	strbuf_addstr_without_crud(&ident, email);
-	strbuf_addch(&ident, '>');
+	if (want_name)
+			strbuf_addch(&ident, '>');
 	if (want_date) {
 		strbuf_addch(&ident, ' ');
 		strbuf_addstr_without_crud(&ident, date);
-- 
1.7.10.1.25.g7031a0f
Previous: Jeff KingNext: Jeff King
Message 8 of 16 in “t4014 broken by 43ae9f47ab: format-patch: use default email for generating message ids”
  1. Michael HaggertyMay 24, 2012
  2. Jeff KingMay 24, 2012
  3. Junio C HamanoMay 24, 2012
  4. Jeff KingMay 24, 2012
  5. Jeff KingMay 24, 2012
  6. 1/7 ident: refactor empty ident error messageJeff King, May 24, 2012
  7. 2/7 ident: refactor NO_DATE flag in fmt_identJeff King, May 24, 2012
  8. 3/7 ident: let callers omit name with fmt_indentJeff King, May 24, 2012
  9. 4/7 format-patch: use GIT_COMMITTER_EMAIL in message idsJeff King, May 24, 2012
  10. 5/7 ident: rename IDENT_ERROR_ON_NO_NAME to IDENT_STRICTJeff King, May 24, 2012
  11. 6/7 ident: reject bogus email addresses with IDENT_STRICTJeff King, May 24, 2012
  12. 7/7 format-patch: do not use bogus email addresses in message idsJeff King, May 24, 2012
  13. Junio C HamanoMay 25, 2012
  14. Jeff KingMay 25, 2012
  15. Michael HaggertyMay 24, 2012
  16. Jeff KingMay 24, 2012

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.