* [PATCH] Modified the default git help message to be grouped by topic
@ 2008-12-01 17:30 Scott Chacon
2008-12-01 18:32 ` Jeff King
0 siblings, 1 reply; 12+ messages in thread
From: Scott Chacon @ 2008-12-01 17:30 UTC (permalink / raw)
To: git; +Cc: gitster
It's difficult to process 21 commands (which is what is output
by default for git when no command is given). I've re-grouped
them into 4 groups of 5 or 6 commands each, which I think is
clearer and easier for new users to process.
As discussed at the GitTogether.
Signed-off-by: Scott Chacon <schacon@gmail.com>
---
This makes the 'git' (with no arguments) command look like this:
http://gist.github.com/20553
This won't automatically update with the common-commands.txt file,
but I think it is easier to parse for the command you may be looking
for.
builtin-help.c | 42 +++++++++++++++++++++++++++++-------------
1 files changed, 29 insertions(+), 13 deletions(-)
diff --git a/builtin-help.c b/builtin-help.c
index f076efa..562d5d1 100644
--- a/builtin-help.c
+++ b/builtin-help.c
@@ -277,19 +277,35 @@ static struct cmdnames main_cmds, other_cmds;
void list_common_cmds_help(void)
{
- int i, longest = 0;
-
- 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:");
- for (i = 0; i < ARRAY_SIZE(common_cmds); i++) {
- printf(" %s ", common_cmds[i].name);
- mput_char(' ', longest - strlen(common_cmds[i].name));
- puts(common_cmds[i].help);
- }
+ puts("The most commonly used git commands are:\n\
+\n\
+Basic Commands\n\
+ init Create an empty git repository or reinitialize an existing one\n\
+ add Add file contents to the staging area\n\
+ status Show the working tree and staging area status\n\
+ commit Record changes in the staging area to the repository\n\
+ rm Remove files from the working tree and from the index\n\
+ mv Move or rename a file, a directory, or a symlink\n\
+\n\
+History Commands\n\
+ log Show commit log history\n\
+ diff Show changes between commits, commit and working tree, etc\n\
+ grep Print lines in git tracked files matching a pattern\n\
+ reset Reset current HEAD to the specified state\n\
+ show Show various types of objects\n\
+\n\
+Branch Commands\n\
+ checkout Checkout a branch or paths to the working tree\n\
+ branch List, create, or delete branches\n\
+ merge Join two or more development histories together\n\
+ rebase Apply changes introduced in one branch onto another\n\
+ tag Create, list, delete or verify a tag object signed with GPG\n\
+\n\
+Remote Commands\n\
+ clone Clone a repository into a new directory\n\
+ fetch Download objects and refs from another repository\n\
+ pull Fetch from and merge with another repository or a local branch\n\
+ push Update remote refs along with associated objects");
}
static int is_git_command(const char *s)
--
1.6.0.8.gc9c8
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH] Modified the default git help message to be grouped by topic
2008-12-01 17:30 [PATCH] Modified the default git help message to be grouped by topic Scott Chacon
@ 2008-12-01 18:32 ` Jeff King
2008-12-02 1:45 ` Junio C Hamano
0 siblings, 1 reply; 12+ messages in thread
From: Jeff King @ 2008-12-01 18:32 UTC (permalink / raw)
To: Scott Chacon; +Cc: git, gitster
On Mon, Dec 01, 2008 at 09:30:37AM -0800, Scott Chacon wrote:
> It's difficult to process 21 commands (which is what is output
> by default for git when no command is given). I've re-grouped
> them into 4 groups of 5 or 6 commands each, which I think is
> clearer and easier for new users to process.
I like it (and I think the categorizations look reasonable, which is
something that I recall caused some discussion at the GitTogether).
The only downside I see is that we're now >24 lines.
> This won't automatically update with the common-commands.txt file,
> but I think it is easier to parse for the command you may be looking
> for.
Personally, I don't see a big problem. This is not a list that should
change very frequently, and there is extra information here that would
be annoying to encode in the list. But since the "common" flag in
command-list.txt and the common-cmds.h file would no longer be used,
they should probably be removed.
-Peff
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] Modified the default git help message to be grouped by topic
2008-12-01 18:32 ` Jeff King
@ 2008-12-02 1:45 ` Junio C Hamano
2008-12-02 6:10 ` Scott Chacon
0 siblings, 1 reply; 12+ messages in thread
From: Junio C Hamano @ 2008-12-02 1:45 UTC (permalink / raw)
To: Jeff King; +Cc: Scott Chacon, git, gitster
Jeff King <peff@peff.net> writes:
> On Mon, Dec 01, 2008 at 09:30:37AM -0800, Scott Chacon wrote:
>
>> It's difficult to process 21 commands (which is what is output
>> by default for git when no command is given). I've re-grouped
>> them into 4 groups of 5 or 6 commands each, which I think is
>> clearer and easier for new users to process.
>
> I like it (and I think the categorizations look reasonable, which is
> something that I recall caused some discussion at the GitTogether).
>
> The only downside I see is that we're now >24 lines.
If this list is meant to show "the most commonly used" basics, then you
can trim the list somewhat. For example, "rm" and "mv" can be safely
discarded, "status" can be replaced with "diff", and "diff" can be removed
from "History Commands".
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] Modified the default git help message to be grouped by topic
2008-12-02 1:45 ` Junio C Hamano
@ 2008-12-02 6:10 ` Scott Chacon
2008-12-02 20:11 ` James Pickens
0 siblings, 1 reply; 12+ messages in thread
From: Scott Chacon @ 2008-12-02 6:10 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Jeff King, git
Hi,
On Mon, Dec 1, 2008 at 5:45 PM, Junio C Hamano <gitster@pobox.com> wrote:
> Jeff King <peff@peff.net> writes:
>
>> On Mon, Dec 01, 2008 at 09:30:37AM -0800, Scott Chacon wrote:
>>
>>> It's difficult to process 21 commands (which is what is output
>>> by default for git when no command is given). I've re-grouped
>>> them into 4 groups of 5 or 6 commands each, which I think is
>>> clearer and easier for new users to process.
>>
>> I like it (and I think the categorizations look reasonable, which is
>> something that I recall caused some discussion at the GitTogether).
>>
>> The only downside I see is that we're now >24 lines.
>
> If this list is meant to show "the most commonly used" basics, then you
> can trim the list somewhat. For example, "rm" and "mv" can be safely
> discarded, "status" can be replaced with "diff", and "diff" can be removed
> from "History Commands".
>
I sent a new patch that removes 'rm' and 'mv' and removes the
common-cmd.h build process. I did keep the 'status' command, since in
my personal experience people tend to like having that command.
Scott
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] Modified the default git help message to be grouped by topic
2008-12-02 6:10 ` Scott Chacon
@ 2008-12-02 20:11 ` James Pickens
2008-12-02 21:33 ` Boyd Stephen Smith Jr.
2008-12-02 22:55 ` Johannes Schindelin
0 siblings, 2 replies; 12+ messages in thread
From: James Pickens @ 2008-12-02 20:11 UTC (permalink / raw)
To: Scott Chacon; +Cc: Junio C Hamano, Jeff King, git
On Mon, Dec 1, 2008 at 11:10 PM, Scott Chacon <schacon@gmail.com> wrote:
> Hi,
>
> On Mon, Dec 1, 2008 at 5:45 PM, Junio C Hamano <gitster@pobox.com> wrote:
>> If this list is meant to show "the most commonly used" basics, then you
>> can trim the list somewhat. For example, "rm" and "mv" can be safely
>> discarded, "status" can be replaced with "diff", and "diff" can be removed
>> from "History Commands".
>>
>
> I sent a new patch that removes 'rm' and 'mv' and removes the
> common-cmd.h build process. I did keep the 'status' command, since in
> my personal experience people tend to like having that command.
Even though 'rm' might not be used very often, I think it's an important
enough command that it should not be removed from the 'basics' list.
AFAIK, the only other way to delete a file is 'rm file' followed by 'git
add -u' or 'git commit -a'. Imagine a git newbie trying to figure that
out.
I'm tempted to say the same thing about 'mv' as well. And FWIW, I use
'status' a lot more than I use 'diff', so I would vote to keep 'status' in
the list too.
James
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] Modified the default git help message to be grouped by topic
2008-12-02 20:11 ` James Pickens
@ 2008-12-02 21:33 ` Boyd Stephen Smith Jr.
2008-12-02 22:55 ` Johannes Schindelin
1 sibling, 0 replies; 12+ messages in thread
From: Boyd Stephen Smith Jr. @ 2008-12-02 21:33 UTC (permalink / raw)
To: git; +Cc: James Pickens, Scott Chacon, Junio C Hamano, Jeff King
[-- Attachment #1: Type: text/plain, Size: 1254 bytes --]
On Tuesday 02 December 2008, "James Pickens" <jepicken@gmail.com> wrote
about 'Re: [PATCH] Modified the default git help message to be grouped by
topic':
>On Mon, Dec 1, 2008 at 11:10 PM, Scott Chacon <schacon@gmail.com> wrote:
>> I sent a new patch that removes 'rm' and 'mv' and removes the
>> common-cmd.h build process. I did keep the 'status' command, since in
>> my personal experience people tend to like having that command.
>
>Even though 'rm' might not be used very often, I think it's an important
>enough command that it should not be removed from the 'basics' list.
>AFAIK, the only other way to delete a file is 'rm file' followed by 'git
>add -u' or 'git commit -a'. Imagine a git newbie trying to figure that
>out.
>
>I'm tempted to say the same thing about 'mv' as well. And FWIW, I use
>'status' a lot more than I use 'diff', so I would vote to keep 'status'
> in the list too.
x2 to all of both paragraphs, except that I'm not just "tempted"; I do say
that mv should be kept.
--
Boyd Stephen Smith Jr. ,= ,-_-. =.
bss03@volumehost.net ((_/)o o(\_))
ICQ: 514984 YM/AIM: DaTwinkDaddy `-'(. .)`-'
http://iguanasuicide.org/ \_/
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] Modified the default git help message to be grouped by topic
2008-12-02 20:11 ` James Pickens
2008-12-02 21:33 ` Boyd Stephen Smith Jr.
@ 2008-12-02 22:55 ` Johannes Schindelin
2008-12-02 23:30 ` Jeff King
1 sibling, 1 reply; 12+ messages in thread
From: Johannes Schindelin @ 2008-12-02 22:55 UTC (permalink / raw)
To: James Pickens; +Cc: Scott Chacon, Junio C Hamano, Jeff King, git
Hi,
On Tue, 2 Dec 2008, James Pickens wrote:
> On Mon, Dec 1, 2008 at 11:10 PM, Scott Chacon <schacon@gmail.com> wrote:
>
> > On Mon, Dec 1, 2008 at 5:45 PM, Junio C Hamano <gitster@pobox.com> wrote:
> >> If this list is meant to show "the most commonly used" basics, then
> >> you can trim the list somewhat. For example, "rm" and "mv" can be
> >> safely discarded, "status" can be replaced with "diff", and "diff"
> >> can be removed from "History Commands".
> >
> > I sent a new patch that removes 'rm' and 'mv' and removes the
> > common-cmd.h build process. I did keep the 'status' command, since in
> > my personal experience people tend to like having that command.
>
> Even though 'rm' might not be used very often, I think it's an important
> enough command that it should not be removed from the 'basics' list.
> AFAIK, the only other way to delete a file is 'rm file' followed by 'git
> add -u' or 'git commit -a'. Imagine a git newbie trying to figure that
> out.
>
> I'm tempted to say the same thing about 'mv' as well. And FWIW, I use
> 'status' a lot more than I use 'diff', so I would vote to keep 'status'
> in the list too.
If the whole thing gets longer than 24 lines, we have to leave some things
out. Personally, I consider rm and mv unimportant enough that they could
be shown in an extended list, but be left out of the summary page.
Ciao,
Dscho
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] Modified the default git help message to be grouped by topic
2008-12-02 22:55 ` Johannes Schindelin
@ 2008-12-02 23:30 ` Jeff King
2008-12-02 23:39 ` Scott Chacon
2008-12-03 0:10 ` Junio C Hamano
0 siblings, 2 replies; 12+ messages in thread
From: Jeff King @ 2008-12-02 23:30 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: James Pickens, Scott Chacon, Junio C Hamano, git
On Tue, Dec 02, 2008 at 11:55:03PM +0100, Johannes Schindelin wrote:
> If the whole thing gets longer than 24 lines, we have to leave some things
> out. Personally, I consider rm and mv unimportant enough that they could
> be shown in an extended list, but be left out of the summary page.
For the record, the current output is 26 lines, plus you probably want
to account for 1 line of the user's next shell prompt. So we are 3 lines
over already.
Scott's proposal is about grouping the commands more sensibly. Many of
the complaints are about the length of the output. Maybe we should scrap
having a list of commands altogether and just point at section-specific
documentation, each of which could discuss basic commands related to it.
I think there has been mention of task-oriented documentation pointers
before, and I think this is a place where we would want it.
-Peff
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] Modified the default git help message to be grouped by topic
2008-12-02 23:30 ` Jeff King
@ 2008-12-02 23:39 ` Scott Chacon
2008-12-03 0:10 ` Junio C Hamano
1 sibling, 0 replies; 12+ messages in thread
From: Scott Chacon @ 2008-12-02 23:39 UTC (permalink / raw)
To: Jeff King; +Cc: Johannes Schindelin, James Pickens, Junio C Hamano, git
Hi,
On Tue, Dec 2, 2008 at 3:30 PM, Jeff King <peff@peff.net> wrote:
> On Tue, Dec 02, 2008 at 11:55:03PM +0100, Johannes Schindelin wrote:
>
>> If the whole thing gets longer than 24 lines, we have to leave some things
>> out. Personally, I consider rm and mv unimportant enough that they could
>> be shown in an extended list, but be left out of the summary page.
>
> For the record, the current output is 26 lines, plus you probably want
> to account for 1 line of the user's next shell prompt. So we are 3 lines
> over already.
>
> Scott's proposal is about grouping the commands more sensibly. Many of
> the complaints are about the length of the output. Maybe we should scrap
> having a list of commands altogether and just point at section-specific
> documentation, each of which could discuss basic commands related to it.
I've always felt it was helpful to newcomers to have that page there
with the couple dozen commands you might use - mostly in case you've
forgotten what the exact command name was. Hg does something like 'hg
help' which gives you more commands, but I feel like just having the
quick cheat-sheet is generally really helpful. If someone just wants
to remember what the command 'checkout' was, I wouldn't want them to
have to go to two places - one to look up what the task document was
and then another to view that.
My $0.02
> I think there has been mention of task-oriented documentation pointers
> before, and I think this is a place where we would want it.
>
> -Peff
>
Scott
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] Modified the default git help message to be grouped by topic
2008-12-02 23:30 ` Jeff King
2008-12-02 23:39 ` Scott Chacon
@ 2008-12-03 0:10 ` Junio C Hamano
2008-12-03 0:37 ` Jeff King
2008-12-03 0:47 ` Jakub Narebski
1 sibling, 2 replies; 12+ messages in thread
From: Junio C Hamano @ 2008-12-03 0:10 UTC (permalink / raw)
To: Jeff King; +Cc: Johannes Schindelin, James Pickens, Scott Chacon, git
Jeff King <peff@peff.net> writes:
> On Tue, Dec 02, 2008 at 11:55:03PM +0100, Johannes Schindelin wrote:
>
>> If the whole thing gets longer than 24 lines, we have to leave some things
>> out. Personally, I consider rm and mv unimportant enough that they could
>> be shown in an extended list, but be left out of the summary page.
>
> For the record, the current output is 26 lines, plus you probably want
> to account for 1 line of the user's next shell prompt. So we are 3 lines
> over already.
>
> Scott's proposal is about grouping the commands more sensibly. Many of
> the complaints are about the length of the output. Maybe we should scrap
> having a list of commands altogether and just point at section-specific
> documentation, each of which could discuss basic commands related to it.
>
> I think there has been mention of task-oriented documentation pointers
> before, and I think this is a place where we would want it.
It might not be a bad idea to make this "top page help" into an
interactive hierarchical help topic browser. You would start a page that
might look like this:
Bootstrapping -- preparing an area to work in
init, clone
Basic -- review, undo and record your changes
diff, status, checkout <path>, add, reset, commit
History -- inspect what you have now, and what happened before
log, blame, grep, show
Branching and Merging -- build and use alternate histories
branch, checkout -b, merge, rebase
Working with Others
remote, fetch, pull, push
with each of the command and the heading being a "link" (use ncurses for
that). If you choose the leaf-level command (say, 'diff'), you will get
the git-diff(1) manual page. If you pick one of the headings, say,
"Basic", you may get a more extended description of commands in the
category, that may include other basic commands not in the front page,
perhaps, like this:
(review)
diff HEAD: view what you did since the last commit
diff: view what you did since you last added
diff --cached: view what you already added
status: list what are added and changes yet to be added
(undo)
checkout path...: checkout a copy from the staging area
checkout HEAD path...: checkout a copy from the last commit
reset: undo earlier "git add" to the staging area
reset path...: do so only for the named paths
(record)
mv path1 path2: move the state of path1 to path2
rm path2: remove path2
rm --cached path2: do so without losing the copy in the working tree
add: add the contents to the staging area
add -p: do so interactively, hunk by hunk
commit: record the changes you added to the staging area
commit path...: record all the changes to the paths, ignoring
changes you added to the staging area for other paths.
and again each element can be a "link".
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] Modified the default git help message to be grouped by topic
2008-12-03 0:10 ` Junio C Hamano
@ 2008-12-03 0:37 ` Jeff King
2008-12-03 0:47 ` Jakub Narebski
1 sibling, 0 replies; 12+ messages in thread
From: Jeff King @ 2008-12-03 0:37 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Johannes Schindelin, James Pickens, Scott Chacon, git
On Tue, Dec 02, 2008 at 04:10:07PM -0800, Junio C Hamano wrote:
> It might not be a bad idea to make this "top page help" into an
> interactive hierarchical help topic browser. You would start a page that
> might look like this:
>
> Bootstrapping -- preparing an area to work in
> init, clone
> Basic -- review, undo and record your changes
> diff, status, checkout <path>, add, reset, commit
> History -- inspect what you have now, and what happened before
> log, blame, grep, show
> Branching and Merging -- build and use alternate histories
> branch, checkout -b, merge, rebase
> Working with Others
> remote, fetch, pull, push
Yes, that is the sort of thing I was thinking of. And I think your
layout addresses Scott's concern, which is to keep names of commands
available for quick reference. So really we are ditching the
descriptions.
> with each of the command and the heading being a "link" (use ncurses for
> that). If you choose the leaf-level command (say, 'diff'), you will get
I'm not sure we need anything so fancy. I was thinking of something
like:
Bootstrapping -- preparing an area to work in (bootstrapping)
init, clone
...
Working with Others (others)
remote, fetch, pull, push
Use "git help <subject>" for more help on one of these subjects, or
"git help <command>" for help with a specific command.
And maybe the "(bootstrapping)" could be typographically more obvious as
the subject keyword, but I think you get the point (and for
"Bootstrapping", it's obvious what the keyword would be, but for
"Working with Others" it's not).
And obviously something with ncurses would save you typing, but I have
no desire to recreate "info" or "lynx" here (and I also think that "git"
or "git foo" displaying help should remain non-interactive to cause the
least surprise).
-Peff
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] Modified the default git help message to be grouped by topic
2008-12-03 0:10 ` Junio C Hamano
2008-12-03 0:37 ` Jeff King
@ 2008-12-03 0:47 ` Jakub Narebski
1 sibling, 0 replies; 12+ messages in thread
From: Jakub Narebski @ 2008-12-03 0:47 UTC (permalink / raw)
To: git
Junio C Hamano wrote:
> Jeff King <peff@peff.net> writes:
>
>> On Tue, Dec 02, 2008 at 11:55:03PM +0100, Johannes Schindelin wrote:
>>
>>> If the whole thing gets longer than 24 lines, we have to leave some things
>>> out. Personally, I consider rm and mv unimportant enough that they could
>>> be shown in an extended list, but be left out of the summary page.
>>
>> For the record, the current output is 26 lines, plus you probably want
>> to account for 1 line of the user's next shell prompt. So we are 3 lines
>> over already.
>>
>> Scott's proposal is about grouping the commands more sensibly. Many of
>> the complaints are about the length of the output. Maybe we should scrap
>> having a list of commands altogether and just point at section-specific
>> documentation, each of which could discuss basic commands related to it.
>>
>> I think there has been mention of task-oriented documentation pointers
>> before, and I think this is a place where we would want it.
>
> It might not be a bad idea to make this "top page help" into an
> interactive hierarchical help topic browser.
Isn't that info?
--
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2008-12-03 0:48 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-12-01 17:30 [PATCH] Modified the default git help message to be grouped by topic Scott Chacon
2008-12-01 18:32 ` Jeff King
2008-12-02 1:45 ` Junio C Hamano
2008-12-02 6:10 ` Scott Chacon
2008-12-02 20:11 ` James Pickens
2008-12-02 21:33 ` Boyd Stephen Smith Jr.
2008-12-02 22:55 ` Johannes Schindelin
2008-12-02 23:30 ` Jeff King
2008-12-02 23:39 ` Scott Chacon
2008-12-03 0:10 ` Junio C Hamano
2008-12-03 0:37 ` Jeff King
2008-12-03 0:47 ` Jakub Narebski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).