index 6d492185f8ae1079c3b55a65231694f14e101230..3424cb72bd0e4df845ee11f66a512cfa68b0d5cd 100755 (executable)
use strict;
use warnings;
-require Date::Calc;
+require Time::Local;
require Getopt::Long;
require IPC::Open2;
my %commit;
for my $branch (@BRANCHES) {
my $commitnum = 0;
- IPC::Open2::open2(my $git_out, my $git_in, @git, "origin/$branch")
- || die "can't run @git origin/$branch: $!";
+ my $pid =
+ IPC::Open2::open2(my $git_out, my $git_in, @git, "origin/$branch")
+ || die "can't run @git origin/$branch: $!";
while (my $line = <$git_out>) {
if ($line =~ /^commit\s+(.*)/) {
push_commit(\%commit) if %commit;
elsif ($line =~ /^Date:\s+(.*)/) {
$commit{'date'} = 1ドル;
}
- elsif ($line =~ /^\s+/) {
+ elsif ($line =~ /^\s\s/) {
$commit{'message'} .= $line;
}
}
+ waitpid($pid, 0);
+ my $child_exit_status = $? >> 8;
+ die "@git origin/$branch failed" if $child_exit_status != 0;
}
my %position;
for my $branch (@BRANCHES) {
$position{$branch} = 0;
}
+
while (1) {
my $best_branch;
my $best_inversions;
print $winner->{'header'};
print "Commit-Order-Inversions: $best_inversions\n"
if $best_inversions != 0;
+ print "\n";
print $winner->{'message'};
+ print "\n";
$winner->{'done'} = 1;
for my $branch (@BRANCHES) {
my $leader = $all_commits_by_branch{$branch}->[$position{$branch}];
sub parse_datetime {
my ($dt) = @_;
- $dt =~ /^(\d\d\d\d)-(\d\d)-(\d\d)\s+(\d\d):(\d\d):(\d\d)/;
- return Date::Calc::Mktime(1,ドル 2,ドル 3,ドル 4,ドル 5,ドル 6ドル);
+ $dt =~ /^(\d\d\d\d)-(\d\d)-(\d\d)\s+(\d\d):(\d\d):(\d\d)\s+([-+])(\d\d)(\d\d)$/;
+ my $gm = Time::Local::timegm(6,ドル 5,ドル 4,ドル 3,ドル 2ドル-1, 1ドル);
+ my $tzoffset = (8ドル * 60 + 9ドル) * 60;
+ $tzoffset = - $tzoffset if 7ドル eq '-';
+ return $gm - $tzoffset;
}
sub usage {