git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Felipe Contreras <felipe.contreras@gmail.com>
To: Jeff King <peff@peff.net>
Cc: git@vger.kernel.org, Thomas Rast <trast@student.ethz.ch>,
	Junio C Hamano <gitster@pobox.com>,
	Jonathan Nieder <jrnieder@gmail.com>
Subject: Re: [PATCH] send-email: add proper default sender
Date: Tue, 13 Nov 2012 07:42:58 +0100	[thread overview]
Message-ID: <CAMP44s1w3oZhEUM-cnO=kECH2bhdOTGVuKy8JS4uhWFbA_oi3w@mail.gmail.com> (raw)
In-Reply-To: <20121113040104.GA9361@sigill.intra.peff.net>

On Tue, Nov 13, 2012 at 5:01 AM, Jeff King <peff@peff.net> wrote:
> On Tue, Nov 13, 2012 at 04:55:25AM +0100, Felipe Contreras wrote:
>
>> > No, it's not. Those broken names do not come from the environment, but
>> > from our last-resort guess of the hostname.
>>
>> That depends how you define environment, but fine, the point is that
>> it happens.
>
> If you have a strawman definition that does not have anything to do with
> what I said in my original email, then yes, it could happen.

It happens, I've seen commits with (none) not that long ago.

> But as I
> said already, "git var" uses IDENT_STRICT and will not allow such broken
> names.

Since 1.7.11, sure. But not everyone is using such a recent version of
git, and people with fully qualified domains would still get unwanted
behavior.

>> > We long ago switched to
>> > printing the name as a warning when we have made such a guess (bb1ae3f),
>> > then more recently started rejecting them outright (8c5b1ae).
>>
>> Right, but these would still happen:
>>
>> michael <michael@michael-laptop.michael.org>
>
> Did you read my email? I explicitly proposed that we would _not_ allow
> send-email to use implicit email addresses constructed in that way.

I'm not talking about git send-email, I'm talking about your comment
'it has always been the case that you can use git without setting
user.*', which has caused issues with wrong author/commmitter names in
commits, and will probably continue to do so.

>> > But in the meantime you are causing a regression for anybody who expects
>> > GIT_AUTHOR_NAME to override user.email when running git-send-email (and
>> > you have taken away the prompt that they could have used to notice and
>> > correct it).
>>
>> I think they can survive. If anybody like this exists.
>
> Sorry, but that is not how things work on this project. You do not get
> to cause regressions because you are too lazy to implement the feature
> _you_ want in a way that does not break other people.

That doesn't change the fact that they would survive, and the fact
that those users don't actually exist.

But let's look at the current situation closely:

PERL5LIB=~/dev/git/perl ./git-send-email.perl --confirm=always -1

1) No information at all

fatal: empty ident name (for <felipec@nysa.(none)>) not allowed

2) Full Name + full hostname

Who should the emails appear to be from? [Felipe Contreras
<felipec@nysa.felipec.org>]

That's right, ident doesn't fail, and that's not the mail address I
specified, it's *implicit*.

3) Full Name + EMAIL

Who should the emails appear to be from? [Felipe Contreras
<felipe.contreras@gmail.com>]

4) config user

Who should the emails appear to be from? [Felipe Contreras 2nd
<felipe.contreras+2@gmail.com>]

5) GIT_COMMITTER

Who should the emails appear to be from? [Felipe Contreras 2nd
<felipe.contreras+2@gmail.com>]

Whoa, what happened there?

Well:

  $sender = $repoauthor || $repocommitter || '';
  ($repoauthor) = Git::ident_person(@repo, 'author');
  % ./git var GIT_AUTHOR_IDENT
  Felipe Contreras 2nd <felipe.contreras+2@gmail.com> 1352783223 +0100

That's right, AUTHOR_IDENT would fall back to the default email and full name.

Hmm, I wonder...

5.1) GIT_COMMITER without anything else

fatal: empty ident name (for <felipec@nysa.(none)>) not allowed
var GIT_AUTHOR_IDENT: command returned error: 128

Why? Because:

% PERL5LIB=~/dev/git/perl perl -e 'use Git; printf("%s\n",
Git::ident_person(@repo, 'author'));'
fatal: empty ident name (for <felipec@nysa.(none)>) not allowed

($repoauthor) = Git::ident_person(@repo, 'author');
($repocommitter) = Git::ident_person(@repo, 'committer');

So $repoauthor || $repocommiter is pointless.

6) GIT_AUTHOR

Who should the emails appear to be from? [Felipe Contreras 4th
<felipe.contreras+4@gmail.com>]

What about after my change?

6.1) GIT_AUTHOR without anything else

