mirror of
https://github.com/git/git
synced 2024-08-24 18:26:02 +00:00
help: check early if we have a command, if not try a documentation topic
Before this patch, something like "git help tutorial" did not work, people had to use "git help gittutorial" which is not very intuitive. This patch uses the "is_git_command" function to test early if the argument passed to "git help" is a git command, and if this is not the case then we prefix the argument with "git" instead of "git-". This way, things like "git help tutorial" or "git help glossary" will work fine. The little downside of this patch is that the "is_git_command" is a little bit slow. Signed-off-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
d0658ec6fa
commit
2dce956e39
22
help.c
22
help.c
|
@ -527,20 +527,26 @@ static int is_git_command(const char *s)
|
|||
is_in_cmdlist(&other_cmds, s);
|
||||
}
|
||||
|
||||
static const char *prepend(const char *prefix, const char *cmd)
|
||||
{
|
||||
size_t pre_len = strlen(prefix);
|
||||
size_t cmd_len = strlen(cmd);
|
||||
char *p = xmalloc(pre_len + cmd_len + 1);
|
||||
memcpy(p, prefix, pre_len);
|
||||
strcpy(p + pre_len, cmd);
|
||||
return p;
|
||||
}
|
||||
|
||||
static const char *cmd_to_page(const char *git_cmd)
|
||||
{
|
||||
if (!git_cmd)
|
||||
return "git";
|
||||
else if (!prefixcmp(git_cmd, "git"))
|
||||
return git_cmd;
|
||||
else {
|
||||
int page_len = strlen(git_cmd) + 4;
|
||||
char *p = xmalloc(page_len + 1);
|
||||
strcpy(p, "git-");
|
||||
strcpy(p + 4, git_cmd);
|
||||
p[page_len] = 0;
|
||||
return p;
|
||||
}
|
||||
else if (is_git_command(git_cmd))
|
||||
return prepend("git-", git_cmd);
|
||||
else
|
||||
return prepend("git", git_cmd);
|
||||
}
|
||||
|
||||
static void setup_man_path(void)
|
||||
|
|
Loading…
Reference in a new issue