From 7973bc101755b13a1381579c5ee60a716da6ffe1 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Wed, 17 Apr 2019 10:49:15 +0000 Subject: git: calculate modified time of repository This will be used for generating an HTML listing for v1 inboxes, at least. The logic for this follows that of grokmirror, and we may dynamically generate manifest.js.gz natively... --- lib/PublicInbox/Git.pm | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'lib/PublicInbox') diff --git a/lib/PublicInbox/Git.pm b/lib/PublicInbox/Git.pm index 8a96e10c..236f70c1 100644 --- a/lib/PublicInbox/Git.pm +++ b/lib/PublicInbox/Git.pm @@ -312,6 +312,24 @@ sub commit_title ($$) { ($$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 -- cgit v1.2.3-24-ge0c7