Re: [PATCH] git help: sort commands by topi
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Feb 18, 2008, 10:15 UTC
- Message-ID
- <7vlk5ipo3c.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <87hcg77i6i.fsf@gmail.com>
"Santi Bejar" <sbejar@gmail.com> writes:
> P.D: Does anyone know how can I know the reason for the drops?
I'd love to know that myself.
It would be interesting to install the kernel's checkpatch.pl as anti-bogo-style filter on the mailing list ;-)
Show 14 quoted lines
> diff --git a/generate-cmdlist.sh b/generate-cmdlist.sh
> index a2913c2..ec623dd 100755
> --- a/generate-cmdlist.sh
> +++ b/generate-cmdlist.sh
> @@ -3,22 +3,36 @@
> echo "/* Automatically generated by $0 */
> struct cmdname_help
> {
> - char name[16];
> + char name[23];
> char help[80];
> + char topic[22];
> + char subtopic[10];
> };These limits are very magic. If you are generating them in the script perhaps you would want to count bytes?
I dunno. Honestly, I am not very interested in this patch myself.
Side Note: my not being interested does not mean I
strongly oppose to its inclusion (I do not even care).
It is just that I won't be the one who will be pushing
for its inclusion, and you would want supporters other
than me to push for it.Show 7 quoted lines
> -static struct cmdname_help common_cmds[] = {"
> +struct topicname_help
> +{
> + char name[23];
> + char subtopic[10];
> + char help[80];
> +};Likewise.
Show 8 quoted lines
> -sed -n -e 's/^git-\([^ ]*\)[ ].* common.*/\1/p' command-list.txt |
> -sort |
> -while read cmd
> +static struct cmdname_help cmd_list[] = {"
> +
> +sed -n -e 's/^git-\([^ ]*\)\(.*\)$/\1\2/p' command-list.txt |
> +grep -v deprecated | sort |
> +while read cmd topic subtopicI do not like this pipeline to send output of sed to an _overly_ loose grep. What happens when we introduce "git-deprecated" command later?
> do > sed -n ' > - /NAME/,/git-'"$cmd"'/H > + /^NAME$/,/git-'"$cmd"'/H
Good tightening.
Show 7 quoted lines
> ${
> x
> - s/.*git-'"$cmd"' - \(.*\)/ {"'"$cmd"'", "\1"},/
> + s/.*git-'"$cmd"' - \(.*\)/ {"'"$cmd"'", "\1",/
> p
> }' "Documentation/git-$cmd.txt"
> + echo "\"$topic\", \"$subtopic\" },"Breaks nicely indented entries like:
{"add", "Add file contents...Show 6 quoted lines
> diff --git a/help.c b/help.c > index 6e28ad9..0e3a350 100644 > --- a/help.c > +++ b/help.c > @@ -262,20 +262,48 @@ static void list_commands(void) > ...
Show 7 quoted lines
> + for (i = 0; i < ARRAY_SIZE(cmd_list); i++) {
> + if (strcmp(cmd_list[i].topic, topic)) continue;
> + if (!strcmp(topic_list[i].subtopic,"") &&
> + strcmp(cmd_list[i].subtopic, subtopic)) continue;
> + if (longest < strlen(cmd_list[i].name))
> + longest = strlen(cmd_list[i].name);
> }Style. A statement comes on its own line, even if it is a "continue" statement.
Show 9 quoted lines
> + for (i = 0; i < ARRAY_SIZE(cmd_list); i++) {
> + if (strcmp(cmd_list[i].topic, topic)) continue;
> + if (!strcmp(topic_list[i].subtopic,"") &&
> + strcmp(cmd_list[i].subtopic, subtopic)) continue;
> + printf(" %s ", cmd_list[i].name);
> + mput_char(' ', longest - strlen(cmd_list[i].name));
> + puts(cmd_list[i].help);
> + }
> + putchar('\n');Likewise.
Show 8 quoted lines
> +void list_topics_help()
> +{
> + int i;
> + for (i = 0; i < ARRAY_SIZE(topic_list); i++) {
> + if(strcmp(topic_list[i].subtopic,"")) continue;
> + list_topic_cmds_help(topic_list[i].name,"");
> }
> }Style. Have a SP before '(' if the previous token is not a function name.
Show 13 quoted lines
> diff --git a/topic-list.txt b/topic-list.txt > new file mode 100644 > index 0000000..2ba11a9 > --- /dev/null > +++ b/topic-list.txt > @@ -0,0 +1,12 @@ > +# List of known git topics. > +# topic name help > +common The most commonly used commands > +mainporcelain Main porcelain commands > ... > +synchelpers Synching helper commands > +purehelpers Internal helper commands
I wonder if this can be shared with the section headings of Documentation/git.txt; either generate the section headings from this file, or generate this file from the section headings.