Re: [PATCH v5 1/1] send-email: Add sendmail email aliases format

2015-05-26 Thread Allen Hubbe
On Tue, May 26, 2015 at 4:53 PM, Eric Sunshine  wrote:
> On Tue, May 26, 2015 at 3:41 PM, Allen Hubbe  wrote:
>> On Tue, May 26, 2015 at 3:10 PM, Eric Sunshine  
>> wrote:
>>> On Saturday, May 23, 2015, Allen Hubbe  wrote:
 +   # recognize lines that look like an alias
 +   elsif (/^(\S+)\s*:\s*(.+?)$/) {
>>>
>>> Observation: Given "foo:bar:baz", this regex will take "foo:bar" as
>>> the key, and "baz" as the value, which is probably not what was
>>> intended, however, it likely doesn't matter much in this case since
>>> colon isn't legal in an email address[1].
>>
>> That's a keen observation.  I think it would work simply to use a
>> non-greedy +? in the first capture group.
>
> Yes, that would work. Alternately: /^([^\s:]+)\s*:\s*(.+?)$/

I will use the non-greedy +? because the resulting expression is easier to read.

I will remove the non-greedy +? from the second capture group.  It
serves no purpose there any more.  It had been there to allow matching
a trailing backslash after the group, but now lines with trailing
backslash are ignored entirely before reaching here.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v5 1/1] send-email: Add sendmail email aliases format

