The major modification of this reroll [1] is the use of the perl version
of generate-cmdlist instead of the awk one.
help.c:
1. change the introductory message from:
"The typical Git workflow includes:"
to:
"These are common Git commands used in various situations:"
2. include Ramsay's patch [2]
[1]: v8: http://thread.gmane.org/gmane.comp.version-control.git/269305
[2]: http://thread.gmane.org/gmane.comp.version-control.git/269387
Eric Sunshine (2):
command-list: prepare machinery for upcoming "common groups" section
generate-cmdlist: parse common group commands
Sébastien Guimmara (3):
command-list.txt: add the common groups block
command-list.txt: drop the "common" tag
help: respect new common command grouping
Documentation/cmd-list.perl | 4 ++++
Makefile | 9 ++++----
command-list.txt | 53 +++++++++++++++++++++++++++------------------
generate-cmdlist.perl | 50 ++++++++++++++++++++++++++++++++++++++++++
generate-cmdlist.sh | 23 --------------------
help.c | 24 +++++++++++++++++++-
6 files changed, 114 insertions(+), 49 deletions(-)
create mode 100755 generate-cmdlist.perl
delete mode 100755 generate-cmdlist.sh
--
2.4.0.GIT
From: Eric Sunshine <redacted>
The ultimate goal is for "git help" to classify common commands by
group. Toward this end, a subsequent patch will add a new "common
groups" section to command-list.txt preceding the actual command list.
As preparation, teach existing command-list.txt parsing machinery, which
doesn't care about grouping, to skip over this upcoming "common groups"
section.
Signed-off-by: Eric Sunshine <redacted>
Signed-off-by: Sébastien Guimmara <redacted>
---
Documentation/cmd-list.perl | 4 ++++
Makefile | 5 +++--
command-list.txt | 3 ++-
3 files changed, 9 insertions(+), 3 deletions(-)
@@ -1,4 +1,5 @@-# List of known git commands.+# do not molest the next line+### command list # command name category [deprecated] [common] git-add mainporcelain common git-am mainporcelain
The ultimate goal is for "git help" to display common commands in
groups rather than alphabetically. As a first step, define the
groups in a new block, and then assign a group to each
common command.
Add a block at the beginning of command-list.txt:
init start a working area (see also: git help tutorial)
worktree work on the current change (see also:[...]
info examine the history and state (see also: git [...]
history grow, mark and tweak your history
remote collaborate (see also: git help workflows)
storing information about common commands group, then map each common
command to a group:
git-add mainporcelain common worktree
Helped-by: Eric Sunshine [off-list ref]
Helped-by: Junio C Hamano [off-list ref]
Helped-by: Emma Jane Hogbin Westby [off-list ref]
Signed-off-by: Sébastien Guimmara <redacted>
---
command-list.txt | 50 ++++++++++++++++++++++++++++++--------------------
1 file changed, 30 insertions(+), 20 deletions(-)
@@ -1,3 +1,13 @@+# common commands are grouped by themes output by 'git help'+# map each common command in the command list to one of these groups.+### common groups+init start a working area (see also: git help tutorial)+worktree work on the current change (see also: git help everyday)+info examine the history and state (see also: git help revisions)+history grow, mark and tweak your common history+remote collaborate (see also: git help workflows)++# List of known git commands. # do not molest the next line ### command list # command name category [deprecated] [common]
@@ -7,24 +17,24 @@ git-annotate ancillaryinterrogators git-apply plumbingmanipulators git-archimport foreignscminterface git-archive mainporcelain-git-bisect mainporcelain common+git-bisect mainporcelain common info git-blame ancillaryinterrogators-git-branch mainporcelain common+git-branch mainporcelain common history 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 history 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 init git-column purehelpers-git-commit mainporcelain common+git-commit mainporcelain common history git-commit-tree plumbingmanipulators git-config ancillarymanipulators git-count-objects ancillaryinterrogators
From: Eric Sunshine <redacted>
Parse the group block to create the array of group descriptions:
static char *common_cmd_groups[] = {
N_("starting a working area"),
N_("working on the current change"),
N_("working with others"),
N_("examining the history and state"),
N_("growing, marking and tweaking your history"),
};
then map each element of common_cmds[] to a group via its index:
static struct cmdname_help common_cmds[] = {
{"add", N_("Add file contents to the index"), 1},
{"branch", N_("List, create, or delete branches"), 4},
{"checkout", N_("Checkout a branch or paths to the ..."), 4},
{"clone", N_("Clone a repository into a new directory"), 0},
{"commit", N_("Record changes to the repository"), 4},
...
};
so that 'git help' can print those commands grouped by theme.
Only commands tagged with an attribute from the group block are emitted to
common_cmds[].
[commit message by Sébastien Guimmara [off-list ref]]
Signed-off-by: Eric Sunshine <redacted>
Signed-off-by: Sébastien Guimmara <redacted>
---
Makefile | 4 ++--
generate-cmdlist.perl | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
generate-cmdlist.sh | 23 -----------------------
3 files changed, 52 insertions(+), 25 deletions(-)
create mode 100755 generate-cmdlist.perl
delete mode 100755 generate-cmdlist.sh
command-list.sh, retired in the previous patch, was the only
consumer of the "common" tag, so drop this now-unnecessary
attribute.
before:
git-add mainporcelain common worktree
after:
git-add mainporcelain worktree
Helped-by: Eric Sunshine [off-list ref]
Signed-off-by: Sébastien Guimmara <redacted>
---
command-list.txt | 42 +++++++++++++++++++++---------------------
1 file changed, 21 insertions(+), 21 deletions(-)
'git help' shows common commands in alphabetical order:
The most commonly used git commands are:
add Add file contents to the index
bisect Find by binary search the change that introduced a bug
branch List, create, or delete branches
checkout Checkout a branch or paths to the working tree
clone Clone a repository into a new directory
commit Record changes to the repository
[...]
without any indication of how commands relate to high-level
concepts or each other. Revise the output to explain their relationship
with the typical Git workflow:
These are common Git commands used in various situations:
start a working area (see also: git help tutorial)
clone Clone a repository into a new directory
init Create an empty Git repository or reinitialize [...]
work on the current change (see also: git help everyday)
add Add file contents to the index
reset Reset current HEAD to the specified state
examine the history and state (see also: git help revisions)
log Show commit logs
status Show the working tree status
[...]
Helped-by: Eric Sunshine [off-list ref]
Signed-off-by: Ramsay Jones <redacted>
Signed-off-by: Sébastien Guimmara <redacted>
---
help.c | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
@@ -218,17 +218,39 @@ void list_commands(unsigned int colopts,}}+staticintcmd_group_cmp(constvoid*elem1,constvoid*elem2)+{+conststructcmdname_help*e1=elem1;+conststructcmdname_help*e2=elem2;++if(e1->group<e2->group)+return-1;+if(e1->group>e2->group)+return1;+returnstrcmp(e1->name,e2->name);+}+voidlist_common_cmds_help(void){inti,longest=0;+intcurrent_grp=-1;for(i=0;i<ARRAY_SIZE(common_cmds);i++){if(longest<strlen(common_cmds[i].name))longest=strlen(common_cmds[i].name);}-puts(_("The most commonly used git commands are:"));+qsort(common_cmds,ARRAY_SIZE(common_cmds),+sizeof(common_cmds[0]),cmd_group_cmp);++puts(_("These are common Git commands used in various situations:"));+for(i=0;i<ARRAY_SIZE(common_cmds);i++){+if(common_cmds[i].group!=current_grp){+printf("\n%s\n",_(common_cmd_groups[common_cmds[i].group]));+current_grp=common_cmds[i].group;+}+printf(" %s ",common_cmds[i].name);mput_char(' ',longest-strlen(common_cmds[i].name));puts(_(common_cmds[i].help));
From: Eric Sunshine <hidden> Date: 2016-06-15 23:04:50
On Wed, May 20, 2015 at 3:22 PM, Sébastien Guimmara
[off-list ref] wrote:
The major modification of this reroll [1] is the use of the perl version
of generate-cmdlist instead of the awk one.
help.c:
1. change the introductory message from:
"The typical Git workflow includes:"
to:
"These are common Git commands used in various situations:"
Which is just a longer way to say what the original said:
"The most commonly used git commands are:"
I don't care strongly, but the terseness of the original has a certain appeal.
From: Stefan Beller <hidden> Date: 2016-06-15 23:04:51
On Wed, May 20, 2015 at 12:27 PM, Sébastien Guimmara
[off-list ref] wrote:
On 05/20/2015 09:22 PM, Sébastien Guimmara wrote:
quoted
From: Eric Sunshine <redacted>
It looks like 'git send-email' got confused with the CC field.
I'm sorry for that.
It's to keep authorship.
When Junio picks it up, this will show as
authored by Eric, signed off by both of you (Eric+Sébastien)
and committed by Junio.
On Wed, May 20, 2015 at 12:27 PM, Sébastien Guimmara
[off-list ref] wrote:
quoted
On 05/20/2015 09:22 PM, Sébastien Guimmara wrote:
quoted
From: Eric Sunshine <redacted>
It looks like 'git send-email' got confused with the CC field.
I'm sorry for that.
It's to keep authorship.
When Junio picks it up, this will show as
authored by Eric, signed off by both of you (Eric+Sébastien)
and committed by Junio.
So it's not a mistake ? I thought the 'From:' line was the email header
as generated by git send-email that got wrongly included in the body.
My mistake then.
From: Eric Sunshine <hidden> Date: 2016-06-15 23:04:51
On Wed, May 20, 2015 at 3:22 PM, Sébastien Guimmara
[off-list ref] wrote:
The ultimate goal is for "git help" to display common commands in
groups rather than alphabetically. As a first step, define the
groups in a new block, and then assign a group to each
common command.
Add a block at the beginning of command-list.txt:
init start a working area (see also: git help tutorial)
worktree work on the current change (see also:[...]
info examine the history and state (see also: git [...]
history grow, mark and tweak your history
remote collaborate (see also: git help workflows)
storing information about common commands group, then map each common
command to a group:
git-add mainporcelain common worktree
Signed-off-by: Sébastien Guimmara <redacted>
---
command-list.txt | 50 ++++++++++++++++++++++++++++++--------------------
1 file changed, 30 insertions(+), 20 deletions(-)
Hmm, did your update to Documentation/technical/new-command.txt get
lost? I don't see it any of the patches, but would have expected it to
be included in this patch which introduces the "common groups"
section.
@@ -1,3 +1,13 @@+# common commands are grouped by themes output by 'git help'+# map each common command in the command list to one of these groups.
Discussed previously: It also would be a good idea to mention that the
order in which "git help" displays the groups themselves is the order
they are declared here. Maybe just add one more line between the two
you already have above:
# groups are output by 'git help' in the order declared here.
+### common groups
In the block below, the "### command list" line is protected by a "#
do not molest the next line" warning. Perhaps the same should be done
here? Alternately, make them more compact by incorporating the
warning:
### common groups (do not change this line)
...
### command list (do not change this line)
?
+init start a working area (see also: git help tutorial)
+worktree work on the current change (see also: git help everyday)
+info examine the history and state (see also: git help revisions)
+history grow, mark and tweak your common history
+remote collaborate (see also: git help workflows)
+
+# List of known git commands.
# do not molest the next line
### command list
# command name category [deprecated] [common]
On Wed, May 20, 2015 at 3:22 PM, Sébastien Guimmara
[off-list ref] wrote:
quoted
The ultimate goal is for "git help" to display common commands in
groups rather than alphabetically. As a first step, define the
groups in a new block, and then assign a group to each
common command.
Add a block at the beginning of command-list.txt:
init start a working area (see also: git help tutorial)
worktree work on the current change (see also:[...]
info examine the history and state (see also: git [...]
history grow, mark and tweak your history
remote collaborate (see also: git help workflows)
storing information about common commands group, then map each common
command to a group:
git-add mainporcelain common worktree
Signed-off-by: Sébastien Guimmara <redacted>
---
command-list.txt | 50 ++++++++++++++++++++++++++++++--------------------
1 file changed, 30 insertions(+), 20 deletions(-)
Hmm, did your update to Documentation/technical/new-command.txt get
lost? I don't see it any of the patches, but would have expected it to
be included in this patch which introduces the "common groups"
section.
Ah, you're right. A commit got lost in the process. Will fix that. Thanks.
@@ -1,3 +1,13 @@+# common commands are grouped by themes output by 'git help'+# map each common command in the command list to one of these groups.
Discussed previously: It also would be a good idea to mention that the
order in which "git help" displays the groups themselves is the order
they are declared here. Maybe just add one more line between the two
you already have above:
# groups are output by 'git help' in the order declared here.
Indeed, I'll add the mention.
quoted
+### common groups
In the block below, the "### command list" line is protected by a "#
do not molest the next line" warning. Perhaps the same should be done
here? Alternately, make them more compact by incorporating the
warning:
### common groups (do not change this line)
...
### command list (do not change this line)
?
Yes, it's better. I shall modify this.
quoted
+init start a working area (see also: git help tutorial)
+worktree work on the current change (see also: git help everyday)
+info examine the history and state (see also: git help revisions)
+history grow, mark and tweak your common history
+remote collaborate (see also: git help workflows)
+
+# List of known git commands.
# do not molest the next line
### command list
# command name category [deprecated] [common]
From: Ramsay Jones <hidden> Date: 2016-06-15 23:04:51
On 20/05/15 20:23, Sébastien Guimmara wrote:
'git help' shows common commands in alphabetical order:
The most commonly used git commands are:
add Add file contents to the index
bisect Find by binary search the change that introduced a bug
branch List, create, or delete branches
checkout Checkout a branch or paths to the working tree
clone Clone a repository into a new directory
commit Record changes to the repository
[...]
without any indication of how commands relate to high-level
concepts or each other. Revise the output to explain their relationship
with the typical Git workflow:
These are common Git commands used in various situations:
start a working area (see also: git help tutorial)
clone Clone a repository into a new directory
init Create an empty Git repository or reinitialize [...]
work on the current change (see also: git help everyday)
add Add file contents to the index
reset Reset current HEAD to the specified state
examine the history and state (see also: git help revisions)
log Show commit logs
status Show the working tree status
[...]
Helped-by: Eric Sunshine [off-list ref]
Signed-off-by: Ramsay Jones <redacted>
This should be (at most) 'Helped-by:' - my 'contribution' was
so minor that even a 'Helped-by:' is generous! :-D
ATB,
Ramsay Jones
@@ -218,17 +218,39 @@ void list_commands(unsigned int colopts,}}+staticintcmd_group_cmp(constvoid*elem1,constvoid*elem2)+{+conststructcmdname_help*e1=elem1;+conststructcmdname_help*e2=elem2;++if(e1->group<e2->group)+return-1;+if(e1->group>e2->group)+return1;+returnstrcmp(e1->name,e2->name);+}+voidlist_common_cmds_help(void){inti,longest=0;+intcurrent_grp=-1;for(i=0;i<ARRAY_SIZE(common_cmds);i++){if(longest<strlen(common_cmds[i].name))longest=strlen(common_cmds[i].name);}-puts(_("The most commonly used git commands are:"));+qsort(common_cmds,ARRAY_SIZE(common_cmds),+sizeof(common_cmds[0]),cmd_group_cmp);++puts(_("These are common Git commands used in various situations:"));+for(i=0;i<ARRAY_SIZE(common_cmds);i++){+if(common_cmds[i].group!=current_grp){+printf("\n%s\n",_(common_cmd_groups[common_cmds[i].group]));+current_grp=common_cmds[i].group;+}+printf(" %s ",common_cmds[i].name);mput_char(' ',longest-strlen(common_cmds[i].name));puts(_(common_cmds[i].help));