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

Re: [PATCH v5 4/6] builtin/verify-tag: replace name argument with sha1

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 6, 2016, 16:27 UTC
Message-ID
<xmqqa8l6zoqc.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<1459872449-7537-5-git-send-email-santiago@nyu.edu>
santiago@nyu.edu writes:
Show 40 quoted lines
> From: Santiago Torres <santiago@nyu.edu>
>
> This change is meant to prepare verify_tag for libification. Many
> existing modules/commands already do the refname to sha1 resolution, so
> should avoid resolving the refname twice. To avoid breaking
> builtin/verify-tag, we move the refname resolution outside of the
> verify_tag() call.
>
> Signed-off-by: Santiago Torres <santiago@nyu.edu>
> ---
>  builtin/verify-tag.c | 25 ++++++++++++++++---------
>  1 file changed, 16 insertions(+), 9 deletions(-)
>
> diff --git a/builtin/verify-tag.c b/builtin/verify-tag.c
> index 1ca9a05..7a7c376 100644
> --- a/builtin/verify-tag.c
> +++ b/builtin/verify-tag.c
> @@ -42,25 +42,23 @@ static int run_gpg_verify(const char *buf, unsigned long size, unsigned flags)
>  	return ret;
>  }
>  
> -static int verify_tag(const char *name, unsigned flags)
> +static int verify_tag(const unsigned char *sha1, unsigned flags)
>  {
>  	enum object_type type;
> -	unsigned char sha1[20];
>  	char *buf;
> +	char *hex_sha1;
>  	unsigned long size;
>  	int ret;
>  
> -	if (get_sha1(name, sha1))
> -		return error("tag '%s' not found.", name);
> -
> +	hex_sha1 = sha1_to_hex(sha1);
>  	type = sha1_object_info(sha1, NULL);
>  	if (type != OBJ_TAG)
>  		return error("%s: cannot verify a non-tag object of type %s.",
> -				name, typename(type));
> +				hex_sha1, typename(type));
So, if I said
    $ git verify-tag master

the code used to take "master" from argv[], fed it to verify_tag() as parameter 'name', turned it to the object name of the commit, noticed that it is not a tag, and complained that "master: cannot verify".

With this rewrite, the same invocation would cause "master" to be turned into the object name, which is passed to verify_tag() and the complaint is an overlong

    76bece327f490cb344b95ae8f869cbeb89a4d20b: cannot verify a non-tag object of type commit
That does not sound like a good change at all.

If you want to support a future caller of a libified version of verify_tag() that has a raw object name but not the original name, I'd suggest to make this function keep parameter 'name' while adding the new parameter 'sha1'. Then, the error reporting may become:

	return error("%s: cannot verify a non-tag object of type '%s'",
		     name ? name : sha1_to_hex(sha1), typename(type));
and the output would still be useful.  Further improvements may be
 - rename 'name' to 'report_name' to clarify that the parameter is
   only used for reporting, and that the tag object to verify is
   always identified by the new 'sha1' parameter.
 - use find_unique_abbrev() to shorten the fallback name displayed
   in the error message.
Previous: Eric SunshineNext: Santiago Torres
Message 15 of 28 in “tag: move PGP verification code to tag.c”
  1. 0/6 tag: move PGP verification code to tag.csantiago@nyu.edu, Apr 5, 2016
  2. 1/6 builtin/verify-tag.c: Ignore SIGPIPE on gpg-interfacesantiago@nyu.edu, Apr 5, 2016
  3. Junio C HamanoApr 6, 2016
  4. 2/6 t7030-verify-tag: Adds validation for multiple tagssantiago@nyu.edu, Apr 5, 2016
  5. Eric SunshineApr 6, 2016
  6. Santiago TorresApr 17, 2016
  7. Eric SunshineApr 17, 2016
  8. Santiago TorresApr 17, 2016
  9. Eric SunshineApr 17, 2016
  10. Junio C HamanoApr 6, 2016
  11. 3/6 builtin/verify-tag: change variable name for readabilitysantiago@nyu.edu, Apr 5, 2016
  12. Junio C HamanoApr 6, 2016
  13. 4/6 builtin/verify-tag: replace name argument with sha1santiago@nyu.edu, Apr 5, 2016
  14. Eric SunshineApr 6, 2016
  15. Junio C HamanoApr 6, 2016
  16. Santiago TorresApr 7, 2016
  17. 5/6 builtin/verify-tag: move verification code to tag.csantiago@nyu.edu, Apr 5, 2016
  18. Junio C HamanoApr 6, 2016
  19. 6/6 tag: use gpg_verify_function in tag -v callsantiago@nyu.edu, Apr 5, 2016
  20. Eric SunshineApr 6, 2016
  21. Santiago TorresApr 5, 2016
  22. Eric SunshineApr 6, 2016
  23. Santiago TorresApr 7, 2016
  24. Eric SunshineApr 7, 2016
  25. Santiago TorresApr 17, 2016
  26. Eric SunshineApr 17, 2016
  27. Junio C HamanoApr 6, 2016
  28. Santiago TorresApr 7, 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.