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

Re: [PATCH v4 02/15] help: move list_config_help to builtin/help

From
Junio C Hamano <gitster@pobox.com>
Date
Dec 13, 2019, 20:51 UTC
Message-ID
<xmqqv9qkhrtd.fsf@gitster-ct.c.googlers.com>
In-Reply-To
<20191213004312.169753-3-emilyshaffer@google.com>
Emily Shaffer <emilyshaffer@google.com> writes:
Show 16 quoted lines
> Starting in 3ac68a93fd2, help.o began to depend on builtin/branch.o,
> builtin/clean.o, and builtin/config.o. This meant that help.o was
> unusable outside of the context of the main Git executable.
>
> To make help.o usable by other commands again, move list_config_help()
> into builtin/help.c (where it makes sense to assume other builtin libraries
> are present).
>
> When command-list.h is included but a member is not used, we start to
> hear a compiler warning. Since the config list is generated in a fairly
> different way than the command list, and since commands and config
> options are semantically different, move the config list into its own
> header and move the generator into its own script and build rule.
>
> Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
> ---

OK. Looks like a clean-up that is very worthy even without the remainder of the topic.

Thanks.
Show 360 quoted lines
>  .gitignore             |  1 +
>  Makefile               | 16 ++++++--
>  builtin/help.c         | 86 ++++++++++++++++++++++++++++++++++++++++++
>  generate-cmdlist.sh    | 19 ----------
>  generate-configlist.sh | 24 ++++++++++++
>  help.c                 | 85 -----------------------------------------
>  help.h                 |  1 -
>  7 files changed, 123 insertions(+), 109 deletions(-)
>  create mode 100755 generate-configlist.sh
>
> diff --git a/.gitignore b/.gitignore
> index 055a84c4a8..5dde2cc4c8 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -189,6 +189,7 @@
>  /gitweb/gitweb.cgi
>  /gitweb/static/gitweb.js
>  /gitweb/static/gitweb.min.*
> +/config-list.h
>  /command-list.h
>  *.tar.gz
>  *.dsc
> diff --git a/Makefile b/Makefile
> index 9dff91436e..c49f55a521 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -815,6 +815,7 @@ LIB_FILE = libgit.a
>  XDIFF_LIB = xdiff/lib.a
>  VCSSVN_LIB = vcs-svn/lib.a
>  
> +GENERATED_H += config-list.h
>  GENERATED_H += command-list.h
>  
>  LIB_H := $(sort $(patsubst ./%,%,$(shell git ls-files '*.h' ':!t/' ':!Documentation/' 2>/dev/null || \
> @@ -2127,7 +2128,7 @@ git$X: git.o GIT-LDFLAGS $(BUILTIN_OBJS) $(GITLIBS)
>  
>  help.sp help.s help.o: command-list.h
>  
> -builtin/help.sp builtin/help.s builtin/help.o: command-list.h GIT-PREFIX
> +builtin/help.sp builtin/help.s builtin/help.o: config-list.h GIT-PREFIX
>  builtin/help.sp builtin/help.s builtin/help.o: EXTRA_CPPFLAGS = \
>  	'-DGIT_HTML_PATH="$(htmldir_relative_SQ)"' \
>  	'-DGIT_MAN_PATH="$(mandir_relative_SQ)"' \
> @@ -2147,6 +2148,12 @@ $(BUILT_INS): git$X
>  	ln -s $< $@ 2>/dev/null || \
>  	cp $< $@
>  
> +config-list.h: generate-configlist.sh
> +
> +config-list.h:
> +	$(QUIET_GEN)$(SHELL_PATH) ./generate-configlist.sh \
> +		>$@+ && mv $@+ $@
> +
>  command-list.h: generate-cmdlist.sh command-list.txt
>  
>  command-list.h: $(wildcard Documentation/git*.txt) Documentation/*config.txt Documentation/config/*.txt
> @@ -2784,7 +2791,7 @@ $(SP_OBJ): %.sp: %.c GIT-CFLAGS FORCE
>  .PHONY: sparse $(SP_OBJ)
>  sparse: $(SP_OBJ)
>  
> -GEN_HDRS := command-list.h unicode-width.h
> +GEN_HDRS := config-list.h command-list.h unicode-width.h
>  EXCEPT_HDRS := $(GEN_HDRS) compat/% xdiff/%
>  ifndef GCRYPT_SHA256
>  	EXCEPT_HDRS += sha256/gcrypt.h
> @@ -2807,7 +2814,7 @@ hdr-check: $(HCO)
>  style:
>  	git clang-format --style file --diff --extensions c,h
>  
> -check: command-list.h
> +check: config-list.h command-list.h
>  	@if sparse; \
>  	then \
>  		echo >&2 "Use 'make sparse' instead"; \
> @@ -3110,7 +3117,8 @@ clean: profile-clean coverage-clean cocciclean
>  	$(RM) $(HCC)
>  	$(RM) -r bin-wrappers $(dep_dirs)
>  	$(RM) -r po/build/
> -	$(RM) *.pyc *.pyo */*.pyc */*.pyo command-list.h $(ETAGS_TARGET) tags cscope*
> +	$(RM) *.pyc *.pyo */*.pyc */*.pyo config-list.h command-list.h
> +	$(RM) $(ETAGS_TARGET) tags cscope*
>  	$(RM) -r $(GIT_TARNAME) .doc-tmp-dir
>  	$(RM) $(GIT_TARNAME).tar.gz git-core_$(GIT_VERSION)-*.tar.gz
>  	$(RM) $(htmldocs).tar.gz $(manpages).tar.gz
> diff --git a/builtin/help.c b/builtin/help.c
> index e5590d7787..1c5f2b9255 100644
> --- a/builtin/help.c
> +++ b/builtin/help.c
> @@ -8,6 +8,7 @@
>  #include "parse-options.h"
>  #include "run-command.h"
>  #include "column.h"
> +#include "config-list.h"
>  #include "help.h"
>  #include "alias.h"
>  
> @@ -62,6 +63,91 @@ static const char * const builtin_help_usage[] = {
>  	NULL
>  };
>  
> +struct slot_expansion {
> +	const char *prefix;
> +	const char *placeholder;
> +	void (*fn)(struct string_list *list, const char *prefix);
> +	int found;
> +};
> +
> +static void list_config_help(int for_human)
> +{
> +	struct slot_expansion slot_expansions[] = {
> +		{ "advice", "*", list_config_advices },
> +		{ "color.branch", "<slot>", list_config_color_branch_slots },
> +		{ "color.decorate", "<slot>", list_config_color_decorate_slots },
> +		{ "color.diff", "<slot>", list_config_color_diff_slots },
> +		{ "color.grep", "<slot>", list_config_color_grep_slots },
> +		{ "color.interactive", "<slot>", list_config_color_interactive_slots },
> +		{ "color.remote", "<slot>", list_config_color_sideband_slots },
> +		{ "color.status", "<slot>", list_config_color_status_slots },
> +		{ "fsck", "<msg-id>", list_config_fsck_msg_ids },
> +		{ "receive.fsck", "<msg-id>", list_config_fsck_msg_ids },
> +		{ NULL, NULL, NULL }
> +	};
> +	const char **p;
> +	struct slot_expansion *e;
> +	struct string_list keys = STRING_LIST_INIT_DUP;
> +	int i;
> +
> +	for (p = config_name_list; *p; p++) {
> +		const char *var = *p;
> +		struct strbuf sb = STRBUF_INIT;
> +
> +		for (e = slot_expansions; e->prefix; e++) {
> +
> +			strbuf_reset(&sb);
> +			strbuf_addf(&sb, "%s.%s", e->prefix, e->placeholder);
> +			if (!strcasecmp(var, sb.buf)) {
> +				e->fn(&keys, e->prefix);
> +				e->found++;
> +				break;
> +			}
> +		}
> +		strbuf_release(&sb);
> +		if (!e->prefix)
> +			string_list_append(&keys, var);
> +	}
> +
> +	for (e = slot_expansions; e->prefix; e++)
> +		if (!e->found)
> +			BUG("slot_expansion %s.%s is not used",
> +			    e->prefix, e->placeholder);
> +
> +	string_list_sort(&keys);
> +	for (i = 0; i < keys.nr; i++) {
> +		const char *var = keys.items[i].string;
> +		const char *wildcard, *tag, *cut;
> +
> +		if (for_human) {
> +			puts(var);
> +			continue;
> +		}
> +
> +		wildcard = strchr(var, '*');
> +		tag = strchr(var, '<');
> +
> +		if (!wildcard && !tag) {
> +			puts(var);
> +			continue;
> +		}
> +
> +		if (wildcard && !tag)
> +			cut = wildcard;
> +		else if (!wildcard && tag)
> +			cut = tag;
> +		else
> +			cut = wildcard < tag ? wildcard : tag;
> +
> +		/*
> +		 * We may produce duplicates, but that's up to
> +		 * git-completion.bash to handle
> +		 */
> +		printf("%.*s\n", (int)(cut - var), var);
> +	}
> +	string_list_clear(&keys, 0);
> +}
> +
>  static enum help_format parse_help_format(const char *format)
>  {
>  	if (!strcmp(format, "man"))
> diff --git a/generate-cmdlist.sh b/generate-cmdlist.sh
> index 71158f7d8b..45fecf8bdf 100755
> --- a/generate-cmdlist.sh
> +++ b/generate-cmdlist.sh
> @@ -76,23 +76,6 @@ print_command_list () {
>  	echo "};"
>  }
>  
> -print_config_list () {
> -	cat <<EOF
> -static const char *config_name_list[] = {
> -EOF
> -	grep -h '^[a-zA-Z].*\..*::$' Documentation/*config.txt Documentation/config/*.txt |
> -	sed '/deprecated/d; s/::$//; s/,  */\n/g' |
> -	sort |
> -	while read line
> -	do
> -		echo "	\"$line\","
> -	done
> -	cat <<EOF
> -	NULL,
> -};
> -EOF
> -}
> -
>  exclude_programs=
>  while test "--exclude-program" = "$1"
>  do
> @@ -113,5 +96,3 @@ echo
>  define_category_names "$1"
>  echo
>  print_command_list "$1"
> -echo
> -print_config_list
> diff --git a/generate-configlist.sh b/generate-configlist.sh
> new file mode 100755
> index 0000000000..eca6a00c30
> --- /dev/null
> +++ b/generate-configlist.sh
> @@ -0,0 +1,24 @@
> +#!/bin/sh
> +
> +echo "/* Automatically generated by generate-configlist.sh */"
> +echo
> +
> +print_config_list () {
> +	cat <<EOF
> +static const char *config_name_list[] = {
> +EOF
> +	grep -h '^[a-zA-Z].*\..*::$' Documentation/*config.txt Documentation/config/*.txt |
> +	sed '/deprecated/d; s/::$//; s/,  */\n/g' |
> +	sort |
> +	while read line
> +	do
> +		echo "	\"$line\","
> +	done
> +	cat <<EOF
> +	NULL,
> +};
> +EOF
> +}
> +
> +echo
> +print_config_list
> diff --git a/help.c b/help.c
> index cf67624a94..a21487db77 100644
> --- a/help.c
> +++ b/help.c
> @@ -407,91 +407,6 @@ void list_common_guides_help(void)
>  	putchar('\n');
>  }
>  
> -struct slot_expansion {
> -	const char *prefix;
> -	const char *placeholder;
> -	void (*fn)(struct string_list *list, const char *prefix);
> -	int found;
> -};
> -
> -void list_config_help(int for_human)
> -{
> -	struct slot_expansion slot_expansions[] = {
> -		{ "advice", "*", list_config_advices },
> -		{ "color.branch", "<slot>", list_config_color_branch_slots },
> -		{ "color.decorate", "<slot>", list_config_color_decorate_slots },
> -		{ "color.diff", "<slot>", list_config_color_diff_slots },
> -		{ "color.grep", "<slot>", list_config_color_grep_slots },
> -		{ "color.interactive", "<slot>", list_config_color_interactive_slots },
> -		{ "color.remote", "<slot>", list_config_color_sideband_slots },
> -		{ "color.status", "<slot>", list_config_color_status_slots },
> -		{ "fsck", "<msg-id>", list_config_fsck_msg_ids },
> -		{ "receive.fsck", "<msg-id>", list_config_fsck_msg_ids },
> -		{ NULL, NULL, NULL }
> -	};
> -	const char **p;
> -	struct slot_expansion *e;
> -	struct string_list keys = STRING_LIST_INIT_DUP;
> -	int i;
> -
> -	for (p = config_name_list; *p; p++) {
> -		const char *var = *p;
> -		struct strbuf sb = STRBUF_INIT;
> -
> -		for (e = slot_expansions; e->prefix; e++) {
> -
> -			strbuf_reset(&sb);
> -			strbuf_addf(&sb, "%s.%s", e->prefix, e->placeholder);
> -			if (!strcasecmp(var, sb.buf)) {
> -				e->fn(&keys, e->prefix);
> -				e->found++;
> -				break;
> -			}
> -		}
> -		strbuf_release(&sb);
> -		if (!e->prefix)
> -			string_list_append(&keys, var);
> -	}
> -
> -	for (e = slot_expansions; e->prefix; e++)
> -		if (!e->found)
> -			BUG("slot_expansion %s.%s is not used",
> -			    e->prefix, e->placeholder);
> -
> -	string_list_sort(&keys);
> -	for (i = 0; i < keys.nr; i++) {
> -		const char *var = keys.items[i].string;
> -		const char *wildcard, *tag, *cut;
> -
> -		if (for_human) {
> -			puts(var);
> -			continue;
> -		}
> -
> -		wildcard = strchr(var, '*');
> -		tag = strchr(var, '<');
> -
> -		if (!wildcard && !tag) {
> -			puts(var);
> -			continue;
> -		}
> -
> -		if (wildcard && !tag)
> -			cut = wildcard;
> -		else if (!wildcard && tag)
> -			cut = tag;
> -		else
> -			cut = wildcard < tag ? wildcard : tag;
> -
> -		/*
> -		 * We may produce duplicates, but that's up to
> -		 * git-completion.bash to handle
> -		 */
> -		printf("%.*s\n", (int)(cut - var), var);
> -	}
> -	string_list_clear(&keys, 0);
> -}
> -
>  static int get_alias(const char *var, const char *value, void *data)
>  {
>  	struct string_list *list = data;
> diff --git a/help.h b/help.h
> index 7a455beeb7..9071894e8c 100644
> --- a/help.h
> +++ b/help.h
> @@ -22,7 +22,6 @@ static inline void mput_char(char c, unsigned int num)
>  void list_common_cmds_help(void);
>  void list_all_cmds_help(void);
>  void list_common_guides_help(void);
> -void list_config_help(int for_human);
>  
>  void list_all_main_cmds(struct string_list *list);
>  void list_all_other_cmds(struct string_list *list);
Previous: Emily ShafferNext: Emily Shaffer
Message 3 of 186 in “add git-bugreport tool”
  1. 00/15 add git-bugreport toolEmily Shaffer, Dec 13, 2019
  2. 02/15 help: move list_config_help to builtin/helpEmily Shaffer, Dec 13, 2019
  3. Junio C HamanoDec 13, 2019
  4. Emily ShafferDec 16, 2019
  5. Junio C HamanoDec 16, 2019
  6. Emily ShafferDec 16, 2019
  7. 01/15 bugreport: add tool to generate debugging infoEmily Shaffer, Dec 13, 2019
  8. 03/15 bugreport: gather git version and build infoEmily Shaffer, Dec 13, 2019
  9. Junio C HamanoDec 13, 2019
  10. Emily ShafferDec 20, 2019
  11. Johannes SchindelinDec 17, 2019
  12. Junio C HamanoDec 17, 2019
  13. Emily ShafferDec 20, 2019
  14. 04/15 help: add shell-path to --build-optionsEmily Shaffer, Dec 13, 2019
  15. 05/15 bugreport: add uname infoEmily Shaffer, Dec 13, 2019
  16. Junio C HamanoDec 13, 2019
  17. Aaron SchrabJan 10, 2020
  18. 06/15 bugreport: add glibc versionEmily Shaffer, Dec 13, 2019
  19. Junio C HamanoDec 13, 2019
  20. Emily ShafferDec 16, 2019
  21. 08/15 bugreport: include user interactive shellEmily Shaffer, Dec 13, 2019
  22. Junio C HamanoDec 13, 2019
  23. 07/15 bugreport: add curl versionEmily Shaffer, Dec 13, 2019
  24. Junio C HamanoDec 13, 2019
  25. Emily ShafferDec 16, 2019
  26. Johannes SchindelinDec 17, 2019
  27. 09/15 bugreport: generate config safelist based on docsEmily Shaffer, Dec 13, 2019
  28. Junio C HamanoDec 13, 2019
  29. Emily ShafferDec 16, 2019
  30. Emily ShafferDec 17, 2019
  31. Johannes SchindelinDec 15, 2019
  32. Emily ShafferDec 16, 2019
  33. Johannes SchindelinDec 17, 2019
  34. 10/15 bugreport: add config values from safelistEmily Shaffer, Dec 13, 2019
  35. Junio C HamanoDec 13, 2019
  36. Emily ShafferDec 16, 2019
  37. Junio C HamanoDec 17, 2019
  38. Emily ShafferJan 24, 2020
  39. Johannes SchindelinDec 29, 2019
  40. 11/15 bugreport: collect list of populated hooksEmily Shaffer, Dec 13, 2019
  41. Junio C HamanoDec 13, 2019
  42. Emily ShafferDec 16, 2019
  43. 12/15 bugreport: count loose objectsEmily Shaffer, Dec 13, 2019
  44. Junio C HamanoDec 13, 2019
  45. Emily ShafferDec 16, 2019
  46. 13/15 bugreport: add packed object summaryEmily Shaffer, Dec 13, 2019
  47. Junio C HamanoDec 13, 2019
  48. Emily ShafferDec 16, 2019
  49. 14/15 bugreport: list contents of $OBJDIR/infoEmily Shaffer, Dec 13, 2019
  50. 15/15 bugreport: summarize contents of alternates fileEmily Shaffer, Dec 13, 2019
  51. 00/15 add git-bugreport toolemilyshaffer@google.com, Jan 24, 2020
  52. 01/15 bugreport: add tool to generate debugging infoemilyshaffer@google.com, Jan 24, 2020
  53. Martin ÅgrenJan 30, 2020
  54. Emily ShafferFeb 4, 2020
  55. 04/15 help: add shell-path to --build-optionsemilyshaffer@google.com, Jan 24, 2020
  56. Martin ÅgrenJan 30, 2020
  57. 03/15 bugreport: gather git version and build infoemilyshaffer@google.com, Jan 24, 2020
  58. Martin ÅgrenJan 30, 2020
  59. Emily ShafferFeb 4, 2020
  60. 02/15 help: move list_config_help to builtin/helpemilyshaffer@google.com, Jan 24, 2020
  61. Martin ÅgrenJan 30, 2020
  62. Emily ShafferFeb 4, 2020
  63. 05/15 bugreport: add uname infoemilyshaffer@google.com, Jan 24, 2020
  64. 06/15 bugreport: add compiler infoemilyshaffer@google.com, Jan 24, 2020
  65. Martin ÅgrenJan 30, 2020
  66. Emily ShafferFeb 4, 2020
  67. Martin ÅgrenFeb 5, 2020
  68. 07/15 bugreport: add curl versionemilyshaffer@google.com, Jan 24, 2020
  69. Martin ÅgrenJan 30, 2020
  70. Emily ShafferFeb 4, 2020
  71. 08/15 bugreport: include user interactive shellemilyshaffer@google.com, Jan 24, 2020
  72. Martin ÅgrenJan 30, 2020
  73. Emily ShafferFeb 4, 2020
  74. Junio C HamanoFeb 5, 2020
  75. Martin ÅgrenFeb 5, 2020
  76. 09/15 bugreport: generate config safelist based on docsemilyshaffer@google.com, Jan 24, 2020
  77. Martin ÅgrenJan 30, 2020
  78. Emily ShafferFeb 5, 2020
  79. Martin ÅgrenFeb 5, 2020
  80. Martin ÅgrenJan 31, 2020
  81. Emily ShafferFeb 5, 2020
  82. Emily ShafferFeb 5, 2020
  83. 10/15 bugreport: add config values from safelistemilyshaffer@google.com, Jan 24, 2020
  84. Martin ÅgrenJan 30, 2020
  85. Emily ShafferFeb 5, 2020
  86. Martin ÅgrenJan 31, 2020
  87. Emily ShafferFeb 5, 2020
  88. Martin ÅgrenFeb 5, 2020
  89. 11/15 bugreport: collect list of populated hooksemilyshaffer@google.com, Jan 24, 2020
  90. Junio C HamanoFeb 4, 2020
  91. Emily ShafferFeb 5, 2020
  92. Emily ShafferFeb 5, 2020
  93. 13/15 bugreport: add packed object summaryemilyshaffer@google.com, Jan 24, 2020
  94. Junio C HamanoFeb 4, 2020
  95. Emily ShafferFeb 5, 2020
  96. Junio C HamanoFeb 4, 2020
  97. Emily ShafferFeb 5, 2020
  98. 12/15 bugreport: count loose objectsemilyshaffer@google.com, Jan 24, 2020
  99. Junio C HamanoFeb 4, 2020
  100. Emily ShafferFeb 5, 2020
  101. 14/15 bugreport: list contents of $OBJDIR/infoemilyshaffer@google.com, Jan 24, 2020
  102. 15/15 bugreport: summarize contents of alternates fileemilyshaffer@google.com, Jan 24, 2020
  103. Emily ShafferJan 24, 2020
  104. Jonathan TanJan 28, 2020
  105. Emily ShafferJan 28, 2020
  106. Martin ÅgrenJan 30, 2020
  107. Emily ShafferFeb 4, 2020
  108. 00/15 add git-bugreport toolEmily Shaffer, Feb 6, 2020
  109. 01/15 help: move list_config_help to builtin/helpEmily Shaffer, Feb 6, 2020
  110. Danh DoanFeb 6, 2020
  111. Emily ShafferFeb 13, 2020
  112. Eric SunshineFeb 13, 2020
  113. Junio C HamanoFeb 13, 2020
  114. Eric SunshineFeb 13, 2020
  115. Emily ShafferFeb 14, 2020
  116. 02/15 help: add shell-path to --build-optionsEmily Shaffer, Feb 6, 2020
  117. 03/15 bugreport: add tool to generate debugging infoEmily Shaffer, Feb 6, 2020
  118. SZEDER GáborFeb 7, 2020
  119. Junio C HamanoFeb 7, 2020
  120. Emily ShafferFeb 11, 2020
  121. SZEDER GáborFeb 7, 2020
  122. Junio C HamanoFeb 12, 2020
  123. Emily ShafferFeb 12, 2020
  124. 04/15 bugreport: gather git version and build infoEmily Shaffer, Feb 6, 2020
  125. 05/15 bugreport: add uname infoEmily Shaffer, Feb 6, 2020
  126. 06/15 bugreport: add compiler infoEmily Shaffer, Feb 6, 2020
  127. 07/15 bugreport: add git-remote-https versionEmily Shaffer, Feb 6, 2020
  128. 08/15 bugreport: include user interactive shellEmily Shaffer, Feb 6, 2020
  129. 09/15 bugreport: generate config safelist based on docsEmily Shaffer, Feb 6, 2020
  130. SZEDER GáborFeb 7, 2020
  131. Emily ShafferFeb 13, 2020
  132. 10/15 bugreport: add config values from safelistEmily Shaffer, Feb 6, 2020
  133. SZEDER GáborFeb 7, 2020
  134. SZEDER GáborFeb 7, 2020
  135. Eric SunshineFeb 7, 2020
  136. Andreas SchwabFeb 7, 2020
  137. Emily ShafferFeb 13, 2020
  138. 11/15 bugreport: collect list of populated hooksEmily Shaffer, Feb 6, 2020
  139. 12/15 bugreport: count loose objectsEmily Shaffer, Feb 6, 2020
  140. 13/15 bugreport: add packed object summaryEmily Shaffer, Feb 6, 2020
  141. 14/15 bugreport: list contents of $OBJDIR/infoEmily Shaffer, Feb 6, 2020
  142. 15/15 bugreport: summarize contents of alternates fileEmily Shaffer, Feb 6, 2020
  143. 00/15 add git-bugreport toolEmily Shaffer, Feb 14, 2020
  144. 02/15 help: add shell-path to --build-optionsEmily Shaffer, Feb 14, 2020
  145. 01/15 help: move list_config_help to builtin/helpEmily Shaffer, Feb 14, 2020
  146. 04/15 bugreport: gather git version and build infoEmily Shaffer, Feb 14, 2020
  147. 03/15 bugreport: add tool to generate debugging infoEmily Shaffer, Feb 14, 2020
  148. Junio C HamanoFeb 14, 2020
  149. Emily ShafferFeb 15, 2020
  150. Junio C HamanoFeb 15, 2020
  151. Emily ShafferFeb 18, 2020
  152. Emily ShafferFeb 18, 2020
  153. Emily ShafferFeb 19, 2020
  154. Junio C HamanoFeb 19, 2020
  155. Johannes SchindelinFeb 19, 2020
  156. Junio C HamanoFeb 19, 2020
  157. Emily ShafferFeb 19, 2020
  158. Junio C HamanoFeb 19, 2020
  159. Emily ShafferFeb 19, 2020
  160. 05/15 bugreport: add uname infoEmily Shaffer, Feb 14, 2020
  161. 06/15 bugreport: add compiler infoEmily Shaffer, Feb 14, 2020
  162. Johannes SchindelinFeb 19, 2020
  163. Emily ShafferFeb 19, 2020
  164. Johannes SchindelinFeb 20, 2020
  165. Emily ShafferFeb 20, 2020
  166. Johannes SchindelinFeb 21, 2020
  167. Emily ShafferFeb 22, 2020
  168. Junio C HamanoFeb 24, 2020
  169. 09/15 bugreport: generate config safelist based on docsEmily Shaffer, Feb 14, 2020
  170. 10/15 bugreport: add config values from safelistEmily Shaffer, Feb 14, 2020
  171. 11/15 bugreport: collect list of populated hooksEmily Shaffer, Feb 14, 2020
  172. 08/15 bugreport: include user interactive shellEmily Shaffer, Feb 14, 2020
  173. 12/15 bugreport: count loose objectsEmily Shaffer, Feb 14, 2020
  174. 13/15 bugreport: add packed object summaryEmily Shaffer, Feb 14, 2020
  175. 07/15 bugreport: add git-remote-https versionEmily Shaffer, Feb 14, 2020
  176. Johannes SchindelinFeb 19, 2020
  177. Emily ShafferFeb 19, 2020
  178. Junio C HamanoFeb 19, 2020
  179. Johannes SchindelinFeb 20, 2020
  180. 14/15 bugreport: list contents of $OBJDIR/infoEmily Shaffer, Feb 14, 2020
  181. Junio C HamanoFeb 14, 2020
  182. Emily ShafferFeb 18, 2020
  183. 15/15 bugreport: summarize contents of alternates fileEmily Shaffer, Feb 14, 2020
  184. Junio C HamanoFeb 14, 2020
  185. Emily ShafferFeb 14, 2020
  186. Junio C HamanoFeb 14, 2020

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.