Re: [PATCH v3 1/9] bugreport: add tool to generate debugging info
On 2019.10.24 19:51, Emily Shaffer wrote:
Show 58 quoted lines
> Teach Git how to prompt the user for a good bug report: reproduction
> steps, expected behavior, and actual behavior. Later, Git can learn how
> to collect some diagnostic information from the repository.
>
> If users can send us a well-written bug report which contains diagnostic
> information we would otherwise need to ask the user for, we can reduce
> the number of question-and-answer round trips between the reporter and
> the Git contributor.
>
> Users may also wish to send a report like this to their local "Git
> expert" if they have put their repository into a state they are confused
> by.
>
> Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
> ---
> Makefile | 1 +
> builtin.h | 1 +
> builtin/bugreport.c | 50 +++++++++++++++++++++++++++++++++++++++++++++
> git.c | 1 +
> 4 files changed, 53 insertions(+)
> create mode 100644 builtin/bugreport.c
>
> diff --git a/Makefile b/Makefile
> index 58b92af54b..132e2a52da 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1039,6 +1039,7 @@ BUILTIN_OBJS += builtin/archive.o
> BUILTIN_OBJS += builtin/bisect--helper.o
> BUILTIN_OBJS += builtin/blame.o
> BUILTIN_OBJS += builtin/branch.o
> +BUILTIN_OBJS += builtin/bugreport.o
> BUILTIN_OBJS += builtin/bundle.o
> BUILTIN_OBJS += builtin/cat-file.o
> BUILTIN_OBJS += builtin/check-attr.o
> diff --git a/builtin.h b/builtin.h
> index 5cf5df69f7..c6373d3289 100644
> --- a/builtin.h
> +++ b/builtin.h
> @@ -135,6 +135,7 @@ int cmd_archive(int argc, const char **argv, const char *prefix);
> int cmd_bisect__helper(int argc, const char **argv, const char *prefix);
> int cmd_blame(int argc, const char **argv, const char *prefix);
> int cmd_branch(int argc, const char **argv, const char *prefix);
> +int cmd_bugreport(int argc, const char **argv, const char *prefix);
> int cmd_bundle(int argc, const char **argv, const char *prefix);
> int cmd_cat_file(int argc, const char **argv, const char *prefix);
> int cmd_checkout(int argc, const char **argv, const char *prefix);
> diff --git a/builtin/bugreport.c b/builtin/bugreport.c
> new file mode 100644
> index 0000000000..2ef16440a0
> --- /dev/null
> +++ b/builtin/bugreport.c
> @@ -0,0 +1,50 @@
> +#include "builtin.h"
> +#include "stdio.h"
> +#include "strbuf.h"
> +#include "time.h"
> +
> +int get_bug_template(struct strbuf *template)
Compilation fails here for me with:
builtin/bugreport.c:6:5: error: no previous prototype
for ‘get_bug_template’ [-Werror=missing-prototypes]Can you make this function static?
Show 58 quoted lines
> +{
> + const char template_text[] =
> +"Thank you for filling out a Git bug report!\n"
> +"Please answer the following questions to help us understand your issue.\n"
> +"\n"
> +"What did you do before the bug happened? (Steps to reproduce your issue)\n"
> +"\n"
> +"What did you expect to happen? (Expected behavior)\n"
> +"\n"
> +"What happened instead? (Actual behavior)\n"
> +"\n"
> +"What's different between what you expected and what actually happened?\n"
> +"\n"
> +"Anything else you want to add:\n"
> +"\n"
> +"Please review the rest of the bug report below.\n"
> +"You can delete any lines you don't wish to send.\n";
> +
> + strbuf_reset(template);
> + strbuf_add(template, template_text, strlen(template_text));
> + return 0;
> +}
> +
> +int cmd_bugreport(int argc, const char **argv, const char *prefix)
> +{
> + struct strbuf buffer = STRBUF_INIT;
> + struct strbuf report_path = STRBUF_INIT;
> + FILE *report;
> + time_t now = time(NULL);
> +
> + strbuf_addstr(&report_path, "git-bugreport-");
> + strbuf_addftime(&report_path, "%F", gmtime(&now), 0, 0);
> + strbuf_addstr(&report_path, ".txt");
> +
> + report = fopen_for_writing(report_path.buf);
> +
> + get_bug_template(&buffer);
> + strbuf_write(&buffer, report);
> +
> + fclose(report);
> +
> + launch_editor(report_path.buf, NULL, NULL);
> + return 0;
> +}
> diff --git a/git.c b/git.c
> index ce6ab0ece2..2d6a64f019 100644
> --- a/git.c
> +++ b/git.c
> @@ -473,6 +473,7 @@ static struct cmd_struct commands[] = {
> { "bisect--helper", cmd_bisect__helper, RUN_SETUP },
> { "blame", cmd_blame, RUN_SETUP },
> { "branch", cmd_branch, RUN_SETUP | DELAY_PAGER_CONFIG },
> + { "bugreport", cmd_bugreport, RUN_SETUP },
> { "bundle", cmd_bundle, RUN_SETUP_GENTLY | NO_PARSEOPT },
> { "cat-file", cmd_cat_file, RUN_SETUP },
> { "check-attr", cmd_check_attr, RUN_SETUP },
> --
> 2.24.0.rc0.303.g954a862665-googCan you also add /git-bugreport to .gitignore?