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

[PATCH v7 11/15] bugreport: collect list of populated hooks

From
Emily Shaffer <emilyshaffer@google.com>
Date
Feb 14, 2020, 01:53 UTC
Message-ID
<20200214015343.201946-12-emilyshaffer@google.com>
In-Reply-To
<20200214015343.201946-1-emilyshaffer@google.com>

Occasionally a failure a user is seeing may be related to a specific hook which is being run, perhaps without the user realizing. While the contents of hooks can be sensitive - containing user data or process information specific to the user's organization - simply knowing that a hook is being run at a certain stage can help us to understand whether something is going wrong.

Without a definitive list of hook names within the code, we compile our own list from the documentation. This is likely prone to bitrot. To reduce the amount of code humans need to read, we turn the list into a string_list and iterate over it (as we are calling the same find_hook operation on each string). However, since bugreport should primarily be called by the user, the performance loss from massaging the string seems acceptable.

Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
---
 Documentation/git-bugreport.txt |  1 +
 bugreport.c                     | 53 +++++++++++++++++++++++++++++++++
 2 files changed, 54 insertions(+)
diff --git a/Documentation/git-bugreport.txt b/Documentation/git-bugreport.txt
index 4e9171d1bd..779c9c7fd9 100644
--- a/Documentation/git-bugreport.txt
+++ b/Documentation/git-bugreport.txt
@@ -31,6 +31,7 @@ The following information is captured automatically:
  - 'git remote-https --build-info'
  - $SHELL
  - Selected config values
+ - A list of enabled hooks
 
 OPTIONS
 -------
diff --git a/bugreport.c b/bugreport.c
index 1a9430a857..7e6147a935 100644
--- a/bugreport.c
+++ b/bugreport.c
@@ -9,6 +9,7 @@
 #include "config.h"
 #include "bugreport-config-safelist.h"
 #include "khash.h"
+#include "run-command.h"
 
 static void get_git_remote_https_version_info(struct strbuf *version_info)
 {
@@ -78,6 +79,55 @@ static void get_safelisted_config(struct strbuf *config_info)
 	}
 }
 
+static void get_populated_hooks(struct strbuf *hook_info, int nongit)
+{
+	/*
+	 * Doesn't look like there is a list of all possible hooks; so below is
+	 * a transcription of `git help hooks`.
+	 */
+	const char *hooks = "applypatch-msg,"
+			    "pre-applypatch,"
+			    "post-applypatch,"
+			    "pre-commit,"
+			    "pre-merge-commit,"
+			    "prepare-commit-msg,"
+			    "commit-msg,"
+			    "post-commit,"
+			    "pre-rebase,"
+			    "post-checkout,"
+			    "post-merge,"
+			    "pre-push,"
+			    "pre-receive,"
+			    "update,"
+			    "post-receive,"
+			    "post-update,"
+			    "push-to-checkout,"
+			    "pre-auto-gc,"
+			    "post-rewrite,"
+			    "sendemail-validate,"
+			    "fsmonitor-watchman,"
+			    "p4-pre-submit,"
+			    "post-index-changex";
+	struct string_list hooks_list = STRING_LIST_INIT_DUP;
+	struct string_list_item *iter = NULL;
+
+
+	if (nongit) {
+		strbuf_addstr(hook_info,
+			"not run from a git repository - no hooks to show\n");
+		return;
+	}
+
+	string_list_split(&hooks_list, hooks, ',', -1);
+
+	for_each_string_list_item(iter, &hooks_list) {
+		if (find_hook(iter->string)) {
+			strbuf_addstr(hook_info, iter->string);
+			strbuf_complete_line(hook_info);
+		}
+	}
+}
+
 static const char * const bugreport_usage[] = {
 	N_("git bugreport [-o|--output-directory <file>] [-s|--suffix <format>]"),
 	NULL
@@ -166,6 +216,9 @@ int cmd_main(int argc, const char **argv)
 	get_header(&buffer, "Safelisted Config Info");
 	get_safelisted_config(&buffer);
 
+	get_header(&buffer, "Enabled Hooks");
+	get_populated_hooks(&buffer, nongit_ok);
+
 	report = fopen_for_writing(report_path.buf);
 
 	if (report == NULL) {
-- 
2.25.0.265.gbab2e86ba0-goog
Previous: Emily ShafferNext: Emily Shaffer
Message 171 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.