This is not exactly v4 and likely broken. But I've made several debatable changes and would like your opinions before making even more changes in this direction. In 03/12 I made a format change in command-list.txt. The group description is no longer in this file but in help.c instead. This simplifies the format. However it may be harder for people to know what category means what (but then it's already so for a lot more categories). In 11/12 I added the new "complete" category to command-list.txt so that we could replace the giant list in git-completion.bash. This is really questionable because several commands will NOT be completable anymore. These are listed there so we can discuss. Another thing I wonder is, whether I should tag "nocomplete" instead of "complete" in command-list.txt, similar to parseopt's nocomplete strategy: commands are completable by default then we just exclude some of them. The "complete" tag goes the opposite direction, we only show ones that are either external, "complete" or mainporcelain. I think we would go with whitelist than blacklist though to avoid helper commands showing up by default... Also in 02/12 I moved to fixed column format. Strictly speaking I do not need that (but it makes the code slightly more complex). If you are really against fixed column format, speak up now. Nguyễn Thái Ngọc Duy (12): 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=* git: accept multiple --list-cmds options completion: implement and use --list-cmds=all git: support --list-cmds=<category> help: add "-a --verbose" to list all commands with synopsis help: use command-list.txt for the source of guides command-list.txt: add new category "complete" 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 | 55 ++++---- contrib/completion/git-completion.bash | 121 +++------------- generate-cmdlist.sh | 128 +++++++++++------ git.c | 19 ++- help.c | 186 +++++++++++++++++++++---- help.h | 4 + t/t0012-help.sh | 11 +- t/t9902-completion.sh | 5 +- 15 files changed, 344 insertions(+), 252 deletions(-) -- 2.17.0.519.gb89679a4aa