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

[PATCH v2 5/5] builtin/tag: add --format argument for tag -v

From
santiago@nyu.edu <santiago@nyu.edu>
Date
Sep 26, 2016, 22:42 UTC
Message-ID
<20160926224233.32702-6-santiago@nyu.edu>
In-Reply-To
<20160926224233.32702-1-santiago@nyu.edu>
From: Lukas P <luk.puehringer@gmail.com>

Adding --format to git tag -v mutes the default output of the GPG verification and instead prints the formatted tag object. This allows callers to cross-check the tagname from refs/tags with the tagname from the tag object header upon GPG verification.

Caveat: The change adds a format specifier argument to the
(*each_tag_name_fn) function pointer, i.e. delete_tag now receives this
too, although it does not need it.
Signed-off-by: Lukas P <luk.puehringer@gmail.com>
---
 builtin/tag.c | 30 ++++++++++++++++++++----------
 1 file changed, 20 insertions(+), 10 deletions(-)
diff --git a/builtin/tag.c b/builtin/tag.c
index 14f3b48..f53227e 100644
--- a/builtin/tag.c
+++ b/builtin/tag.c
@@ -24,7 +24,7 @@ static const char * const git_tag_usage[] = {
 	N_("git tag -d <tagname>..."),
 	N_("git tag -l [-n[<num>]] [--contains <commit>] [--points-at <object>]"
 		"\n\t\t[--format=<format>] [--[no-]merged [<commit>]] [<pattern>...]"),
-	N_("git tag -v <tagname>..."),
+	N_("git tag -v [--format=<format>] <tagname>..."),
 	NULL
 };
 
@@ -66,9 +66,10 @@ static int list_tags(struct ref_filter *filter, struct ref_sorting *sorting, con
 }
 
 typedef int (*each_tag_name_fn)(const char *name, const char *ref,
-				const unsigned char *sha1);
+				const unsigned char *sha1, const char *fmt_pretty);
 
-static int for_each_tag_name(const char **argv, each_tag_name_fn fn)
+static int for_each_tag_name(const char **argv, each_tag_name_fn fn,
+		const char *fmt_pretty)
 {
 	const char **p;
 	char ref[PATH_MAX];
@@ -87,14 +88,14 @@ static int for_each_tag_name(const char **argv, each_tag_name_fn fn)
 			had_error = 1;
 			continue;
 		}
-		if (fn(*p, ref, sha1))
+		if (fn(*p, ref, sha1, fmt_pretty))
 			had_error = 1;
 	}
 	return had_error;
 }
 
 static int delete_tag(const char *name, const char *ref,
-				const unsigned char *sha1)
+				const unsigned char *sha1, const char *fmt_pretty)
 {
 	if (delete_ref(ref, sha1, 0))
 		return 1;
@@ -103,9 +104,15 @@ static int delete_tag(const char *name, const char *ref,
 }
 
 static int verify_tag(const char *name, const char *ref,
-				const unsigned char *sha1)
+				const unsigned char *sha1, const char *fmt_pretty)
 {
-	return verify_and_format_tag(sha1, name, NULL, GPG_VERIFY_VERBOSE);
+	int flags;
+	flags = GPG_VERIFY_VERBOSE;
+
+	if (fmt_pretty)
+		flags = GPG_VERIFY_QUIET;
+
+	return verify_and_format_tag(sha1, name, fmt_pretty, flags);
 }
 
 static int do_sign(struct strbuf *buffer)
@@ -424,9 +431,12 @@ int cmd_tag(int argc, const char **argv, const char *prefix)
 	if (filter.merge_commit)
 		die(_("--merged and --no-merged option are only allowed with -l"));
 	if (cmdmode == 'd')
-		return for_each_tag_name(argv, delete_tag);
-	if (cmdmode == 'v')
-		return for_each_tag_name(argv, verify_tag);
+		return for_each_tag_name(argv, delete_tag, NULL);
+	if (cmdmode == 'v') {
+		if (format)
+			verify_ref_format(format);
+		return for_each_tag_name(argv, verify_tag, format);
+	}
 
 	if (msg.given || msgfile) {
 		if (msg.given && msgfile)
-- 
2.10.0
Previous: santiago@nyu.eduNext: Junio C Hamano
Message 12 of 17 in “Add --format to tag verification”
  1. 0/5 Add --format to tag verificationsantiago@nyu.edu, Sep 26, 2016
  2. 1/5 gpg-interface, tag: add GPG_VERIFY_QUIET flagsantiago@nyu.edu, Sep 26, 2016
  3. Junio C HamanoSep 27, 2016
  4. Lukas PühringerSep 27, 2016
  5. Junio C HamanoSep 27, 2016
  6. Lukas PühringerSep 27, 2016
  7. Stefan BellerSep 27, 2016
  8. Lukas PühringerSep 27, 2016
  9. 2/5 ref-filter: add function to print single ref_array_itemsantiago@nyu.edu, Sep 26, 2016
  10. Junio C HamanoSep 27, 2016
  11. 3/5 tag: add format specifier to gpg_verify_tagsantiago@nyu.edu, Sep 26, 2016
  12. 5/5 builtin/tag: add --format argument for tag -vsantiago@nyu.edu, Sep 26, 2016
  13. Junio C HamanoSep 27, 2016
  14. 4/5 builtin/verify-tag: add --format to verify-tagsantiago@nyu.edu, Sep 26, 2016
  15. Philip OakleySep 27, 2016
  16. Santiago TorresSep 27, 2016
  17. Junio C HamanoSep 27, 2016

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.