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

[PATCH v2 3/8] help -a: do not list commands that are excluded from the build

From
Johannes Schindelin via GitGitGadget <gitgitgadget@gmail.com>
Date
Apr 18, 2019, 13:16 UTC
Message-ID
<9b498a6f218e323306afeeb791ece93510bad746.1555593396.git.gitgitgadget@gmail.com>
In-Reply-To
<pull.168.v2.git.gitgitgadget@gmail.com>
From: Johannes Schindelin <johannes.schindelin@gmx.de>

When built with NO_CURL or with NO_UNIX_SOCKETS, some commands are skipped from the build. It does not make sense to list them in the output of `git help -a`, so let's just not.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 Makefile            | 14 ++++++++++++--
 generate-cmdlist.sh | 10 +++++++++-
 2 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/Makefile b/Makefile
index f5be2f633e..e7bcfcaae9 100644
--- a/Makefile
+++ b/Makefile
@@ -611,6 +611,7 @@ FUZZ_PROGRAMS =
 LIB_OBJS =
 PROGRAM_OBJS =
 PROGRAMS =
+EXCLUDED_PROGRAMS =
 SCRIPT_PERL =
 SCRIPT_PYTHON =
 SCRIPT_SH =
@@ -1319,6 +1320,7 @@ ifdef NO_CURL
 	REMOTE_CURL_PRIMARY =
 	REMOTE_CURL_ALIASES =
 	REMOTE_CURL_NAMES =
+	EXCLUDED_PROGRAMS += git-http-fetch git-http-push
 else
 	ifdef CURLDIR
 		# Try "-Wl,-rpath=$(CURLDIR)/$(lib)" in such a case.
@@ -1343,7 +1345,11 @@ endif
 	ifeq "$(curl_check)" "070908"
 		ifndef NO_EXPAT
 			PROGRAM_OBJS += http-push.o
+		else
+			EXCLUDED_PROGRAMS += git-http-push
 		endif
+	else
+		EXCLUDED_PROGRAMS += git-http-push
 	endif
 	curl_check := $(shell (echo 072200; $(CURL_CONFIG) --vernum | sed -e '/^70[BC]/s/^/0/') 2>/dev/null | sort -r | sed -ne 2p)
 	ifeq "$(curl_check)" "072200"
@@ -1589,7 +1595,9 @@ ifdef NO_INET_PTON
 	LIB_OBJS += compat/inet_pton.o
 	BASIC_CFLAGS += -DNO_INET_PTON
 endif
-ifndef NO_UNIX_SOCKETS
+ifdef NO_UNIX_SOCKETS
+	EXCLUDED_PROGRAMS += git-credential-cache git-credential-cache--daemon
+else
 	LIB_OBJS += unix-socket.o
 	PROGRAM_OBJS += credential-cache.o
 	PROGRAM_OBJS += credential-cache--daemon.o