2015-05-26 Thread Eric Sunshine
On Tue, May 26, 2015 at 3:41 PM, Allen Hubbe  wrote:
> On Tue, May 26, 2015 at 3:10 PM, Eric Sunshine  
> wrote:
>> On Saturday, May 23, 2015, Allen Hubbe  wrote:
>>> diff --git a/git-send-email.perl b/git-send-email.perl
>>> index e1e9b1460ced..ffea50094a48 100755
>>> --- a/git-send-email.perl
>>> +++ b/git-send-email.perl
>>> @@ -516,6 +518,33 @@ my %parse_alias = (
>>>   }
>>>   } },
>>>
>>> +   sendmail => sub { my $fh = shift; while (<$fh>) {
>>> +   # ignore comment lines
>>> +   if (/^\s*(?:#.*)?$/) { }
>>
>> This confused me at first because the comment talks only about
>> "comment lines", for which a simpler /^\s*#/ would suffice. The regex,
>> however, actually matches blank lines and comment lines (both of which
>> get skipped). Either the comment should be fixed or the regex could be
>> split into two much simpler ones. The splitting into simpler regex's
>> has the benefit of being easier to comprehend at a glance. For
>> instance:
>>
>> next if /^\s*$/;
>> next if /^\s*#/;
>
> I noticed this too after sending the patch, and I have already changed
> the comment to mention blank lines or comment lines.
>
> Splitting the regex would be more simple, but the regex is already
> quite simple as it is.

To be clear, the reason that I brought up the idea of splitting the
regex was that /^\s*$/ and /^\s*#/ are very common idioms which people
can and do recognize and understand at-a-glance without having to
spend time deciphering them. On the other hand, /^\s*(?:#.*)?$/
doesn't lend itself to that sort of instant comprehension; it requires
a certain amount of mental effort to understand.

Anyhow, it's just an idea put forth in case you or someone favors it;
not an outright request for a change.

>>> +   # recognize lines that look like an alias
>>> +   elsif (/^(\S+)\s*:\s*(.+?)$/) {
>>
>> Observation: Given "foo:bar:baz", this regex will take "foo:bar" as
>> the key, and "baz" as the value, which is probably not what was
>> intended, however, it likely doesn't matter much in this case since
>> colon isn't legal in an email address[1].
>
> That's a keen observation.  I think it would work simply to use a
> non-greedy +? in the first capture group.

Yes, that would work. Alternately: /^([^\s:]+)\s*:\s*(.+?)$/
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v5 1/1] send-email: Add sendmail email aliases format

2015-05-26 Thread Allen Hubbe
On Tue, May 26, 2015 at 3:10 PM, Eric Sunshine  wrote:
> On Saturday, May 23, 2015, Allen Hubbe  wrote:
>> Note that this only adds support for a limited subset of the sendmail
>> format.  The format is is as follows.
>>
>> : [, ...]
>>
>> Aliases are specified one per line, and must start on the first column of the
>> line.  Blank lines are ignored.  If the first non whitespace character
>> on a line is a '#' symbol, then the whole line is considered a comment,
>> and is ignored.
>> [...]
>> Signed-off-by: Allen Hubbe 
>> ---
>>
>> Notes:
>> This v5 renames the parser 'sendmail' again, from 'simple'.
>> Therefore, the subject line is changed again, too.
>>
>> Previous subject line: send-email: Add simple email aliases format
>>
>> The format is restricted to a subset of sendmail.  When the subset
>> diverges from sendmail, the parser warns about the line that diverges,
>> and ignores the line.  The supported format is described in the
>> documentation, as well as the behavior when an unsupported format
>> construct is detected.
>>
>> A badly constructed sentence was corrected in the documentation.
>>
>> The test case was changed to use a here document, and the unsupported
>> comment after an alias was removed from the test case alias file input.
>
> Thanks. This round looks much nicer. A few minor comments below...
>
>> diff --git a/git-send-email.perl b/git-send-email.perl
>> index e1e9b1460ced..ffea50094a48 100755
>> --- a/git-send-email.perl
>> +++ b/git-send-email.perl
>> @@ -487,6 +487,8 @@ sub split_addrs {
>>  }
>>
>>  my %aliases;
>> +
>> +
>
> Unnecessary whitespace change sneaked in.
>
>>  my %parse_alias = (
>> # multiline formats can be supported in the future
>> mutt => sub { my $fh = shift; while (<$fh>) {
>> @@ -516,6 +518,33 @@ my %parse_alias = (
>>   }
>>   } },
>>
>> +   sendmail => sub { my $fh = shift; while (<$fh>) {
>> +   # ignore comment lines
>> +   if (/^\s*(?:#.*)?$/) { }
>
> This confused me at first because the comment talks only about
> "comment lines", for which a simpler /^\s*#/ would suffice. The regex,
> however, actually matches blank lines and comment lines (both of which
> get skipped). Either the comment should be fixed or the regex could be
> split into two much simpler ones. The splitting into simpler regex's
> has the benefit of being easier to comprehend at a glance. For
> instance:
>
> next if /^\s*$/;
> next if /^\s*#/;

I noticed this too after sending the patch, and I have already changed
the comment to mention blank lines or comment lines.

Splitting the regex would be more simple, but the regex is already
quite simple as it is.

>
> Speaking of 'next', its use here is inconsistent. Due to use of the
> if/elsif/else chain, 'next' is not needed at all, yet it is used for
> some cases but not others. To be consistent, either use it everywhere
> or nowhere.

These used to be `if (foo) { somthing; next; }` while this version was
work in progress, which I changed to elsif with the intention of
removing the next.  Thanks for catching the inconsistency.  I will
remove the next.

>
>> +   # warn on lines that contain quotes
>> +   elsif (/"/) {
>> +   print STDERR "sendmail alias with quotes is not 
>> supported: $_\n";
>> +   next;
>> +   }
>> +
>> +   # warn on lines that continue
>> +   elsif (/^\s|\\$/) {
>> +   print STDERR "sendmail continuation line is not 
>> supported: $_\n";
>> +   next;
>> +   }
>> +
>> +   # recognize lines that look like an alias
>> +   elsif (/^(\S+)\s*:\s*(.+?)$/) {
>
> Observation: Given "foo:bar:baz", this regex will take "foo:bar" as
> the key, and "baz" as the value, which is probably not what was
> intended, however, it likely doesn't matter much in this case since
> colon isn't legal in an email address[1].

That's a keen observation.  I think it would work simply to use a
non-greedy +? in the first capture group.

>
> [1]: However, I could have sworn that colon was legal in some type of
> email address years ago, but I can no longer remember which type it
> was. UUCP used '!' in email addresses, so that wasn't it.
>
>> +   my ($alias, $addr) = ($1, $2);
>> +   $aliases{$alias} = [ split_addrs($addr) ];
>> +   }
>> +
>> +   # warn on lines that are not recognized
>> +   else {
>> +   print STDERR "sendmail line is not recognized: $_\n";
>> +   }}},
>> +
>> gnus => sub { my $fh = shift; while (<$fh>) {
>> if (/\(define-mail-alias\s+"(\S+?)"\s+"(\S+?)"\)/) {
>> $aliases{$1} = [ $2 ];
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body

Re: [PATCH v5 1/1] send-email: Add sendmail email aliases format

2015-05-26 Thread Eric Sunshine
On Saturday, May 23, 2015, Allen Hubbe  wrote:
> Note that this only adds support for a limited subset of the sendmail
> format.  The format is is as follows.
>
> : [, ...]
>
> Aliases are specified one per line, and must start on the first column of the
> line.  Blank lines are ignored.  If the first non whitespace character
> on a line is a '#' symbol, then the whole line is considered a comment,
> and is ignored.
> [...]
> Signed-off-by: Allen Hubbe 
> ---
>
> Notes:
> This v5 renames the parser 'sendmail' again, from 'simple'.
> Therefore, the subject line is changed again, too.
>
> Previous subject line: send-email: Add simple email aliases format
>
> The format is restricted to a subset of sendmail.  When the subset
> diverges from sendmail, the parser warns about the line that diverges,
> and ignores the line.  The supported format is described in the
> documentation, as well as the behavior when an unsupported format
> construct is detected.
>
> A badly constructed sentence was corrected in the documentation.
>
> The test case was changed to use a here document, and the unsupported
> comment after an alias was removed from the test case alias file input.

Thanks. This round looks much nicer. A few minor comments below...

> diff --git a/git-send-email.perl b/git-send-email.perl
> index e1e9b1460ced..ffea50094a48 100755
> --- a/git-send-email.perl
> +++ b/git-send-email.perl
> @@ -487,6 +487,8 @@ sub split_addrs {
>  }
>
>  my %aliases;
> +
> +

Unnecessary whitespace change sneaked in.

>  my %parse_alias = (
> # multiline formats can be supported in the future
> mutt => sub { my $fh = shift; while (<$fh>) {
> @@ -516,6 +518,33 @@ my %parse_alias = (
>   }
>   } },
>
> +   sendmail => sub { my $fh = shift; while (<$fh>) {
> +   # ignore comment lines
> +   if (/^\s*(?:#.*)?$/) { }

This confused me at first because the comment talks only about
"comment lines", for which a simpler /^\s*#/ would suffice. The regex,
however, actually matches blank lines and comment lines (both of which
get skipped). Either the comment should be fixed or the regex could be
split into two much simpler ones. The splitting into simpler regex's
has the benefit of being easier to comprehend at a glance. For
instance:

next if /^\s*$/;
next if /^\s*#/;

Speaking of 'next', its use here is inconsistent. Due to use of the
if/elsif/else chain, 'next' is not needed at all, yet it is used for
some cases but not others. To be consistent, either use it everywhere
or nowhere.

> +   # warn on lines that contain quotes
> +   elsif (/"/) {
> +   print STDERR "sendmail alias with quotes is not 
> supported: $_\n";
> +   next;
> +   }
> +
> +   # warn on lines that continue
> +   elsif (/^\s|\\$/) {
> +   print STDERR "sendmail continuation line is not 
> supported: $_\n";
> +   next;
> +   }
> +
> +   # recognize lines that look like an alias
> +   elsif (/^(\S+)\s*:\s*(.+?)$/) {

Observation: Given "foo:bar:baz", this regex will take "foo:bar" as
the key, and "baz" as the value, which is probably not what was
intended, however, it likely doesn't matter much in this case since
colon isn't legal in an email address[1].

[1]: However, I could have sworn that colon was legal in some type of
email address years ago, but I can no longer remember which type it
was. UUCP used '!' in email addresses, so that wasn't it.

> +   my ($alias, $addr) = ($1, $2);
> +   $aliases{$alias} = [ split_addrs($addr) ];
> +   }
> +
> +   # warn on lines that are not recognized
> +   else {
> +   print STDERR "sendmail line is not recognized: $_\n";
> +   }}},
> +
> gnus => sub { my $fh = shift; while (<$fh>) {
> if (/\(define-mail-alias\s+"(\S+?)"\s+"(\S+?)"\)/) {
> $aliases{$1} = [ $2 ];
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v5 1/1] send-email: Add sendmail email aliases format

2015-05-26 Thread Eric Sunshine
On Sat, May 23, 2015 at 1:45 PM, Junio C Hamano  wrote:
> Allen Hubbe  writes:
>> Note that this only adds support for a limited subset of the sendmail
>> format.  The format is is as follows.
>>
>>   : [, ...]
>>
>> Aliases are specified one per line, and must start on the first column of the
>> line.  Blank lines are ignored.  If the first non whitespace character
>> on a line is a '#' symbol, then the whole line is considered a comment,
>> and is ignored.
>> [...]
>> Signed-off-by: Allen Hubbe 
>> ---
>
> Thanks.
>
> A small thing I noticed in the test (and this patch is not adding a
> new "breakage"---there are a few existing instances) is the use of
> "~/"; it should be spelled "$HOME/" instead for portability (not in
> POSIX, even though bash, dash and ksh all seem to understand it).
>
> I think this round looks good from a cursory read.
>
> Eric, what do you think?

Sorry for the delay. This round looks much better. I do have a few
very minor comments, which I'll post in reply to the patch itself, but
nothing worth holding the series up. Thanks.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v5 1/1] send-email: Add sendmail email aliases format

2015-05-25 Thread Junio C Hamano
Junio C Hamano  writes:

> It probably should be two patches.  Your sendmail thing with docs
> and tests as one patch (with $HOME in test), and fix to mailrc tests
> I did (minus the part that fixes your sendmail test, which should
> now become unnecessary) on top.
>
> If the documentation I queued on 'pu' formats well already (which I
> cannot check myself until tomorrow), then I'd guess the above would
> be like squashing 8b8fb5a into dc6183c and then 6b733ee on top, I
> think.
>
>  6b733ee t9001: write $HOME/, not ~/, to help shells without tilde expansion
>  8b8fb5a git-send-email doc: refer to upstream document for alias format
>  dc6183c send-email: add sendmail email aliases format

Well, I lied [*1*].  I think the documentation part of what is in
'pu' formats fine, so let me just clean them up and push the result
out for your final review.  Give me a few hours (leaving time for
dinner and etc., too).

[Footnote]

*1* My Git time is spent on in a terminal-only environment, a
virtual machine running somewhere in Google datacenters, and when I
am home working from a Chromebook via ssh, I lack a convenient way
to grab a single file out of there to view in the browser locally.
The virtual machine does let me upload to Google Drive and I can
grab a file from there to my Chromebook, and that is what I did to
see what the AsciiDoc formatted result looked like just now ;-)
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v5 1/1] send-email: Add sendmail email aliases format

2015-05-25 Thread Junio C Hamano
Allen Hubbe  writes:

>> Could you fetch from me and then run:
>>
>>  $ git log --reverse -3 -p 6b733ee4ba330e1187017895b8426dd9171c33b8
>>
>> to see if you agree with the result?  That is what I queued on 'pu'
>> for now with my fixups.
>
> It looks good to me.  How would you like me to proceed?  I assume you
> would like your patch on top of mine will stay, to use HOME instead of
> tilde.  Or, would you like me to use HOME in my v6, too?
>
> Should I send you v6 like v5, but with the documentation fixed, or
> would you now prefer a separate patch on top of that to fix the
> documentation?

It probably should be two patches.  Your sendmail thing with docs
and tests as one patch (with $HOME in test), and fix to mailrc tests
I did (minus the part that fixes your sendmail test, which should
now become unnecessary) on top.

If the documentation I queued on 'pu' formats well already (which I
cannot check myself until tomorrow), then I'd guess the above would
be like squashing 8b8fb5a into dc6183c and then 6b733ee on top, I
think.

 6b733ee t9001: write $HOME/, not ~/, to help shells without tilde expansion
 8b8fb5a git-send-email doc: refer to upstream document for alias format
 dc6183c send-email: add sendmail email aliases format
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v5 1/1] send-email: Add sendmail email aliases format

2015-05-25 Thread Allen Hubbe
On Mon, May 25, 2015 at 9:58 PM, Junio C Hamano  wrote:
> Allen Hubbe  writes:
>
>> Thanks for letting me know.  Are you still expecting v6 from me then?
>> The other thing you asked for was a change in the documentation: just
>> mention the email programs' documentation, and describe the
>> exceptions.
>
> Could you fetch from me and then run:
>
>  $ git log --reverse -3 -p 6b733ee4ba330e1187017895b8426dd9171c33b8
>
> to see if you agree with the result?  That is what I queued on 'pu'
> for now with my fixups.

It looks good to me.  How would you like me to proceed?  I assume you
would like your patch on top of mine will stay, to use HOME instead of
tilde.  Or, would you like me to use HOME in my v6, too?

Should I send you v6 like v5, but with the documentation fixed, or
would you now prefer a separate patch on top of that to fix the
documentation?  I can do either, and you would be welcome to
rebase/fixup the second patch into the earlier one with my sign off.

>
> We have not heard from Eric on this round yet, so he (and others)
> may have further input, but as far as I am concerned, that one
> looked more or less ready to be merged down to 'next', except for
> the documentation part, which I haven't had a chance to look at the
> results and may need further AsciiDoc mark-up fixes.
>
> Thanks.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v5 1/1] send-email: Add sendmail email aliases format

2015-05-25 Thread Junio C Hamano
Allen Hubbe  writes:

> Thanks for letting me know.  Are you still expecting v6 from me then?
> The other thing you asked for was a change in the documentation: just
> mention the email programs' documentation, and describe the
> exceptions.

Could you fetch from me and then run:

 $ git log --reverse -3 -p 6b733ee4ba330e1187017895b8426dd9171c33b8

to see if you agree with the result?  That is what I queued on 'pu'
for now with my fixups.

We have not heard from Eric on this round yet, so he (and others)
may have further input, but as far as I am concerned, that one
looked more or less ready to be merged down to 'next', except for
the documentation part, which I haven't had a chance to look at the
results and may need further AsciiDoc mark-up fixes.

Thanks.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v5 1/1] send-email: Add sendmail email aliases format

2015-05-25 Thread Allen Hubbe
On Mon, May 25, 2015 at 5:35 PM, Junio C Hamano  wrote:
> Junio C Hamano  writes:
>
>> Junio C Hamano  writes:
>>
>> FYI, I have tentatively queued this on top of your patch.  Please
>> see "git log master..cf954075" to double check.
>
> Sorry but I had a typo there...
>
>>   git format-patch -1 -o outdir &&
>> - cat >>~/.tmp-email-aliases <<-\EOF &&
>> + cat >>./.tmp-email-aliases" <<-\EOF &&
>
> This should just be
>
> cat >>.tmp-email-aliases <<-\EOF &&
>

Thanks for letting me know.  Are you still expecting v6 from me then?
The other thing you asked for was a change in the documentation: just
mention the email programs' documentation, and describe the
exceptions.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v5 1/1] send-email: Add sendmail email aliases format

2015-05-25 Thread Junio C Hamano
Junio C Hamano  writes:

> Junio C Hamano  writes:
>
> FYI, I have tentatively queued this on top of your patch.  Please
> see "git log master..cf954075" to double check.

Sorry but I had a typo there...

>   git format-patch -1 -o outdir &&
> - cat >>~/.tmp-email-aliases <<-\EOF &&
> + cat >>./.tmp-email-aliases" <<-\EOF &&

This should just be

cat >>.tmp-email-aliases <<-\EOF &&

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v5 1/1] send-email: Add sendmail email aliases format

2015-05-25 Thread Junio C Hamano
Junio C Hamano  writes:

> Allen Hubbe  writes:
>
>> Looking closer at this and the other test cases, they are inconsistent
>> about using ".mailrc", "~/.mailrc", and "$(pwd)/.mailrc".  This would
>> add another one, "$HOME/.mailrc".
>
> In t9001, I see two tests on mailrc:
> ...
> So I do not see any reason to change most of these; except that the
> target of 'echo' should be changed from ~/.mailrc to $HOME/.mailrc.

FYI, I have tentatively queued this on top of your patch.  Please
see "git log master..cf954075" to double check.

Thanks.

-- >8 --

Subject: [PATCH] t9001: write $HOME/, not ~/, to help shells without tilde 
expansion

Even though it is in POSIX, we do not have to use it, only to hurt
shells that may lack the support.

The .mailrc test tries to define an alias in .mailrc in the home
directory by shell redirection, and then tries to see ~/.mailrc in
config is tilde-expanded by Git without help from shell.  So the
creation should become $HOME/ to be portable for shells that may
lack tilde expansion but the reference should be done as "~/.mailrc".

The sendmail one refers to the file from the configuration with full
path, so it does not need to know that $HOME during the test run is
set to the current "trash" directory.

Signed-off-by: Junio C Hamano 
---
 t/t9001-send-email.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh
index b04d263..c5c6867 100755
--- a/t/t9001-send-email.sh
+++ b/t/t9001-send-email.sh
@@ -1537,7 +1537,7 @@ test_expect_success $PREREQ 
'sendemail.aliasfiletype=mailrc' '
 
 test_expect_success $PREREQ 'sendemail.aliasfile=~/.mailrc' '
clean_fake_sendmail &&
-   echo "alias sbd  some...@example.org" >~/.mailrc &&
+   echo "alias sbd  some...@example.org" >"$HOME/.mailrc" &&
git config --replace-all sendemail.aliasesfile "~/.mailrc" &&
git config sendemail.aliasfiletype mailrc &&
git send-email \
@@ -1552,7 +1552,7 @@ test_expect_success $PREREQ 
'sendemail.aliasfile=~/.mailrc' '
 test_expect_success $PREREQ 'sendemail.aliasfiletype=sendmail' '
clean_fake_sendmail && rm -fr outdir &&
git format-patch -1 -o outdir &&
-   cat >>~/.tmp-email-aliases <<-\EOF &&
+   cat >>./.tmp-email-aliases" <<-\EOF &&
alice: Alice W Land 
bob: Robert Bobbyton 
# this is a comment
-- 
2.4.1-455-ga49e496

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v5 1/1] send-email: Add sendmail email aliases format

2015-05-25 Thread Junio C Hamano
Allen Hubbe  writes:

> Looking closer at this and the other test cases, they are inconsistent
> about using ".mailrc", "~/.mailrc", and "$(pwd)/.mailrc".  This would
> add another one, "$HOME/.mailrc".

In t9001, I see two tests on mailrc:

 * Create .mailrc in the current directory and point at it from the
   configuration file sendemail.aliasfile with $(pwd)/.mailrc

   This one is correct in that test wants to make sure an absolute
   path is usable as the value; the creation in the current
   directory (hence >.mailrc) is a mere implementation detail that
   the file it wants to use can be created by pathname relative to
   the current directory when "echo" is run.

 * Create ~/.mailrc, relying on tilde expansion of the shell when
   "echo" is run, and then point at it from the configuration file
   as "~/.mailrc".

   The former, i.e. "echo ... >~/.mailrc" should instead redirect
   into >$HOME/.mailrc in order to support shells that do not
   understand tilde expansion.  However, the latter is correct, as
   this test wants to make sure that whoever reads the configuration
   interprets ~/.mailrc as "file .mailrc in the home directory",
   without help from the shell.

Specifically, the difference between these two tests is not
inconcistency; they are covering two different use patterns.

So I do not see any reason to change most of these; except that the
target of 'echo' should be changed from ~/.mailrc to $HOME/.mailrc.

Thanks.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v5 1/1] send-email: Add sendmail email aliases format

2015-05-25 Thread Allen Hubbe
On Sat, May 23, 2015 at 6:24 PM, Allen Hubbe  wrote:
> On Sat, May 23, 2015 at 2:07 PM, Junio C Hamano  wrote:
>> Junio C Hamano  writes:
>>
>>> A small thing I noticed in the test (and this patch is not adding a
>>> new "breakage"---there are a few existing instances) is the use of
>>> "~/"; it should be spelled "$HOME/" instead for portability (not in
>>> POSIX, even though bash, dash and ksh all seem to understand it).
>>
>> Well, I was wrong. Tilde expansion is in POSIX.
>>
>> Nevertheless, I'd prefer if we avoided it.
>
> Alright, $HOME it will be.

Looking closer at this and the other test cases, they are inconsistent
about using ".mailrc", "~/.mailrc", and "$(pwd)/.mailrc".  This would
add another one, "$HOME/.mailrc".

How do you feel about using just ".mailrc", and "$(pwd)/.mailrc" when
an absolute path is needed in gitconfig?
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v5 1/1] send-email: Add sendmail email aliases format

2015-05-23 Thread Allen Hubbe
On Sat, May 23, 2015 at 2:00 PM, Junio C Hamano  wrote:
> Junio C Hamano  writes:
>
>>> diff --git a/Documentation/git-send-email.txt 
>>> b/Documentation/git-send-email.txt
>>> index 804554609def..97387fd27a8d 100644
>>> --- a/Documentation/git-send-email.txt
>>> +++ b/Documentation/git-send-email.txt
>>> @@ -383,7 +383,42 @@ sendemail.aliasesFile::
>>>
>>>  sendemail.aliasFileType::
>>>  Format of the file(s) specified in sendemail.aliasesFile. Must be
>>> -one of 'mutt', 'mailrc', 'pine', 'elm', or 'gnus'.
>>> +one of 'sendmail', 'mutt', 'mailrc', 'pine', 'elm', or 'gnus'.
>
> We prefer to append to an existing list of equals, not prepend.
>

I initially thought to put it last, too.  I'll move it back to the end.

I moved it to the beginning, because it seemed odd to me for only the
last thing in the list to have a further description.  If the intent
is that eventually (perhaps in an ideal world), the other formats will
have expanded documentation, too, then you are right that adding new
things to the end makes the most sense.

>>> ++
>>> +If the format is 'sendmail', then the alias file format is described below.
>>> +Descriptions of the other file formats can be found by searching the
>>> +documentation of the email program of the same name.
>
> The phrasing feels somewhat awkward.  How about dropping the first
> line, pretending as if 'sendmail' is also fully 'sendmail' format,
> and then describe the limitations (like you already did below)?  I
> have a feeling that other formats have similar limitations (e.g. I
> do not think piping to commands in any other formats would be
> supported by send-email), and other people can follow suit and
> describe the limitations.
>
> That is, drop the paragraph that describes the basics (which can be
> learned by searching the documentation of the email program of the
> same name), and dive right into the differences.
>
> IOW,
>
> What an alias file in each format looks like can be found in
> the documentation of the email program of the same name. The
> differences and limitations from the standard formats are
> described below:
> +
> --
> sendmail;;
>>> +*   Quoted aliases and quoted addresses are not supported: lines that
>>> +contain a `"` symbol are ignored.
>>> +*   Line continuations are not supported: any lines that start with
>>> +whitespace, or end with a `\` symbol are ignored.
>>> +*   Warnings are printed on the standard error output for any explicitly
>>> +unsupported constructs, and any other lines that are not recognized
>>> +by the parser.
> --

Alright.

Thanks for showing me '--'.  I had some trouble with asciidoc, where
my intention was to insert a bulleted list between two paragraphs in a
containing definition-list item.  The paragraph that I intended to be
after the bulleted list was instead nested in the last bulleted item
in the list.

The documentation for asciidoc soesn't seem to be very helpful in
describing this construct.  There is one example, that I could find,
and I didn't find a description of the syntax for it.  Perhaps I
missed it among all the other uses of a series of '-'.  I don't see
any way for this to distinguish between different levels of nesting,
like a block of --/-- in another block of --/--; that might be
syntactically indistinguishable from a block of --/-- followed by
another block of --/--.

>
> That way, limitations and deviations of other formats can be added
> later in a consistent way.
>
> Just a thought.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v5 1/1] send-email: Add sendmail email aliases format

2015-05-23 Thread Allen Hubbe
On Sat, May 23, 2015 at 2:07 PM, Junio C Hamano  wrote:
> Junio C Hamano  writes:
>
>> A small thing I noticed in the test (and this patch is not adding a
>> new "breakage"---there are a few existing instances) is the use of
>> "~/"; it should be spelled "$HOME/" instead for portability (not in
>> POSIX, even though bash, dash and ksh all seem to understand it).
>
> Well, I was wrong. Tilde expansion is in POSIX.
>
> Nevertheless, I'd prefer if we avoided it.

Alright, $HOME it will be.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v5 1/1] send-email: Add sendmail email aliases format

2015-05-23 Thread Junio C Hamano
Junio C Hamano  writes:

> A small thing I noticed in the test (and this patch is not adding a
> new "breakage"---there are a few existing instances) is the use of
> "~/"; it should be spelled "$HOME/" instead for portability (not in
> POSIX, even though bash, dash and ksh all seem to understand it).

Well, I was wrong. Tilde expansion is in POSIX.

Nevertheless, I'd prefer if we avoided it.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v5 1/1] send-email: Add sendmail email aliases format

2015-05-23 Thread Junio C Hamano
Junio C Hamano  writes:

>> diff --git a/Documentation/git-send-email.txt 
>> b/Documentation/git-send-email.txt
>> index 804554609def..97387fd27a8d 100644
>> --- a/Documentation/git-send-email.txt
>> +++ b/Documentation/git-send-email.txt
>> @@ -383,7 +383,42 @@ sendemail.aliasesFile::
>>  
>>  sendemail.aliasFileType::
>>  Format of the file(s) specified in sendemail.aliasesFile. Must be
>> -one of 'mutt', 'mailrc', 'pine', 'elm', or 'gnus'.
>> +one of 'sendmail', 'mutt', 'mailrc', 'pine', 'elm', or 'gnus'.

We prefer to append to an existing list of equals, not prepend.

>> ++
>> +If the format is 'sendmail', then the alias file format is described below.
>> +Descriptions of the other file formats can be found by searching the
>> +documentation of the email program of the same name.

The phrasing feels somewhat awkward.  How about dropping the first
line, pretending as if 'sendmail' is also fully 'sendmail' format,
and then describe the limitations (like you already did below)?  I
have a feeling that other formats have similar limitations (e.g. I
do not think piping to commands in any other formats would be
supported by send-email), and other people can follow suit and
describe the limitations.

That is, drop the paragraph that describes the basics (which can be
learned by searching the documentation of the email program of the
same name), and dive right into the differences.

IOW,

What an alias file in each format looks like can be found in
the documentation of the email program of the same name. The
differences and limitations from the standard formats are
described below:
+
--
sendmail;;
>> +*   Quoted aliases and quoted addresses are not supported: lines that
>> +contain a `"` symbol are ignored.
>> +*   Line continuations are not supported: any lines that start with
>> +whitespace, or end with a `\` symbol are ignored.
>> +*   Warnings are printed on the standard error output for any explicitly
>> +unsupported constructs, and any other lines that are not recognized
>> +by the parser.
--

That way, limitations and deviations of other formats can be added
later in a consistent way.

Just a thought.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v5 1/1] send-email: Add sendmail email aliases format

2015-05-23 Thread Junio C Hamano
Allen Hubbe  writes:

> Note that this only adds support for a limited subset of the sendmail
> format.  The format is is as follows.
>
>   : [, ...]
>
> Aliases are specified one per line, and must start on the first column of the
> line.  Blank lines are ignored.  If the first non whitespace character
> on a line is a '#' symbol, then the whole line is considered a comment,
> and is ignored.
>
> Example:
>
>   alice: Alice W Land 
>   bob: Robert Bobbyton 
>   # this is a comment
>  # this is also a comment
>   chloe: ch...@example.com
>   abgroup: alice, bob
>   bcgrp: bob, chloe, Other 
>
> Unlike the standard sendmail format, this does not support quoted
> aliases or quoted addresses.  Line continuations are not supported.
> Warnings are printed for explicitly unsupported constructs, and any
> other lines that are not recognized.
>
> Signed-off-by: Allen Hubbe 
> ---
>
> Notes:
> This v5 renames the parser 'sendmail' again, from 'simple'.
> Therefore, the subject line is changed again, too.
> 
> Previous subject line: send-email: Add simple email aliases format
> 
> The format is restricted to a subset of sendmail.  When the subset
> diverges from sendmail, the parser warns about the line that diverges,
> and ignores the line.  The supported format is described in the
> documentation, as well as the behavior when an unsupported format
> construct is detected.
> 
> A badly constructed sentence was corrected in the documentation.
> 
> The test case was changed to use a here document, and the unsupported
> comment after an alias was removed from the test case alias file input.

Thanks.

A small thing I noticed in the test (and this patch is not adding a
new "breakage"---there are a few existing instances) is the use of
"~/"; it should be spelled "$HOME/" instead for portability (not in
POSIX, even though bash, dash and ksh all seem to understand it).

I think this round looks good from a cursory read.

Eric, what do you think?

>  Documentation/git-send-email.txt | 37 -
>  git-send-email.perl  | 29 +
>  t/t9001-send-email.sh| 27 +++
>  3 files changed, 92 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/git-send-email.txt 
> b/Documentation/git-send-email.txt
> index 804554609def..97387fd27a8d 100644
> --- a/Documentation/git-send-email.txt
> +++ b/Documentation/git-send-email.txt
> @@ -383,7 +383,42 @@ sendemail.aliasesFile::
>  
>  sendemail.aliasFileType::
>   Format of the file(s) specified in sendemail.aliasesFile. Must be
> - one of 'mutt', 'mailrc', 'pine', 'elm', or 'gnus'.
> + one of 'sendmail', 'mutt', 'mailrc', 'pine', 'elm', or 'gnus'.
> ++
> +If the format is 'sendmail', then the alias file format is described below.
> +Descriptions of the other file formats can be found by searching the
> +documentation of the email program of the same name.
> ++
> +The 'sendmail' format is is as follows.  Note that 'git-send-email' currently
> +only supports a limited subset of the sendmail format.
> ++
> + : [, ...]
> ++
> +Aliases are specified one per line, and must start on the first column of the
> +line.  Blank lines are ignored.  If the first non whitespace character on a
> +line is a `#` symbol, then the whole line is considered a comment, and is
> +ignored.
> ++
> +Example of the 'sendmail' format:
> ++
> + alice: Alice W Land 
> + bob: Robert Bobbyton 
> + # this is a comment
> +# this is also a comment
> + chloe: ch...@example.com
> + abgroup: alice, bob
> + bcgrp: bob, chloe, Other 
> ++
> +Unlike the standard sendmail format, 'git-send-email' currently diverges in 
> the
> +following ways.
> ++
> +*Quoted aliases and quoted addresses are not supported: lines that
> + contain a `"` symbol are ignored.
> +*Line continuations are not supported: any lines that start with
> + whitespace, or end with a `\` symbol are ignored.
> +*Warnings are printed on the standard error output for any explicitly
> + unsupported constructs, and any other lines that are not recognized
> + by the parser.
>  
>  sendemail.multiEdit::
>   If true (default), a single editor instance will be spawned to edit
> diff --git a/git-send-email.perl b/git-send-email.perl
> index e1e9b1460ced..ffea50094a48 100755
> --- a/git-send-email.perl
> +++ b/git-send-email.perl
> @@ -487,6 +487,8 @@ sub split_addrs {
>  }
>  
>  my %aliases;
> +
> +
>  my %parse_alias = (
>   # multiline formats can be supported in the future
>   mutt => sub { my $fh = shift; while (<$fh>) {
> @@ -516,6 +518,33 @@ my %parse_alias = (
> }
> } },
>  
> + sendmail => sub { my $fh = shift; while (<$fh>) {
> + # ignore comment lines
> + if (/^\s*(?:#.*)?$/) { }
> +
> + # warn o

[PATCH v5 1/1] send-email: Add sendmail email aliases format

2015-05-23 Thread Allen Hubbe
Note that this only adds support for a limited subset of the sendmail
format.  The format is is as follows.

: [, ...]

Aliases are specified one per line, and must start on the first column of the
line.  Blank lines are ignored.  If the first non whitespace character
on a line is a '#' symbol, then the whole line is considered a comment,
and is ignored.

Example:

alice: Alice W Land 
bob: Robert Bobbyton 
# this is a comment
   # this is also a comment
chloe: ch...@example.com
abgroup: alice, bob
bcgrp: bob, chloe, Other 

Unlike the standard sendmail format, this does not support quoted
aliases or quoted addresses.  Line continuations are not supported.
Warnings are printed for explicitly unsupported constructs, and any
other lines that are not recognized.

Signed-off-by: Allen Hubbe 
---

Notes:
This v5 renames the parser 'sendmail' again, from 'simple'.
Therefore, the subject line is changed again, too.

Previous subject line: send-email: Add simple email aliases format

The format is restricted to a subset of sendmail.  When the subset
diverges from sendmail, the parser warns about the line that diverges,
and ignores the line.  The supported format is described in the
documentation, as well as the behavior when an unsupported format
construct is detected.

A badly constructed sentence was corrected in the documentation.

The test case was changed to use a here document, and the unsupported
comment after an alias was removed from the test case alias file input.

 Documentation/git-send-email.txt | 37 -
 git-send-email.perl  | 29 +
 t/t9001-send-email.sh| 27 +++
 3 files changed, 92 insertions(+), 1 deletion(-)

diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
index 804554609def..97387fd27a8d 100644
--- a/Documentation/git-send-email.txt
+++ b/Documentation/git-send-email.txt
@@ -383,7 +383,42 @@ sendemail.aliasesFile::
 
 sendemail.aliasFileType::
Format of the file(s) specified in sendemail.aliasesFile. Must be
-   one of 'mutt', 'mailrc', 'pine', 'elm', or 'gnus'.
+   one of 'sendmail', 'mutt', 'mailrc', 'pine', 'elm', or 'gnus'.
++
+If the format is 'sendmail', then the alias file format is described below.
+Descriptions of the other file formats can be found by searching the
+documentation of the email program of the same name.
++
+The 'sendmail' format is is as follows.  Note that 'git-send-email' currently
+only supports a limited subset of the sendmail format.
++
+   : [, ...]
++
+Aliases are specified one per line, and must start on the first column of the
+line.  Blank lines are ignored.  If the first non whitespace character on a
+line is a `#` symbol, then the whole line is considered a comment, and is
+ignored.
++
+Example of the 'sendmail' format:
++
+   alice: Alice W Land 
+   bob: Robert Bobbyton 
+   # this is a comment
+  # this is also a comment
+   chloe: ch...@example.com
+   abgroup: alice, bob
+   bcgrp: bob, chloe, Other 
++
+Unlike the standard sendmail format, 'git-send-email' currently diverges in the
+following ways.
++
+*  Quoted aliases and quoted addresses are not supported: lines that
+   contain a `"` symbol are ignored.
+*  Line continuations are not supported: any lines that start with
+   whitespace, or end with a `\` symbol are ignored.
+*  Warnings are printed on the standard error output for any explicitly
+   unsupported constructs, and any other lines that are not recognized
+   by the parser.
 
 sendemail.multiEdit::
If true (default), a single editor instance will be spawned to edit
diff --git a/git-send-email.perl b/git-send-email.perl
index e1e9b1460ced..ffea50094a48 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -487,6 +487,8 @@ sub split_addrs {
 }
 
 my %aliases;
+
+
 my %parse_alias = (
# multiline formats can be supported in the future
mutt => sub { my $fh = shift; while (<$fh>) {
@@ -516,6 +518,33 @@ my %parse_alias = (
  }
  } },
 
+   sendmail => sub { my $fh = shift; while (<$fh>) {
+   # ignore comment lines
+   if (/^\s*(?:#.*)?$/) { }
+
+   # warn on lines that contain quotes
+   elsif (/"/) {
+   print STDERR "sendmail alias with quotes is not 
supported: $_\n";
+   next;
+   }
+
+   # warn on lines that continue
+   elsif (/^\s|\\$/) {
+   print STDERR "sendmail continuation line is not 
supported: $_\n";
+   next;
+   }
+
+   # recognize lines that look like an alias
+   elsif (/^(\S+)\s*:\s*(.+?)$/) {
+