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

[PATCH v5 4/7] builtin/verify-tag: add --format to verify-tag

From
santiago@nyu.edu <santiago@nyu.edu>
Date
Jan 15, 2017, 18:47 UTC
Message-ID
<20170115184705.10376-5-santiago@nyu.edu>
In-Reply-To
<20170115184705.10376-1-santiago@nyu.edu>
From: Santiago Torres <santiago@nyu.edu>

Callers of verify-tag may want to cross-check the tagname from refs/tags with the tagname from the tag object header upon GPG verification. This is to avoid tag refs that point to an incorrect object.

Add a --format parameter to git verify-tag to print the formatted tag object header in addition to or instead of the --verbose or --raw GPG verification output.

Signed-off-by: Santiago Torres <santiago@nyu.edu>
---
 Documentation/git-verify-tag.txt |  2 +-
 builtin/verify-tag.c             | 13 +++++++++++--
 2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/Documentation/git-verify-tag.txt b/Documentation/git-verify-tag.txt
index d590edceb..0b8075dad 100644
--- a/Documentation/git-verify-tag.txt
+++ b/Documentation/git-verify-tag.txt
@@ -8,7 +8,7 @@ git-verify-tag - Check the GPG signature of tags
 SYNOPSIS
 --------
 [verse]
-'git verify-tag' <tag>...
+'git verify-tag' [--format=<format>] <tag>...
 
 DESCRIPTION
 -----------
diff --git a/builtin/verify-tag.c b/builtin/verify-tag.c
index de10198c4..212449f47 100644
--- a/builtin/verify-tag.c
+++ b/builtin/verify-tag.c
@@ -12,12 +12,14 @@
 #include <signal.h>
 #include "parse-options.h"
 #include "gpg-interface.h"
+#include "ref-filter.h"
 
 static const char * const verify_tag_usage[] = {
-		N_("git verify-tag [-v | --verbose] <tag>..."),
+		N_("git verify-tag [-v | --verbose] [--format=<format>] <tag>..."),
 		NULL
 };
 
+
 static int git_verify_tag_config(const char *var, const char *value, void *cb)
 {
 	int status = git_gpg_config(var, value, cb);
@@ -30,9 +32,11 @@ int cmd_verify_tag(int argc, const char **argv, const char *prefix)
 {
 	int i = 1, verbose = 0, had_error = 0;
 	unsigned flags = 0;
+	char *fmt_pretty = NULL;
 	const struct option verify_tag_options[] = {
 		OPT__VERBOSE(&verbose, N_("print tag contents")),
 		OPT_BIT(0, "raw", &flags, N_("print raw gpg status output"), GPG_VERIFY_RAW),
+		OPT_STRING(  0 , "format", &fmt_pretty, N_("format"), N_("format to use for the output")),
 		OPT_END()
 	};
 
@@ -46,12 +50,17 @@ int cmd_verify_tag(int argc, const char **argv, const char *prefix)
 	if (verbose)
 		flags |= GPG_VERIFY_VERBOSE;
 
+	if (fmt_pretty) {
+		verify_ref_format(fmt_pretty);
+		flags |= GPG_VERIFY_QUIET;
+	}
+
 	while (i < argc) {
 		unsigned char sha1[20];
 		const char *name = argv[i++];
 		if (get_sha1(name, sha1))
 			had_error = !!error("tag '%s' not found.", name);
-		else if (verify_and_format_tag(sha1, name, NULL, flags))
+		else if (verify_and_format_tag(sha1, name, fmt_pretty, flags))
 			had_error = 1;
 	}
 	return had_error;
-- 
2.11.0
Previous: Jeff KingNext: Jeff King
Message 20 of 21 in “Add --format to tag verification”
  1. 0/7 Add --format to tag verificationsantiago@nyu.edu, Jan 15, 2017
  2. 1/7 gpg-interface, tag: add GPG_VERIFY_QUIET flagsantiago@nyu.edu, Jan 15, 2017
  3. 2/7 ref-filter: add function to print single ref_array_itemsantiago@nyu.edu, Jan 15, 2017
  4. 7/7 t/t7004-tag: Add --format specifier testssantiago@nyu.edu, Jan 15, 2017
  5. Jeff KingJan 17, 2017
  6. 6/7 t/t7030-verify-tag: Add --format specifier testssantiago@nyu.edu, Jan 15, 2017
  7. 5/7 builtin/tag: add --format argument for tag -vsantiago@nyu.edu, Jan 15, 2017
  8. Jeff KingJan 17, 2017
  9. Santiago TorresJan 17, 2017
  10. Jeff KingJan 17, 2017
  11. Santiago TorresJan 17, 2017
  12. 3/7 tag: add format specifier to gpg_verify_tagsantiago@nyu.edu, Jan 15, 2017
  13. Jeff KingJan 17, 2017
  14. Jeff KingJan 17, 2017
  15. Santiago TorresJan 17, 2017
  16. Jeff KingJan 17, 2017
  17. Jeff KingJan 17, 2017
  18. Santiago TorresJan 17, 2017
  19. Jeff KingJan 17, 2017
  20. 4/7 builtin/verify-tag: add --format to verify-tagsantiago@nyu.edu, Jan 15, 2017
  21. Jeff KingJan 17, 2017

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.