fatal: empty ident name (for <felipec@nysa.(none)>) not allowed
var GIT_COMMITTER_IDENT: command returned error: 128

4) config user

From: Felipe Contreras 2nd <felipe.contreras+2@gmail.com>

5) GIT_COMMITTER

From: Felipe Contreras 2nd <felipe.contreras+2@gmail.com>

6) GIT_AUTHOR

From: Felipe Contreras 2nd <felipe.contreras+2@gmail.com>

And what about your proposed change?

2) Full Name + full hostname

./git var GIT_EXPLICIT_IDENT
0

6.1) GIT_AUTHOR without anything else

Even if the previous problem was solved:

export GIT_AUTHOR_NAME='Felipe Contreras 4th'; export
GIT_AUTHOR_EMAIL='felipe.contreras+4@gmail.com'
./git var GIT_EXPLICIT_IDENT
0

No explicit ident? This is most certainly not what the user would expect.

And then:

5.2) GIT_COMMITTER with Full Name and full hostname

export GIT_COMMITTER_NAME='Felipe Contreras 3nd'; export
GIT_COMMITTER_EMAIL='felipe.contreras+3@gmail.com'
./git var GIT_EXPLICIT_IDENT
1

From: Felipe Contreras <felipec@nysa.felipec.org>

It is explicit, yeah, but 'git send-email' would not be picking the
committer, it would pick the author.

> I tried to help you by pointing you in the right direction and even
> providing a sample "git var" patch.

Are you 100% sure that was the right direction?

I think the right approach is more along these lines:

--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -748,16 +748,11 @@ if (!$force) {
        }
 }

-my $prompting = 0;
 if (!defined $sender) {
        $sender = $repoauthor || $repocommitter || '';
-       $sender = ask("Who should the emails appear to be from? [$sender] ",
-                     default => $sender,
-                     valid_re => qr/\@.*\./, confirm_only => 1);
-       print "Emails will be sent from: ", $sender, "\n";
-       $prompting++;
 }

+my $prompting = 0;
 if (!@initial_to && !defined $to_cmd) {
        my $to = ask("Who should the emails be sent to (if any)? ",
                     default => "",
diff --git a/ident.c b/ident.c
index a4bf206..c73ba82 100644
--- a/ident.c
+++ b/ident.c
@@ -291,9 +291,9 @@ const char *fmt_ident(const char *name, const char *email,
        }

        if (strict && email == git_default_email.buf &&
-           strstr(email, "(none)")) {
+               !(user_ident_explicitly_given & IDENT_MAIL_GIVEN)) {
                fputs(env_hint, stderr);
-               die("unable to auto-detect email address (got '%s')", email);
+               die("no explicit email address");
        }

        if (want_date) {

With that we get:

2) Full Name + full hostname

fatal: no explicit email address

3) Full Name + EMAIL

From: Felipe Contreras <felipe.contreras@gmail.com>

4) config user

From: Felipe Contreras 2nd <felipe.contreras+2@gmail.com>

5) GIT_COMMITTER

From: Felipe Contreras 2nd <felipe.contreras+2@gmail.com>

(as buggy as before)

6) GIT_AUTHOR

From: Felipe Contreras 4th <felipe.contreras+4@gmail.com>

Not only will this fix 'git send-email', but it will also fix 'git
commit' so that we don't end up with authors such as 'Felipe Contreras
<felipec@nysa.felipec.org>' ever again.

> But it is not my itch to scratch.

Suit yourself, it's only git users that would get hurt. I can always
use my own 'git send-email' (as I am doing right now).

Cheers.

