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

Re: [PATCH] diagnose: require repository

From
Junio C Hamano <gitster@pobox.com>
Date
Oct 14, 2023, 17:15 UTC
Message-ID
<xmqq5y39unvc.fsf@gitster.g>
In-Reply-To
<20231014135302.13095-1-martin.agren@gmail.com>
Martin Ågren <martin.agren@gmail.com> writes:
Show 14 quoted lines
> When `git diagnose` is run from outside a repo, it begins collecting
> various information before eventually hitting a segmentation fault,
> leaving an incomplete zip file behind.
>
> Switch from the gentle setup to requiring a git directory. Without a git
> repo, there isn't really much to diagnose.
>
> We could possibly do a best-effort collection of information about the
> machine and then give up. That would roughly be today's behavior but
> with a controlled exit rather than a segfault. However, the purpose of
> this tool is largely to create a zip archive. Rather than creating an
> empty zip file or no zip file at all, and having to explain that
> behavior, it seems more helpful to bail out clearly and early with a
> succinct error message.

Without having thought things through, offhand I agree with your "no repository? there is nothing worth tarring up then" assessment.

Because "git bugreport --diag" unconditionally spawns "git diagnose", the former may also want to be extra careful, perhaps like the attached patch.

 builtin/bugreport.c | 5 +++++
 1 file changed, 5 insertions(+)
diff --git c/builtin/bugreport.c w/builtin/bugreport.c
index d2ae5c305d..ac9e05fcf7 100644
--- c/builtin/bugreport.c
+++ w/builtin/bugreport.c
@@ -146,6 +146,11 @@ int cmd_bugreport(int argc, const char **argv, const char *prefix)
 		    report_path.buf);
 	}
 
+	if (!startup_info->have_repository && diagnose != DIAGNOSE_NONE) {
+		warning(_("no repository--diagnostic output disabled"));
+		diagnose = DIAGNOSE_NONE;
+	}
+
 	/* Prepare diagnostics, if requested */
 	if (diagnose != DIAGNOSE_NONE) {
 		struct strbuf zip_path = STRBUF_INIT;
Previous: Kristoffer HaugsbakkNext: Martin Ågren
Message 4 of 8 in “Bug: git diagnose crashes with Segmentation fault outside of git repository”
  1. ks1322 ks1322Oct 14, 2023
  2. diagnose: require repositoryMartin Ågren, Oct 14, 2023
  3. Kristoffer HaugsbakkOct 14, 2023
  4. Junio C HamanoOct 14, 2023
  5. Martin ÅgrenOct 19, 2023
  6. Junio C HamanoOct 19, 2023
  7. Victoria DyeOct 19, 2023
  8. Christian CouderOct 14, 2023

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.