($$buf =~ /\r?\n\r?\n([^\r\n]+)\r?\n?/)[0]
}
+# returns the modified time of a git repo, same as the "modified" field
+# of a grokmirror manifest
+sub modified ($) {
+ my ($self) = @_;
+ my $modified = 0;
+ my $fh = popen($self, qw(rev-parse --branches));
+ defined $fh or return $modified;
+ local $/ = "\n";
+ foreach my $oid (<$fh>) {
+ chomp $oid;
+ my $buf = cat_file($self, $oid) or next;
+ $$buf =~ /^committer .*?> (\d+) [\+\-]?\d+/sm or next;
+ my $cmt_time = $1;
+ $modified = $cmt_time if $cmt_time > $modified;
+ }
+ $modified || time;
+}
+
1;
__END__
=pod
commit refs/heads/master
mark :13
author AU Thor <e@example.com> 0 +0000
-committer AU Thor <e@example.com> 0 +0000
+committer AU Thor <e@example.com> 749520000 +0000
data 18
add git submodule
from :11
{
my $gcf = PublicInbox::Git->new($dir);
+ is($gcf->modified, 749520000, 'modified time detected from commit');
my $f = 'HEAD:foo.txt';
my @x = $gcf->check($f);
is(scalar @x, 3, 'returned 3 element array for existing file');
ok($gcf->cleanup(time - 30), 'cleanup did not expire');
ok(!$gcf->cleanup(time + 30), 'cleanup can expire');
ok(!$gcf->cleanup, 'cleanup idempotent');
+
+ my $t = $gcf->modified;
+ ok($t <= time, 'repo not modified in the future');
+ isnt($t, 0, 'repo not modified in 1970')
}
use_ok 'PublicInbox::Git', qw(git_unquote git_quote);