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

Re: [PATCH 1/7] "git" calls help_unknown_cmd(""); "git help" and "git help -a" return 0

From
Junio C Hamano <gitster@pobox.com>
Date
Oct 25, 2007, 04:40 UTC
Message-ID
<7vd4v33iy0.fsf@gitster.siamese.dyndns.org>
In-Reply-To
<1193283437-1706-1-git-send-email-srp@srparish.net>
Scott R Parish <srp@srparish.net> writes:
Show 19 quoted lines
> Signed-off-by: Scott R Parish <srp@srparish.net>
> ---
>  git.c  |    5 ++---
>  help.c |    4 ++--
>  2 files changed, 4 insertions(+), 5 deletions(-)
>
> diff --git a/git.c b/git.c
> index 853e66c..e1c99e3 100644
> --- a/git.c
> +++ b/git.c
> @@ -445,9 +445,8 @@ int main(int argc, const char **argv)
>  		if (!prefixcmp(argv[0], "--"))
>  			argv[0] += 2;
>  	} else {
> -		/* Default command: "help" */
> -		argv[0] = "help";
> -		argc = 1;
> +		/* The user didn't specify a command; give them help */
> +		help_unknown_cmd("");
Sorry, but I fail to see why this is an improvement.

If you type "git<Enter>", before this patch we call cmd_help() without help_cmd, which gives the usage string and lists common commands, and exits with 1.

With this patch, you get "git: '' is not a git-command", followed by list of common commands, and then the invocation exits with 1.

I think "git help" should exit with 0. The user asked for help, we give help, everything is going as expected and there is no reason to exit with non-zero.

However, with the current implementation, these changes to help.c also make "git<Enter>" to exit with 0 after it gives help, which is not so nice (both "cvs" and "svn" without parameter seem to exit with 1 and it sort of makes sense, although I do not think it matters much). As a few datapoints, "cvs -H" exits with 1 and "svn help" exits with 0.

So in short,
 - "git" should retain the current behaviour (both output and
   exit code).
 - "git help" should retain the current output but probably
   should exit with 0.
 - Ditto for "git help -a".
Previous: Scott R ParishNext: Scott Parish
Message 16 of 19 in “"git" calls help_unknown_cmd(""); "git help" and "git help -a" return 0”
  1. 1/7 "git" calls help_unknown_cmd(""); "git help" and "git help -a" return 0Scott R Parish, Oct 25, 2007
  2. 2/7 s/pattern/prefix/ in help's list_commandsScott R Parish, Oct 25, 2007
  3. 3/7 "current_exec_path" is a misleading name, use "argv_exec_path" Signed-off-by: Scott R Parish <srp@srparish.net>Scott R Parish, Oct 25, 2007
  4. 4/7 use only the PATH for exec'ing git commandsScott R Parish, Oct 25, 2007
  5. 5/7 chdir() into list_commands() dir instead of building paths for stat()Scott R Parish, Oct 25, 2007
  6. 6/7 walk PATH to generate list of commands for "help -a"Scott R Parish, Oct 25, 2007
  7. 7/7 shell should call setup_path() instead of manually setting up its pathScott R Parish, Oct 25, 2007
  8. Junio C HamanoOct 25, 2007
  9. Scott ParishOct 25, 2007
  10. Junio C HamanoOct 25, 2007
  11. Scott ParishOct 25, 2007
  12. Junio C HamanoOct 25, 2007
  13. Scott ParishOct 25, 2007
  14. 2/7 remove unused/unneeded "pattern" argument of list_commandsScott R Parish, Oct 25, 2007
  15. 5/7 chdir() into list_commands() dir instead of building paths for stat()Scott R Parish, Oct 25, 2007
  16. Junio C HamanoOct 25, 2007
  17. Scott ParishOct 25, 2007
  18. Junio C HamanoOct 26, 2007
  19. Scott ParishOct 27, 2007

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.