From: Sébastien Guimmara Date: Fri, 01 May 2015 15:04:34 GMT Subject: Re: [PATCH 1/2] git help: group common commands by theme Message-ID: <55439602.6000906@gmail.com> In-Reply-To: <554392E2.8000206@gmail.com> (My mistake, the patch was in 3 parts, not 4) Author: Sébastien Guimmara Date: Fri May 1 16:25:53 2015 +0200 generate-cmdlist.sh - Add command group information for common commands extract the $grp shell variable from command-list.txt (eg: 'common-3_worktree') and add this value to the output: before/after: {"add", N_("Add file contents to the index")} {"add", N_("Add file contents to the index"), "3_worktree"} So that when 'git' is called, we can display common commands grouped by theme instead of a less useful alphabetical order. diff --git a/generate-cmdlist.sh b/generate-cmdlist.sh index 9a4c9b9..818b2f3 100755 --- a/generate-cmdlist.sh +++ b/generate-cmdlist.sh @@ -4,19 +4,22 @@ echo "/* Automatically generated by $0 */ struct cmdname_help { char name[16]; char help[80]; + char group[20]; }; static struct cmdname_help common_cmds[] = {" -sed -n -e 's/^git-\([^ ]*\)[ ].* common.*/\1/p' command-list.txt | +sed -n -e 's/^git-\([^ ]*\)[ ].* common-\(.*\)/\1:\2/p' command-list.txt | sort | -while read cmd +while read line do + cmd=`echo $line | cut -d ':' -f 1` + grp=`echo $line | cut -d ':' -f 2` sed -n ' /^NAME/,/git-'"$cmd"'/H ${ x - s/.*git-'"$cmd"' - \(.*\)/ {"'"$cmd"'", N_("\1")},/ + s/.*git-'"$cmd"' - \(.*\)/ {"'"$cmd"'", N_("\1"), "'"$grp"'"},/ p }' "Documentation/git-$cmd.txt" done On 05/01/2015 04:51 PM, Sébastien Guimmara wrote: > Hello everyone, > This is my first contribution to an open source project. > I tackled the issue found here: > https://git.wiki.kernel.org/index.php/SmallProjectsIdeas#improve_.22git_help.22 > Namely, format the output of 'git help' so that > the commands are grouped by theme. > Author: Sébastien Guimmara > Date: Fri May 1 15:48:57 2015 +0200 > command-list.txt - added command groups to common commands > groups are in the form: 'x_group', > where x is a number used to order (ascending) > commands in the displayed help. > example: git-add mainporcelain common-2_worktree > diff --git a/command-list.txt b/command-list.txt > index f1eae08..b0730a2 100644 > --- a/command-list.txt > +++ b/command-list.txt > @@ -1,29 +1,29 @@ > # List of known git commands. > # command name category [deprecated] [common] > -git-add mainporcelain common > +git-add mainporcelain common-3_worktree > git-am mainporcelain > git-annotate ancillaryinterrogators > git-apply plumbingmanipulators > git-archimport foreignscminterface > git-archive mainporcelain > -git-bisect mainporcelain common > +git-bisect mainporcelain common-7_search > git-blame ancillaryinterrogators > -git-branch mainporcelain common > +git-branch mainporcelain common-6_branching > git-bundle mainporcelain > git-cat-file plumbinginterrogators > git-check-attr purehelpers > git-check-ignore purehelpers > git-check-mailmap purehelpers > -git-checkout mainporcelain common > +git-checkout mainporcelain common-6_branching > git-checkout-index plumbingmanipulators > git-check-ref-format purehelpers > git-cherry ancillaryinterrogators > git-cherry-pick mainporcelain > git-citool mainporcelain > git-clean mainporcelain > -git-clone mainporcelain common > +git-clone mainporcelain common-1_init > git-column purehelpers > -git-commit mainporcelain common > +git-commit mainporcelain common-5_history > git-commit-tree plumbingmanipulators > git-config ancillarymanipulators > git-count-objects ancillaryinterrogators > @@ -35,14 +35,14 @@ git-cvsimport foreignscminterface > git-cvsserver foreignscminterface > git-daemon synchingrepositories > git-describe mainporcelain > -git-diff mainporcelain common > +git-diff mainporcelain common-5_history > git-diff-files plumbinginterrogators > git-diff-index plumbinginterrogators > git-diff-tree plumbinginterrogators > git-difftool ancillaryinterrogators > git-fast-export ancillarymanipulators > git-fast-import ancillarymanipulators > -git-fetch mainporcelain common > +git-fetch mainporcelain common-4_remote > git-fetch-pack synchingrepositories > git-filter-branch ancillarymanipulators > git-fmt-merge-msg purehelpers > @@ -51,7 +51,7 @@ git-format-patch mainporcelain > git-fsck ancillaryinterrogators > git-gc mainporcelain > git-get-tar-commit-id ancillaryinterrogators > -git-grep mainporcelain common > +git-grep mainporcelain common-7_search > git-gui mainporcelain > git-hash-object plumbingmanipulators > git-help ancillaryinterrogators > @@ -60,17 +60,17 @@ git-http-fetch synchelpers > git-http-push synchelpers > git-imap-send foreignscminterface > git-index-pack plumbingmanipulators > -git-init mainporcelain common > +git-init mainporcelain common-1_init > git-instaweb ancillaryinterrogators > git-interpret-trailers purehelpers > gitk mainporcelain > -git-log mainporcelain common > +git-log mainporcelain common-2_info > git-ls-files plumbinginterrogators > git-ls-remote plumbinginterrogators > git-ls-tree plumbinginterrogators > git-mailinfo purehelpers > git-mailsplit purehelpers > -git-merge mainporcelain common > +git-merge mainporcelain common-6_branching > git-merge-base plumbinginterrogators > git-merge-file plumbingmanipulators > git-merge-index plumbingmanipulators > @@ -79,7 +79,7 @@ git-mergetool ancillarymanipulators > git-merge-tree ancillaryinterrogators > git-mktag plumbingmanipulators > git-mktree plumbingmanipulators > -git-mv mainporcelain common > +git-mv mainporcelain common-3_worktree > git-name-rev plumbinginterrogators > git-notes mainporcelain > git-p4 foreignscminterface > @@ -90,11 +90,11 @@ git-parse-remote synchelpers > git-patch-id purehelpers > git-prune ancillarymanipulators > git-prune-packed plumbingmanipulators > -git-pull mainporcelain common > -git-push mainporcelain common > +git-pull mainporcelain common-4_remote > +git-push mainporcelain common-4_remote > git-quiltimport foreignscminterface > git-read-tree plumbingmanipulators > -git-rebase mainporcelain common > +git-rebase mainporcelain common-5_history > git-receive-pack synchelpers > git-reflog ancillarymanipulators > git-relink ancillarymanipulators > @@ -103,28 +103,28 @@ git-repack ancillarymanipulators > git-replace ancillarymanipulators > git-request-pull foreignscminterface > git-rerere ancillaryinterrogators > -git-reset mainporcelain common > +git-reset mainporcelain common-3_worktree > git-revert mainporcelain > git-rev-list plumbinginterrogators > git-rev-parse ancillaryinterrogators > -git-rm mainporcelain common > +git-rm mainporcelain common-3_worktree > git-send-email foreignscminterface > git-send-pack synchingrepositories > git-shell synchelpers > git-shortlog mainporcelain > -git-show mainporcelain common > +git-show mainporcelain common-2_info > git-show-branch ancillaryinterrogators > git-show-index plumbinginterrogators > git-show-ref plumbinginterrogators > git-sh-i18n purehelpers > git-sh-setup purehelpers > git-stash mainporcelain > -git-status mainporcelain common > +git-status mainporcelain common-2_info > git-stripspace purehelpers > git-submodule mainporcelain > git-svn foreignscminterface > git-symbolic-ref plumbingmanipulators > -git-tag mainporcelain common > +git-tag mainporcelain common-5_history > git-unpack-file plumbinginterrogators > git-unpack-objects plumbingmanipulators > git-update-index plumbingmanipulators >