I think v5 is getting close to what I wanted to achieve from the RFC version (I skip v4 since I sent out v4/wip and another v4 may confuse people). Interdiff is too large to be helpful, but the summary of changes compared to v3 is: - common-cmds.h is renamed to command-list.h - the common group description is moved from command-list.txt to help.c to simplify command-list.txt format - generate-cmds.sh supports multiple categories per command, a new one "complete" is added to aid git-completion.bash - multiple --list-cmds options is replaced with --list-cmds=<type>[,<type>...]. This allows easier group customization in git-completion.bash (not happens yet) - __git_list_all_commands() and __git_list_porcelain_commands() for backward compatibility - "git help <tab>" completion also makes use of guide list in command-list.txt - better tests from Ramsay There is one sticky point yet about the guides. I'll pull Phillip in and explain more in the relevant patch. Nguyễn Thái Ngọc Duy (10): generate-cmds.sh: factor out synopsis extract code generate-cmds.sh: export all commands to command-list.h help: use command-list.h for common command list Remove common-cmds.h git.c: convert --list-*builtins to --list-cmds=* completion: implement and use --list-cmds=main,others git: support --list-cmds=list-<category> help: add "-a --verbose" to list all commands with synopsis help: use command-list.txt for the source of guides completion: let git provide the completable command list .gitignore | 2 +- Documentation/git-help.txt | 4 +- Documentation/gitattributes.txt | 2 +- Documentation/gitmodules.txt | 2 +- Documentation/gitrevisions.txt | 2 +- Makefile | 16 +- builtin/help.c | 39 +---- command-list.txt | 67 ++++---- contrib/completion/git-completion.bash | 134 +++++----------- generate-cmdlist.sh | 126 ++++++++++----- git.c | 38 ++++- help.c | 209 +++++++++++++++++++++---- help.h | 5 + t/t0012-help.sh | 26 ++- t/t9902-completion.sh | 5 +- 15 files changed, 426 insertions(+), 251 deletions(-) -- 2.17.0.664.g8924eee37a