Commit 97fc6c5f authored by Andreas Ericsson's avatar Andreas Ericsson Committed by Junio C Hamano

git --help COMMAND brings up the git-COMMAND man-page.

It's by design a bit stupid (matching ^git rather than ^git-), so as
to work with 'gitk' and 'git' as well.
Signed-off-by: default avatarAndreas Ericsson <ae@op5.se>
Signed-off-by: default avatarJunio C Hamano <junkio@cox.net>
parent cb22bc44
......@@ -24,6 +24,8 @@ OPTIONS
--help::
prints the synopsis and a list of available commands.
If a git command is named this option will bring up the
man-page for that command.
--exec-path::
path to wherever your core git programs are installed.
......
......@@ -160,6 +160,26 @@ static void prepend_to_path(const char *dir, int len)
setenv("PATH", path, 1);
}
/* has anyone seen 'man' installed anywhere else than in /usr/bin? */
#define PATH_TO_MAN "/usr/bin/man"
static void show_man_page(char *git_cmd)
{
char *page;
if (!strncmp(git_cmd, "git", 3))
page = git_cmd;
else {
int page_len = strlen(git_cmd) + 4;
page = malloc(page_len + 1);
strcpy(page, "git-");
strcpy(page + 4, git_cmd);
page[page_len] = 0;
}
execlp(PATH_TO_MAN, "man", page, NULL);
}
int main(int argc, char **argv, char **envp)
{
char git_command[PATH_MAX + 1];
......@@ -199,8 +219,12 @@ int main(int argc, char **argv, char **envp)
usage(NULL, NULL);
}
if (i >= argc || show_help)
usage(exec_path, NULL);
if (i >= argc || show_help) {
if (i >= argc)
usage(exec_path, NULL);
show_man_page(argv[i]);
}
/* allow relative paths, but run with exact */
if (chdir(exec_path)) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment