git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Erik Faye-Lund <kusmabite@gmail.com>
To: Johannes Sixt <j.sixt@viscovery.net>
Cc: GIT Mailing-list <git@vger.kernel.org>,
	msysGit <msysgit@googlegroups.com>,
	 Johannes Schindelin <johannes.schindelin@gmx.de>
Subject: Re: [PATCH] send-email: recognize absolute path on Windows
Date: Tue, 15 Apr 2014 12:42:15 +0200	[thread overview]
Message-ID: <CABPQNSafmC-7zNJZJSZm598pF37_xUMUopgZ3c=ttL_wRDYsfQ@mail.gmail.com> (raw)
In-Reply-To: <534D0ADB.7070702@viscovery.net>

On Tue, Apr 15, 2014 at 12:32 PM, Johannes Sixt <j.sixt@viscovery.net> wrote:
> Am 4/15/2014 10:44, schrieb Erik Faye-Lund:
>> From: Erik Faye-Lund <kusmabite@googlemail.com>
>>
>> On Windows, absolute paths might start with a DOS drive prefix,
>> which this check fails to recognize.
>>
>> Unfortunately, we cannot simply use the file_name_is_absolute
>> helper in File::Spec::Functions, because Git for Windows has an
>> MSYS-based Perl, where this helper doesn't grok DOS
>> drive-prefixes.
>>
>> So let's manually check for these in that case, and fall back to
>> the File::Spec-helper on other platforms (e.g Win32 with native
>> Perl)
>>
>> Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
>> ---
>>
>> Here's a patch that we've been running with a variation of in
>> Git for Windows for a while. That version wasn't quite palatable,
>> as it recognized DOS drive-prefixes on all platforms.
>
> Did you consider patching msysgit's lib/perl5/5.8.8/File/Spec.pm by
> inserting a line "msys => 'Win32'," near the top of the file; it is the
> hash table that decides which path "style" is selected depending on $^O.
> Then File::Spec->file_name_is_absolute($path) could be used without a wrapper.

I did not, but that works, and is IMO much nicer. Thanks for the idea!

>>
>>  git-send-email.perl | 14 +++++++++++++-
>>  1 file changed, 13 insertions(+), 1 deletion(-)
>>
>> diff --git a/git-send-email.perl b/git-send-email.perl
>> index fdb0029..c4d85a7 100755
>> --- a/git-send-email.perl
>> +++ b/git-send-email.perl
>> @@ -1113,6 +1113,18 @@ sub ssl_verify_params {
>>       }
>>  }
>>
>> +sub file_name_is_absolute {
>> +     my ($path) = @_;
>> +
>> +     # msys does not grok DOS drive-prefixes
>> +     if ($^O eq 'msys') {
>> +             return ($path =~ m#^/# || $path =~ m#[a-zA-Z]\:#)
>> +     }
>> +
>> +     require File::Spec::Functions;
>> +     return File::Spec::Functions::file_name_is_absolute($path);
>> +}
>> +
>>  # Returns 1 if the message was sent, and 0 otherwise.
>>  # In actuality, the whole program dies when there
>>  # is an error sending a message.
>> @@ -1197,7 +1209,7 @@ X-Mailer: git-send-email $gitversion
>>
>>       if ($dry_run) {
>>               # We don't want to send the email.
>> -     } elsif ($smtp_server =~ m#^/#) {
>> +     } elsif (file_name_is_absolute($smtp_server)) {
>>               my $pid = open my $sm, '|-';
>>               defined $pid or die $!;
>>               if (!$pid) {
>>
>
> There's another instance in the non-$quiet code path around line 1275 that
> needs the same treatment.

Good catch, thanks!

-- 
-- 
*** Please reply-to-all at all times ***
*** (do not pretend to know who is subscribed and who is not) ***
*** Please avoid top-posting. ***
The msysGit Wiki is here: https://github.com/msysgit/msysgit/wiki - Github accounts are free.

You received this message because you are subscribed to the Google
Groups "msysGit" group.
To post to this group, send email to msysgit@googlegroups.com
To unsubscribe from this group, send email to
msysgit+unsubscribe@googlegroups.com
For more options, and view previous threads, visit this group at
http://groups.google.com/group/msysgit?hl=en_US?hl=en

--- 
You received this message because you are subscribed to the Google Groups "msysGit" group.
To unsubscribe from this group and stop receiving emails from it, send an email to msysgit+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

  reply	other threads:[~2014-04-15 10:42 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-15  8:44 [PATCH] send-email: recognize absolute path on Windows Erik Faye-Lund
2014-04-15 10:32 ` Johannes Sixt
2014-04-15 10:42   ` Erik Faye-Lund [this message]
2014-04-15 16:57     ` Re* " Junio C Hamano
2014-04-15 20:37       ` Junio C Hamano
2014-04-15 20:49         ` Erik Faye-Lund
2014-04-15 21:06           ` Junio C Hamano
2014-04-15 20:28     ` 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

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

  git send-email \
    --in-reply-to='CABPQNSafmC-7zNJZJSZm598pF37_xUMUopgZ3c=ttL_wRDYsfQ@mail.gmail.com' \
    --to=kusmabite@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=j.sixt@viscovery.net \
    --cc=johannes.schindelin@gmx.de \
    --cc=msysgit@googlegroups.com \
    /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 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).