All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Rasmus Villemoes <rv@rasmusvillemoes.dk>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] help: allow redirecting to help for aliased command
Date: Wed, 26 Sep 2018 08:16:36 -0700	[thread overview]
Message-ID: <xmqqzhw4mgq3.fsf@gitster-ct.c.googlers.com> (raw)
In-Reply-To: <20180926102636.30691-1-rv@rasmusvillemoes.dk> (Rasmus Villemoes's message of "Wed, 26 Sep 2018 12:26:36 +0200")

Rasmus Villemoes <rv@rasmusvillemoes.dk> writes:

> I often use 'git <cmd> --help' as a quick way to get the documentation
> for a command. However, I've also trained my muscle memory to use my
> aliases (cp=cherry-pick, co=checkout etc.), which means that I often end
> up doing
>
>   git cp --help
>
> to which git correctly informs me that cp is an alias for
> cherry-pick. However, I already knew that, and what I really wanted was
> the man page for the cherry-pick command.
>
> This introduces a help.followAlias config option that transparently
> redirects to (the first word of) the alias text (provided of course it
> is not a shell command), similar to the option for autocorrect of
> misspelled commands.

While I do agree with you that it would sometimes be very handy if
"git cp --help" behaved identically to "git cherry-pick --help" just
like "git cp -h" behaves identically to "git cherry-pick -h" when
you have "[alias] cp = cherry-pick", I do not think help.followAlias
configuration is a good idea.  I may know, perhaps because I use it
all the time, by heart that "cp" is aliased to "cherry-pick" and
want "git cp --help" to directly give me the manpage, but I may not
remember if "co" was commit or checkout and want to be concisely
told that it is aliased to checkout without seeing the full manpage.
Which means you'd want some way to command line override anyway, and
having to say "git -c help.followAlias=false cp --help" is not a
great solution.

If we expect users to use "git cp --help" a lot more often than "git
help cp" (or the other way around), one way to give a nicer experience
may be to unconditionally make "git cp --help" to directly show the
manpage of cherry-pick, while keeping "git help cp" to never do
that.  Then those who want to remember what "co" is aliased to can
ask "git help co".

> +		/*
> +		 * We use split_cmdline() to get the first word of the
> +		 * alias, to ensure that we use the same rules as when
> +		 * the alias is actually used. split_cmdline()
> +		 * modifies alias in-place.
> +		 */
> +		count = split_cmdline(alias, &argv);
> +		if (count < 0)
> +			die("Bad alias.%s string: %s", cmd,
> +			    split_cmdline_strerror(count));
> +
> +		if (follow_alias > 0) {
> +			fprintf_ln(stderr,
> +				   _("Continuing to help for %s in %0.1f seconds."),
> +				   alias, follow_alias/10.0);
> +			sleep_millisec(follow_alias * 100);
> +		}
> +		return alias;

If you have "[alias] cp = cherry-pick -n", split_cmdline discards
"-n" and the follow-alias prompt does not even tell you that it did
so, and you get "git help cherry-pick".  This code somehow expects
you to know to jump to the section that describes the "--no-commit"
option.  I do not think that is a reasonable expectation.

When you have "[alias] cp = cherry-pick -n", "git cp --help" should
not do "git help cherry-pick".  Only a single word that exactly
matches a git command should get this treatment.

>  	}
>  
>  	if (exclude_guides)

  parent reply	other threads:[~2018-09-26 15:16 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-26 10:26 [PATCH] help: allow redirecting to help for aliased command Rasmus Villemoes
2018-09-26 14:37 ` Taylor Blau
2018-09-26 15:19   ` Duy Nguyen
2018-09-28  7:44     ` Rasmus Villemoes
2018-09-26 15:30   ` Junio C Hamano
2018-09-26 18:09     ` Taylor Blau
2018-09-26 18:20       ` Junio C Hamano
2018-09-26 15:16 ` Duy Nguyen
2018-09-26 15:16 ` Junio C Hamano [this message]
2018-09-26 18:12   ` Taylor Blau
2018-09-28  7:53     ` Rasmus Villemoes
2018-09-26 18:49   ` Jeff King
2018-09-26 19:31     ` Junio C Hamano
2018-09-28  8:18     ` Rasmus Villemoes
2018-09-29  8:21       ` Jeff King
2018-09-29 17:39         ` Junio C Hamano
2018-09-30  4:27           ` Jeff King
2018-09-30  5:27             ` Junio C Hamano
2018-09-30  5:53               ` Jeff King
2018-09-28  7:40   ` Rasmus Villemoes
2018-09-28 17:00     ` Junio C Hamano
2018-10-01 11:21 ` [PATCH v2 1/3] help: redirect to aliased commands for "git cmd --help" Rasmus Villemoes
2018-10-01 11:21   ` [PATCH v2 2/3] git.c: handle_alias: prepend alias info when first argument is -h Rasmus Villemoes
2018-10-03  2:16     ` Jeff King
2018-10-01 11:21   ` [PATCH v2 3/3] git-help.txt: document "git help cmd" vs "git cmd --help" for aliases Rasmus Villemoes
2018-10-03  2:18     ` Jeff King
2018-10-03  6:25       ` Rasmus Villemoes
2018-10-03  2:13   ` [PATCH v2 1/3] help: redirect to aliased commands for "git cmd --help" Jeff King
2018-10-03  6:24     ` Rasmus Villemoes
2018-10-03  7:06       ` Jeff King
2018-10-03 11:42   ` [PATCH v3 0/3] alias help tweaks Rasmus Villemoes
2018-10-03 11:42     ` [PATCH v3 1/3] help: redirect to aliased commands for "git cmd --help" Rasmus Villemoes
2018-10-05  8:19       ` Junio C Hamano
2018-10-05 10:22         ` Rasmus Villemoes
2018-10-05 16:47           ` Junio C Hamano
2018-10-03 11:42     ` [PATCH v3 2/3] git.c: handle_alias: prepend alias info when first argument is -h Rasmus Villemoes
2018-10-03 11:42     ` [PATCH v3 3/3] git-help.txt: document "git help cmd" vs "git cmd --help" for aliases Rasmus Villemoes
2018-10-04  0:10     ` [PATCH v3 0/3] alias help tweaks Jeff King
2018-10-09 11:59     ` [PATCH v4 " Rasmus Villemoes
2018-10-09 11:59       ` [PATCH v4 1/3] help: redirect to aliased commands for "git cmd --help" Rasmus Villemoes
2018-10-09 11:59       ` [PATCH v4 2/3] git.c: handle_alias: prepend alias info when first argument is -h Rasmus Villemoes
2018-10-09 11:59       ` [PATCH v4 3/3] git-help.txt: document "git help cmd" vs "git cmd --help" for aliases Rasmus Villemoes
2018-10-12  3:17       ` [PATCH v4 0/3] alias help tweaks Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqzhw4mgq3.fsf@gitster-ct.c.googlers.com \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=rv@rasmusvillemoes.dk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.