| 72 | | |
| 73 | | # check for latest subversion revision every 15 minutes or so |
| 74 | | if (not $c->cache->{svn} or $c->cache->{svn}{last_checked} < time - 15 * 60) { |
| 75 | | eval { |
| 76 | | open my $svn_fh, '-|', 'svn', 'log', '--limit' => 1, '--incremental', $c->site_opts->{svn_url}; |
| 77 | | my (undef, $details, undef, @log) = <$svn_fh>; |
| 78 | | close $svn_fh; |
| 79 | | my ($rev, $user, $time, undef) = split / \| /, $details; |
| 80 | | $rev =~ s/^r//; |
| 81 | | my ($yr, $mo, $day, $hr, $min, $sec, $tz) = split /[- :]/, $time, 7; |
| 82 | | |
| 83 | | $c->cache->{svn} = { |
| 84 | | revision => $rev, |
| 85 | | user => $user, |
| 86 | | time => new DateTime( |
| 87 | | year => $yr, |
| 88 | | month => $mo, |
| 89 | | day => $day, |
| 90 | | hour => $hr, |
| 91 | | minute => $min, |
| 92 | | second => $sec, |
| 93 | | time_zone => substr $tz, 0, 5, |
| 94 | | ), |
| 95 | | last_checked => time, |
| 96 | | log => join '', @log, |
| 97 | | } |
| 98 | | }; |
| 99 | | } |
| 100 | | |
| 101 | | $s->{recent_revision} = $c->cache->{svn}; |