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

Re: [PATCH 2/4] rev-parse: suppress duplicate log limit exceeded message.

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 22, 2010, 21:20 UTC
Message-ID
<7vy6by2vlf.fsf@alter.siamese.dyndns.org>
In-Reply-To
<1282355022-17795-3-git-send-email-jon.seymour@gmail.com>
Jon Seymour <jon.seymour@gmail.com> writes:
Show 6 quoted lines
> With this change, git rev-parse master@{99999} reports:
>
>   master@{99999}
>   error: Log for 'master' only has 166 entries.
>   fatal: ambiguous argument 'master@{99999}': unknown revision or path not in the working tree.
>   Use '--' to separate paths from revisions

If we are going to say "fatal:" and die at the end, I think we probably do not want to say a separate "error" message. Instead of adding a boolean parameter "fail silently or warn?", it may be better to make it a pointer to a strbuf and have it filled with error details (or a machine readable struct and make it responsibility of the caller to generate a message).

Then die_verify_filename can become, e.g.:
static void NORETURN die_verify_filename(const char *prefix, const char *arg)
{
	unsigned char sha1[20];
	unsigned mode;
        struct strbuf e;
        /* learn in what way is it bad? */
	get_sha1_with_mode_1(arg, sha1, &mode, &e, prefix);
	/* ... or fall back the most general message. */
	die("ambiguous argument '%s': unknown revision or path not in the working tree.\n"
	    "%s"
            "Use '--' to separate paths from revisions", arg, e.buf);
}

and we can later reuse the same mechanism to cover other kind of errors, not just "the log does not have that many entries" error. With your "gently" approach it may not be easy to do that without adding more parameters to all the functions in the codepath, no?

I also wonder if this can simply become part of "struct object_context", which is to pass extra information in addition to the SHA-1 (which the original API returned) back to the caller.

Previous: Jon SeymourNext: Jon Seymour
Message 8 of 20 in “RFD: should git rev-parse exit with non-zero status if ref@{n} is not valid?”
  1. Jon SeymourAug 18, 2010
  2. Jon SeymourAug 18, 2010
  3. Junio C HamanoAug 18, 2010
  4. Jon SeymourAug 18, 2010
  5. 0/4 rev-parse: improve reporting of invalid log referencesJon Seymour, Aug 21, 2010
  6. 1/4 rev-parse: exit with non-zero status if ref@{n} is not valid.Jon Seymour, Aug 21, 2010
  7. 2/4 rev-parse: suppress duplicate log limit exceeded message.Jon Seymour, Aug 21, 2010
  8. Junio C HamanoAug 22, 2010
  9. Jon SeymourAug 23, 2010
  10. Junio C HamanoAug 23, 2010
  11. 0/2 rev-parse: strengthen validation of ref@{n} referencesJon Seymour, Aug 23, 2010
  12. 1/2 rev-parse: exit with non-zero status if ref@{n} is not valid.Jon Seymour, Aug 23, 2010
  13. Jonathan NiederAug 24, 2010
  14. 0/3 rev-parse: strengthen validation of ref@{n} referencesJon Seymour, Aug 24, 2010
  15. 1/3 rev-parse: exit with non-zero status if ref@{n} is not valid.Jon Seymour, Aug 24, 2010
  16. 2/3 sha1_name.c: use warning in preference to fprintf(stderrJon Seymour, Aug 24, 2010
  17. 3/3 rev-parse: tests git rev-parse --verify master@{n}, for various nJon Seymour, Aug 24, 2010
  18. 2/2 rev-parse: tests git rev-parse --verify master@{n}, for various nJon Seymour, Aug 23, 2010
  19. 3/4 rev-parse: introduce get_sha1_gentlyJon Seymour, Aug 21, 2010
  20. 4/4 rev-parse: tests that git rev-parse --verify master@{n}Jon Seymour, Aug 21, 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.