die "$0: '$source_dir' is a Perl directory but does not look like Git working directory\n"
unless -d catdir($source_dir, ".git");
-my $tag_exists = `git --no-pager tag -l $tag_to_compare 2>/dev/null`;
+my $null = $^O eq 'MSWin32' ? 'nul' : '/dev/null';
+
+my $tag_exists = `git --no-pager tag -l $tag_to_compare 2>$null`;
chomp $tag_exists;
die "$0: '$tag_to_compare' is not a known Git tag\n"
$this_dir = $1 if m/^(.*)\//;
/\.pm$/ &&
(!defined($this_dir) || ($this_dir !~ $skip_dirs)) &&
- !exists $skip{$_} &&
+ !exists $skip{$_} &&
!exists $dual_files{$_}
} @all_diffs;
my $pm_version = eval {MM->parse_version($pm_file)};
my $orig_pm_content = get_file_from_git($pm_file, $tag_to_compare);
my $orig_pm_version = eval {MM->parse_version(\$orig_pm_content)};
- next unless
- defined $pm_version &&
- defined $orig_pm_version &&
- $pm_version eq $orig_pm_version;
+ next if ( ! defined $pm_version || ! defined $orig_pm_version );
+ next if ( $pm_version eq 'undef' || $orig_pm_version eq 'undef' ); # sigh
+ next if $pm_version ne $orig_pm_version;
push @output_files, $pm_file;
push @output_diffs, $pm_file unless $pm_eq;
push @output_diffs, $xs_file unless $xs_eq;
sub compare_git_file {
my ($file, $tag) = @_;
- open(my $orig_fh, "-|", "git --no-pager show $tag:$file 2>/dev/null");
+ open(my $orig_fh, "-|", "git --no-pager show $tag:$file 2>$null");
return undef if eof($orig_fh);
my $is_eq = compare($file, $orig_fh) == 0;
close($orig_fh);
sub get_file_from_git {
my ($file, $tag) = @_;
local $/ = undef;
- my $file_content = `git --no-pager show $tag:$file 2>/dev/null`;
+ my $file_content = `git --no-pager show $tag:$file 2>$null`;
return $file_content;
}