help: use command-list.txt for the source of guides
The help command currently hard codes the list of guides and their summary in C. Let's move this list to command-list.txt. This lets us extract summary lines from Documentation/git*.txt. This also potentially lets us list guides in git.txt, but I'll leave that for now. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
63eae83f8f
commit
1b81d8cb19
@ -3,7 +3,7 @@ gitattributes(5)
|
|||||||
|
|
||||||
NAME
|
NAME
|
||||||
----
|
----
|
||||||
gitattributes - defining attributes per path
|
gitattributes - Defining attributes per path
|
||||||
|
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
|
@ -3,7 +3,7 @@ gitmodules(5)
|
|||||||
|
|
||||||
NAME
|
NAME
|
||||||
----
|
----
|
||||||
gitmodules - defining submodule properties
|
gitmodules - Defining submodule properties
|
||||||
|
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
|
@ -3,7 +3,7 @@ gitrevisions(7)
|
|||||||
|
|
||||||
NAME
|
NAME
|
||||||
----
|
----
|
||||||
gitrevisions - specifying revisions and ranges for Git
|
gitrevisions - Specifying revisions and ranges for Git
|
||||||
|
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
|
2
Makefile
2
Makefile
@ -1937,7 +1937,7 @@ $(BUILT_INS): git$X
|
|||||||
|
|
||||||
command-list.h: generate-cmdlist.sh command-list.txt
|
command-list.h: generate-cmdlist.sh command-list.txt
|
||||||
|
|
||||||
command-list.h: $(wildcard Documentation/git-*.txt)
|
command-list.h: $(wildcard Documentation/git*.txt)
|
||||||
$(QUIET_GEN)$(SHELL_PATH) ./generate-cmdlist.sh command-list.txt >$@+ && mv $@+ $@
|
$(QUIET_GEN)$(SHELL_PATH) ./generate-cmdlist.sh command-list.txt >$@+ && mv $@+ $@
|
||||||
|
|
||||||
SCRIPT_DEFINES = $(SHELL_PATH_SQ):$(DIFF_SQ):$(GIT_VERSION):\
|
SCRIPT_DEFINES = $(SHELL_PATH_SQ):$(DIFF_SQ):$(GIT_VERSION):\
|
||||||
|
@ -402,38 +402,6 @@ static void show_html_page(const char *git_cmd)
|
|||||||
open_html(page_path.buf);
|
open_html(page_path.buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct {
|
|
||||||
const char *name;
|
|
||||||
const char *help;
|
|
||||||
} common_guides[] = {
|
|
||||||
{ "attributes", N_("Defining attributes per path") },
|
|
||||||
{ "everyday", N_("Everyday Git With 20 Commands Or So") },
|
|
||||||
{ "glossary", N_("A Git glossary") },
|
|
||||||
{ "ignore", N_("Specifies intentionally untracked files to ignore") },
|
|
||||||
{ "modules", N_("Defining submodule properties") },
|
|
||||||
{ "revisions", N_("Specifying revisions and ranges for Git") },
|
|
||||||
{ "tutorial", N_("A tutorial introduction to Git (for version 1.5.1 or newer)") },
|
|
||||||
{ "workflows", N_("An overview of recommended workflows with Git") },
|
|
||||||
};
|
|
||||||
|
|
||||||
static void list_common_guides_help(void)
|
|
||||||
{
|
|
||||||
int i, longest = 0;
|
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(common_guides); i++) {
|
|
||||||
if (longest < strlen(common_guides[i].name))
|
|
||||||
longest = strlen(common_guides[i].name);
|
|
||||||
}
|
|
||||||
|
|
||||||
puts(_("The common Git guides are:\n"));
|
|
||||||
for (i = 0; i < ARRAY_SIZE(common_guides); i++) {
|
|
||||||
printf(" %s ", common_guides[i].name);
|
|
||||||
mput_char(' ', longest - strlen(common_guides[i].name));
|
|
||||||
puts(_(common_guides[i].help));
|
|
||||||
}
|
|
||||||
putchar('\n');
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char *check_git_cmd(const char* cmd)
|
static const char *check_git_cmd(const char* cmd)
|
||||||
{
|
{
|
||||||
char *alias;
|
char *alias;
|
||||||
|
@ -139,3 +139,19 @@ gitweb ancillaryinterrogators
|
|||||||
git-whatchanged ancillaryinterrogators
|
git-whatchanged ancillaryinterrogators
|
||||||
git-worktree mainporcelain
|
git-worktree mainporcelain
|
||||||
git-write-tree plumbingmanipulators
|
git-write-tree plumbingmanipulators
|
||||||
|
gitattributes guide
|
||||||
|
gitcli guide
|
||||||
|
gitcore-tutorial guide
|
||||||
|
gitcvs-migration guide
|
||||||
|
gitdiffcore guide
|
||||||
|
giteveryday guide
|
||||||
|
gitglossary guide
|
||||||
|
githooks guide
|
||||||
|
gitignore guide
|
||||||
|
gitmodules guide
|
||||||
|
gitnamespaces guide
|
||||||
|
gitrepository-layout guide
|
||||||
|
gitrevisions guide
|
||||||
|
gittutorial-2 guide
|
||||||
|
gittutorial guide
|
||||||
|
gitworkflows guide
|
||||||
|
@ -1575,6 +1575,13 @@ _git_grep ()
|
|||||||
__git_complete_refs
|
__git_complete_refs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__git_all_guides=
|
||||||
|
__git_compute_all_guides ()
|
||||||
|
{
|
||||||
|
test -n "$__git_all_guides" ||
|
||||||
|
__git_all_guides=$(git --list-cmds=list-guide)
|
||||||
|
}
|
||||||
|
|
||||||
_git_help ()
|
_git_help ()
|
||||||
{
|
{
|
||||||
case "$cur" in
|
case "$cur" in
|
||||||
@ -1584,11 +1591,9 @@ _git_help ()
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
__git_compute_all_commands
|
__git_compute_all_commands
|
||||||
__gitcomp "$__git_all_commands $(__git_aliases)
|
__git_compute_all_guides
|
||||||
attributes cli core-tutorial cvs-migration
|
__gitcomp "$__git_all_commands $(__git_aliases) $__git_all_guides
|
||||||
diffcore everyday gitk glossary hooks ignore modules
|
gitk
|
||||||
namespaces repository-layout revisions tutorial tutorial-2
|
|
||||||
workflows
|
|
||||||
"
|
"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
21
help.c
21
help.c
@ -39,12 +39,14 @@ static struct category_description main_categories[] = {
|
|||||||
{ 0, NULL }
|
{ 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *drop_prefix(const char *name)
|
static const char *drop_prefix(const char *name, uint32_t category)
|
||||||
{
|
{
|
||||||
const char *new_name;
|
const char *new_name;
|
||||||
|
|
||||||
if (skip_prefix(name, "git-", &new_name))
|
if (skip_prefix(name, "git-", &new_name))
|
||||||
return new_name;
|
return new_name;
|
||||||
|
if (category == CAT_guide && skip_prefix(name, "git", &new_name))
|
||||||
|
return new_name;
|
||||||
return name;
|
return name;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -66,7 +68,7 @@ static void extract_cmds(struct cmdname_help **p_cmds, uint32_t mask)
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
cmds[nr] = *cmd;
|
cmds[nr] = *cmd;
|
||||||
cmds[nr].name = drop_prefix(cmd->name);
|
cmds[nr].name = drop_prefix(cmd->name, cmd->category);
|
||||||
|
|
||||||
nr++;
|
nr++;
|
||||||
}
|
}
|
||||||
@ -358,11 +360,22 @@ void list_cmds_by_category(struct string_list *list,
|
|||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
struct cmdname_help *cmd = command_list + i;
|
struct cmdname_help *cmd = command_list + i;
|
||||||
|
|
||||||
if (cmd->category & cat_id)
|
if (!(cmd->category & cat_id))
|
||||||
string_list_append(list, drop_prefix(cmd->name));
|
continue;
|
||||||
|
string_list_append(list, drop_prefix(cmd->name, cmd->category));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void list_common_guides_help(void)
|
||||||
|
{
|
||||||
|
struct category_description catdesc[] = {
|
||||||
|
{ CAT_guide, N_("The common Git guides are:") },
|
||||||
|
{ 0, NULL }
|
||||||
|
};
|
||||||
|
print_cmd_by_category(catdesc);
|
||||||
|
putchar('\n');
|
||||||
|
}
|
||||||
|
|
||||||
void list_all_cmds_help(void)
|
void list_all_cmds_help(void)
|
||||||
{
|
{
|
||||||
print_cmd_by_category(main_categories);
|
print_cmd_by_category(main_categories);
|
||||||
|
1
help.h
1
help.h
@ -20,6 +20,7 @@ static inline void mput_char(char c, unsigned int num)
|
|||||||
|
|
||||||
extern void list_common_cmds_help(void);
|
extern void list_common_cmds_help(void);
|
||||||
extern void list_all_cmds_help(void);
|
extern void list_all_cmds_help(void);
|
||||||
|
extern void list_common_guides_help(void);
|
||||||
|
|
||||||
extern void list_all_main_cmds(struct string_list *list);
|
extern void list_all_main_cmds(struct string_list *list);
|
||||||
extern void list_all_other_cmds(struct string_list *list);
|
extern void list_all_other_cmds(struct string_list *list);
|
||||||
|
@ -66,6 +66,12 @@ test_expect_success 'git help' '
|
|||||||
test_i18ngrep "^ commit " help.output &&
|
test_i18ngrep "^ commit " help.output &&
|
||||||
test_i18ngrep "^ fetch " help.output
|
test_i18ngrep "^ fetch " help.output
|
||||||
'
|
'
|
||||||
|
test_expect_success 'git help -g' '
|
||||||
|
git help -g >help.output &&
|
||||||
|
test_i18ngrep "^ attributes " help.output &&
|
||||||
|
test_i18ngrep "^ everyday " help.output &&
|
||||||
|
test_i18ngrep "^ tutorial " help.output
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'generate builtin list' '
|
test_expect_success 'generate builtin list' '
|
||||||
git --list-cmds=builtins >builtins
|
git --list-cmds=builtins >builtins
|
||||||
|
Loading…
Reference in New Issue
Block a user