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

PATCH: Less fragile lookup of gpg key

From
Grant Olson <kgo@grant-olson.net>
Date
May 1, 2010, 15:16 UTC
Message-ID
<4BDC45EB.8090305@grant-olson.net>

When signing a tag, git will attempt to lookup your gpg key if you don't provide the key id. Right now, it's a little fragile. My gpg key uid is "Grant T. Olson (Personal Email) <kgo@grant-olson.net>". My git user info is "Grant T. Olson <kgo@grant-olson.net>". Things don't match because git doesn't have the comment.

However, if I lookup just by email, things work perfectly.

I think doing this would make life much easier for new users, and in the case that someone has an OpenPGP key without email (e.g. Ubuntu Master Signing Key) we can safely assume they're an expert and will either add the key id to their configuration or use -u instead of -s.

Here's a patch that will try to lookup the user by email only if no signing key is provided. If there is no email, it will still fall back to the default generated by git.

From d0fcf1340495045813758f910e8f4d745e28546b Mon Sep 17 00:00:00 2001
From: Grant Olson <kgo@grant-olson.net>
Date: Sat, 1 May 2010 11:02:18 -0400
Subject: [PATCH] Lookup gpg key by email
---
 builtin/tag.c |    2 +-
 ident.c       |    9 +++++++++
 2 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/builtin/tag.c b/builtin/tag.c
index d311491..4eb3cc5 100644
--- a/builtin/tag.c
+++ b/builtin/tag.c
@@ -165,7 +165,7 @@ static int do_sign(struct strbuf *buffer)
 	int i, j;

 	if (!*signingkey) {
-		if (strlcpy(signingkey, git_committer_info(IDENT_ERROR_ON_NO_NAME),
+		if (strlcpy(signingkey, git_committer_email(),
 				sizeof(signingkey)) > sizeof(signingkey) - 1)
 			return error("committer info too long.");
 		bracket = strchr(signingkey, '>');
diff --git a/ident.c b/ident.c
index 9e24388..0e8b78a 100644
--- a/ident.c
+++ b/ident.c
@@ -260,6 +260,15 @@ const char *git_committer_info(int flag)
 			 flag);
 }

+const char *git_committer_email(void)
+{
+	const char *email = getenv("GIT_COMMITTER_EMAIL");
+	if(!email)
+		email = git_default_email;
+
+	return email;
+}
+
 int user_ident_sufficiently_given(void)
 {
 #ifndef WINDOWS
-- 
1.7.0.4
Next: A Large Angry SCM
Message 1 of 13 in “PATCH: Less fragile lookup of gpg key”
  1. Grant OlsonMay 1, 2010
  2. A Large Angry SCMMay 1, 2010
  3. Junio C HamanoMay 1, 2010
  4. Grant OlsonMay 1, 2010
  5. Junio C HamanoMay 1, 2010
  6. Grant OlsonMay 2, 2010
  7. Greg A. WoodsMay 3, 2010
  8. Grant OlsonMay 3, 2010
  9. Theodore TsoMay 3, 2010
  10. Greg A. WoodsMay 3, 2010
  11. tytso@mit.eduMay 4, 2010
  12. Grant OlsonMay 4, 2010
  13. Andreas EricssonMay 4, 2010

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.