-- 
Felipe Contreras

  reply	other threads:[~2012-11-13  6:43 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-11 17:06 [PATCH] send-email: add proper default sender Felipe Contreras
2012-11-11 17:12 ` Ramkumar Ramachandra
2012-11-11 18:06   ` Felipe Contreras
2012-11-12 23:35 ` Jeff King
2012-11-12 23:42   ` Felipe Contreras
2012-11-13  0:02     ` Jeff King
2012-11-13  0:06       ` Jeff King
2012-11-13  0:55         ` Junio C Hamano
2012-11-13  0:54       ` Felipe Contreras
2012-11-13  3:27         ` Jeff King
2012-11-13  3:40           ` Jeff King
2012-11-13  3:55           ` Felipe Contreras
2012-11-13  4:01             ` Jeff King
2012-11-13  6:42               ` Felipe Contreras [this message]
2012-11-13  7:18                 ` Felipe Contreras
2012-11-13  7:47                 ` Jeff King
2012-11-13  9:06                   ` Felipe Contreras
2012-11-13 16:48                     ` Jeff King
2012-11-13 16:49                       ` [PATCH 1/6] ident: make user_ident_explicitly_given private Jeff King
2012-11-14 16:44                         ` Jonathan Nieder
2012-11-14 19:11                           ` Jeff King
2012-11-13 16:52                       ` [PATCH 2/6] ident: keep separate "explicit" flags for author and committer Jeff King
2012-11-13 16:52                       ` [PATCH 3/6] var: accept multiple variables on the command line Jeff King
2012-11-14 17:01                         ` Jonathan Nieder
2012-11-14 19:26                           ` Jeff King
2012-11-13 16:53                       ` [PATCH 4/6] var: provide explicit/implicit ident information Jeff King
2012-11-14 17:06                         ` Jonathan Nieder
2012-11-14 19:53                           ` Jeff King
2012-11-13 16:53                       ` [PATCH 5/6] Git.pm: teach "ident" to query explicitness Jeff King
     [not found]                         ` <20121113172300.GA16241@ftbfs.org>
2012-11-13 17:25                           ` Jeff King
2012-11-14 17:12                         ` Jonathan Nieder
2012-11-14 19:54                           ` Jeff King
2012-11-13 16:53                       ` [PATCH 6/6] send-email: do not prompt for explicit repo ident Jeff King
2012-11-14 17:18                         ` Jonathan Nieder
2012-11-14 20:05                           ` Jeff King
2012-11-14 20:26                             ` Jeff King
2012-11-13 20:35                       ` [PATCH] send-email: add proper default sender Felipe Contreras
2012-11-15  0:07                         ` Jeff King
2012-11-15  1:41                           ` Felipe Contreras
2012-11-15  1:50                             ` Jeff King
2012-11-15  2:14                               ` Felipe Contreras
2012-11-15  0:30                       ` [PATCHv2 0/8] loosening "sender" prompt in send-email Jeff King
2012-11-15  0:33                         ` [PATCHv2 1/8] test-lib: allow negation of prerequisites Jeff King
2012-11-15  7:46                           ` Jonathan Nieder
2012-11-15 16:42                             ` Jeff King
2012-11-15 16:49                               ` Jonathan Nieder
2012-11-15  0:33                         ` [PATCHv2 2/8] t7502: factor out autoident prerequisite Jeff King
2012-11-15  7:49                           ` Jonathan Nieder
2012-11-15  0:34                         ` [PATCHv2 3/8] ident: make user_ident_explicitly_given static Jeff King
2012-11-15  7:51                           ` Jonathan Nieder
2012-11-15  0:34                         ` [PATCHv2 4/8] ident: keep separate "explicit" flags for author and committer Jeff King
2012-11-15  8:04                           ` Jonathan Nieder
2012-11-15  0:35                         ` [PATCHv2 5/8] var: accept multiple variables on the command line Jeff King
2012-11-15  8:10                           ` Jonathan Nieder
2012-11-15  0:35                         ` [PATCHv2 6/8] var: provide explicit/implicit ident information Jeff King
2012-11-15  0:36                         ` [PATCHv2 7/8] Git.pm: teach "ident" to query explicitness Jeff King
2012-11-15  8:13                           ` Jonathan Nieder
2012-11-15  0:36                         ` [PATCHv2 8/8] send-email: do not prompt for explicit repo ident Jeff King
2012-11-15  2:08                           ` Felipe Contreras
2012-11-15  8:33                             ` Jeff King
2012-11-15 10:28                               ` Felipe Contreras
2012-11-15 10:43                                 ` Jeff King
2012-11-15 11:13                                   ` Jeff King
2012-11-15 11:50                                     ` Jeff King
2012-11-15 16:56                                     ` Junio C Hamano
2012-11-15 17:28                                       ` Jeff King
2012-11-16  5:17                                         ` Junio C Hamano
2012-11-16 19:08                                           ` Jeff King
2012-11-16 19:57                                             ` Felipe Contreras
2012-11-16 20:11                                               ` Jeff King
2012-11-16 20:04                                             ` Junio C Hamano
2012-11-15  8:23                           ` Jonathan Nieder
2012-11-13 16:13                   ` [PATCH] send-email: add proper default sender Junio C Hamano
2012-11-13 17:14                     ` Jeff King
2012-11-13 17:23                       ` Junio C Hamano
2012-11-13 17:20   ` Erik Faye-Lund

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

  List information: http://vger.kernel.org/majordomo-info.html

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

  git send-email \
    --in-reply-to='CAMP44s1w3oZhEUM-cnO=kECH2bhdOTGVuKy8JS4uhWFbA_oi3w@mail.gmail.com' \
    --to=felipe.contreras@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jrnieder@gmail.com \
    --cc=peff@peff.net \
    --cc=trast@student.ethz.ch \
    /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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).