git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 1/2] sendemail: teach git-send-email to list aliases

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Nov 17, 2015, 07:20 UTC
Message-ID
<20151117072049.GA25414@flurp.local>
In-Reply-To
<1447719035.23262.17.camel@intel.com>
On Tue, Nov 17, 2015 at 12:10:35AM +0000, Keller, Jacob E wrote:
Show 10 quoted lines
> On Mon, 2015-11-16 at 18:50 -0500, Eric Sunshine wrote:
> > It should be possible to extract the alias within the shell itself
> > without a separate process. For instance:
> > 
> >     read alias rest
> > 
> > will leave the first token in $alias and the remainder of the line in
> > $rest, and it's all done within the shell process.
> 
> I'll look into this :)

My reason for asking is concern about scripts possibly breaking if someone comes along and wants to "fix" --dump-aliases to also dump the alias expansions. One possibility is just to punt today and say that when that feature is needed in the future, then that someone can add a --verbose option to complement --dump-aliases which would emit the alias expansions as well. One nice thing about punting at this point is that we don't (today) have to define a format for the output of the expansions. If we did want to think about it, one verbose, non-ambiguous format would be to show the alias name on a line by itself, and each expansion value on a line by itself indented by a tab. For instance:

    managers
        bob
	fred
    devs
        jane
	john
Show 6 quoted lines
> > Also, shouldn't --list-aliases (or --dump-aliases) be mutually
> > exclusive with many of the other options? New tests would check such
> > exclusivity as well.
> 
> I am at a loss for how to do that correctly in the perl. Help would be
> appreciated here.

Since git-send-email.perl already configures GetOpt::Long with the 'pass_through' option, one possibility would be to invoke GetOptions() once for --list-aliases (or --dump-aliases), and then again for the normal options. Doing so may be a bit ugly; on the other hand, it does indicate pretty clearly that --list-aliases is a distinct "mode" of operation. On top of your patch, it might look something like this:

--- 8< ---
diff --git a/git-send-email.perl b/git-send-email.perl
index ee14894..cada5ea 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -296,6 +296,12 @@ $SIG{INT}  = \&signal_handler;
 
 my $help;
 my $rc = GetOptions("h" => \$help,
+		    "list-aliases" => \$list_aliases);
+usage() unless $rc;
+die "--list-aliases incompatible with other options\n"
+	if !$help and $list_aliases and @ARGV;
+
+$rc = GetOptions(
 		    "sender|from=s" => \$sender,
                     "in-reply-to=s" => \$initial_reply_to,
 		    "subject=s" => \$initial_subject,
@@ -349,7 +355,6 @@ my $rc = GetOptions("h" => \$help,
 		    "force" => \$force,
 		    "xmailer!" => \$use_xmailer,
 		    "no-xmailer" => sub {$use_xmailer = 0},
-                    "list-aliases" => \$list_aliases,
 	 );
 
 usage() if $help;
--- 8< ---

Though, it may be overkill for this minor use-case.
Previous: Keller, Jacob ENext: Jacob Keller
Message 11 of 14 in “sendemail: teach git-send-email to list aliases”
  1. 1/2 sendemail: teach git-send-email to list aliasesJacob Keller, Nov 15, 2015
  2. 2/2 completion: add support for completing email aliasesJacob Keller, Nov 15, 2015
  3. Eric SunshineNov 16, 2015
  4. Keller, Jacob ENov 16, 2015
  5. Eric SunshineNov 16, 2015
  6. Keller, Jacob ENov 16, 2015
  7. Eric SunshineNov 16, 2015
  8. Eric SunshineNov 16, 2015
  9. Keller, Jacob ENov 17, 2015
  10. Keller, Jacob ENov 17, 2015
  11. Eric SunshineNov 17, 2015
  12. Jacob KellerNov 17, 2015
  13. SZEDER GáborNov 17, 2015
  14. Jacob KellerNov 17, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.