@@ -2108,7 +2116,9 @@ $(BUILT_INS): git$X
 command-list.h: generate-cmdlist.sh command-list.txt
 
 command-list.h: $(wildcard Documentation/git*.txt) Documentation/*config.txt Documentation/config/*.txt
-	$(QUIET_GEN)$(SHELL_PATH) ./generate-cmdlist.sh command-list.txt >$@+ && mv $@+ $@
+	$(QUIET_GEN)$(SHELL_PATH) ./generate-cmdlist.sh \
+		$(patsubst %,--exclude-program %,$(EXCLUDED_PROGRAMS)) \
+		command-list.txt >$@+ && mv $@+ $@
 
 SCRIPT_DEFINES = $(SHELL_PATH_SQ):$(DIFF_SQ):$(GIT_VERSION):\
 	$(localedir_SQ):$(NO_CURL):$(USE_GETTEXT_SCHEME):$(SANE_TOOL_PATH_SQ):\
diff --git a/generate-cmdlist.sh b/generate-cmdlist.sh
index 709d67405b..71158f7d8b 100755
--- a/generate-cmdlist.sh
+++ b/generate-cmdlist.sh
@@ -6,7 +6,7 @@ die () {
 }
 
 command_list () {
-	grep -v '^#' "$1"
+	eval "grep -ve '^#' $exclude_programs" <"$1"
 }
 
 get_categories () {
@@ -93,6 +93,14 @@ EOF
 EOF
 }
 
+exclude_programs=
+while test "--exclude-program" = "$1"
+do
+	shift
+	exclude_programs="$exclude_programs -e \"^$1 \""
+	shift
+done
+
 echo "/* Automatically generated by generate-cmdlist.sh */
 struct cmdname_help {
 	const char *name;
-- 
gitgitgadget
Previous: Johannes Schindelin via GitGitGadgetNext: Johannes Schindelin via GitGitGadget
Message 34 of 41 in “Assorted Documentation-related fixes”
  1. 0/7 Assorted Documentation-related fixesJohannes Schindelin via GitGitGadget, Apr 12, 2019
  2. 1/7 remote-testgit: move it into the support directory for t5801Johannes Schindelin via GitGitGadget, Apr 12, 2019
  3. Junio C HamanoApr 15, 2019
  4. Johannes SchindelinApr 18, 2019
  5. 2/7 help -a: do not list commands that are excluded from the buildJohannes Schindelin via GitGitGadget, Apr 12, 2019
  6. Junio C HamanoApr 15, 2019
  7. Johannes SchindelinApr 18, 2019
  8. 4/7 docs: exclude documentation for commands that have been excludedJohannes Schindelin via GitGitGadget, Apr 12, 2019
  9. Eric SunshineApr 12, 2019
  10. Junio C HamanoApr 15, 2019
  11. Eric SunshineApr 15, 2019
  12. Eric SunshineApr 15, 2019
  13. Johannes SchindelinApr 18, 2019
  14. Jeff KingApr 15, 2019
  15. Junio C HamanoApr 16, 2019
  16. Johannes SchindelinApr 18, 2019
  17. Jeff KingApr 18, 2019
  18. 3/7 check-docs: do not pretend that commands are listed which are excludedJohannes Schindelin via GitGitGadget, Apr 12, 2019
  19. Junio C HamanoApr 15, 2019
  20. Johannes SchindelinApr 18, 2019
  21. 7/7 Turn `git serve` into a test helperJohannes Schindelin via GitGitGadget, Apr 12, 2019
  22. Junio C HamanoApr 15, 2019
  23. Jeff KingApr 17, 2019
  24. Junio C HamanoApr 17, 2019
  25. Josh SteadmonApr 17, 2019
  26. Junio C HamanoApr 18, 2019
  27. Johannes SchindelinApr 18, 2019
  28. 6/7 test-tool: handle the `-C <directory>` option just like `git`Johannes Schindelin via GitGitGadget, Apr 12, 2019
  29. 5/7 check-docs: do not bother checking for legacy scripts' documentationJohannes Schindelin via GitGitGadget, Apr 12, 2019
  30. Junio C HamanoApr 15, 2019
  31. 0/8 Assorted Documentation-related fixesJohannes Schindelin via GitGitGadget, Apr 18, 2019
  32. 1/8 remote-testgit: move it into the support directory for t5801Johannes Schindelin via GitGitGadget, Apr 18, 2019
  33. 2/8 Makefile: drop the NO_INSTALL variableJohannes Schindelin via GitGitGadget, Apr 18, 2019
  34. 3/8 help -a: do not list commands that are excluded from the buildJohannes Schindelin via GitGitGadget, Apr 18, 2019
  35. 4/8 check-docs: allow command-list.txt to contain excluded commandsJohannes Schindelin via GitGitGadget, Apr 18, 2019
  36. 5/8 docs: exclude documentation for commands that have been excludedJohannes Schindelin via GitGitGadget, Apr 18, 2019
  37. Junio C HamanoApr 19, 2019
  38. Johannes SchindelinApr 29, 2019
  39. 6/8 check-docs: do not bother checking for legacy scripts' documentationJohannes Schindelin via GitGitGadget, Apr 18, 2019
  40. 7/8 test-tool: handle the `-C <directory>` option just like `git`Johannes Schindelin via GitGitGadget, Apr 18, 2019
  41. 8/8 Turn `git serve` into a test helperJohannes Schindelin via GitGitGadget, Apr 18, 2019

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.