Merge branch 'jc/send-email-skip-backup'
A careless invocation of "git send-email directory/" after editing 0001-change.patch with an editor often ends up sending both 0001-change.patch and its backup file, 0001-change.patch~, causing embarrassment and a minor confusion. Detect such an input and offer to skip the backup files when sending the patches out. * jc/send-email-skip-backup: send-email: detect and offer to skip backup files
This commit is contained in:
@ -621,6 +621,8 @@ if (@rev_list_opts) {
|
|||||||
push @files, $repo->command('format-patch', '-o', tempdir(CLEANUP => 1), @rev_list_opts);
|
push @files, $repo->command('format-patch', '-o', tempdir(CLEANUP => 1), @rev_list_opts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@files = handle_backup_files(@files);
|
||||||
|
|
||||||
if ($validate) {
|
if ($validate) {
|
||||||
foreach my $f (@files) {
|
foreach my $f (@files) {
|
||||||
unless (-p $f) {
|
unless (-p $f) {
|
||||||
@ -1727,6 +1729,44 @@ sub validate_patch {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub handle_backup {
|
||||||
|
my ($last, $lastlen, $file, $known_suffix) = @_;
|
||||||
|
my ($suffix, $skip);
|
||||||
|
|
||||||
|
$skip = 0;
|
||||||
|
if (defined $last &&
|
||||||
|
($lastlen < length($file)) &&
|
||||||
|
(substr($file, 0, $lastlen) eq $last) &&
|
||||||
|
($suffix = substr($file, $lastlen)) !~ /^[a-z0-9]/i) {
|
||||||
|
if (defined $known_suffix && $suffix eq $known_suffix) {
|
||||||
|
print "Skipping $file with backup suffix '$known_suffix'.\n";
|
||||||
|
$skip = 1;
|
||||||
|
} else {
|
||||||
|
my $answer = ask("Do you really want to send $file? (y|N): ",
|
||||||
|
valid_re => qr/^(?:y|n)/i,
|
||||||
|
default => 'n');
|
||||||
|
$skip = ($answer ne 'y');
|
||||||
|
if ($skip) {
|
||||||
|
$known_suffix = $suffix;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ($skip, $known_suffix);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub handle_backup_files {
|
||||||
|
my @file = @_;
|
||||||
|
my ($last, $lastlen, $known_suffix, $skip, @result);
|
||||||
|
for my $file (@file) {
|
||||||
|
($skip, $known_suffix) = handle_backup($last, $lastlen,
|
||||||
|
$file, $known_suffix);
|
||||||
|
push @result, $file unless $skip;
|
||||||
|
$last = $file;
|
||||||
|
$lastlen = length($file);
|
||||||
|
}
|
||||||
|
return @result;
|
||||||
|
}
|
||||||
|
|
||||||
sub file_has_nonascii {
|
sub file_has_nonascii {
|
||||||
my $fn = shift;
|
my $fn = shift;
|
||||||
open(my $fh, '<', $fn)
|
open(my $fh, '<', $fn)
|
||||||
|
Reference in New Issue
Block a user