Kay Sievers 20 years ago
parent
commit
d263a6bd45
  1. 71
      gitweb.cgi

71
gitweb.cgi

@ -15,13 +15,14 @@ use CGI::Carp qw(fatalsToBrowser);
use Fcntl ':mode'; use Fcntl ':mode';


my $cgi = new CGI; my $cgi = new CGI;
my $version = "235"; my $version = "236";
my $my_url = $cgi->url(); my $my_url = $cgi->url();
my $my_uri = $cgi->url(-absolute => 1); my $my_uri = $cgi->url(-absolute => 1);
my $rss_link = ""; my $rss_link = "";


# absolute fs-path which will be prepended to the project path # absolute fs-path which will be prepended to the project path
my $projectroot = "/pub/scm"; my $projectroot = "/pub/scm";
$projectroot = "/home/kay/public_html/pub/scm";


# location of the git-core binaries # location of the git-core binaries
my $gitbin = "/usr/bin"; my $gitbin = "/usr/bin";
@ -401,6 +402,37 @@ sub git_read_tag {
return %tag return %tag
} }


sub age_string {
my $age = shift;
my $age_str;

if ($age > 60*60*24*365*2) {
$age_str = (int $age/60/60/24/365);
$age_str .= " years ago";
} elsif ($age > 60*60*24*(365/12)*2) {
$age_str = int $age/60/60/24/(365/12);
$age_str .= " months ago";
} elsif ($age > 60*60*24*7*2) {
$age_str = int $age/60/60/24/7;
$age_str .= " weeks ago";
} elsif ($age > 60*60*24*2) {
$age_str = int $age/60/60/24;
$age_str .= " days ago";
} elsif ($age > 60*60*2) {
$age_str = int $age/60/60;
$age_str .= " hours ago";
} elsif ($age > 60*2) {
$age_str = int $age/60;
$age_str .= " min ago";
} elsif ($age > 2) {
$age_str = int $age;
$age_str .= " sec ago";
} else {
$age_str .= " right now";
}
return $age_str;
}

sub git_read_commit { sub git_read_commit {
my $commit_id = shift; my $commit_id = shift;
my $commit_text = shift; my $commit_text = shift;
@ -473,30 +505,7 @@ sub git_read_commit {


my $age = time - $co{'committer_epoch'}; my $age = time - $co{'committer_epoch'};
$co{'age'} = $age; $co{'age'} = $age;
if ($age > 60*60*24*365*2) { $co{'age_string'} = age_string($age);
$co{'age_string'} = (int $age/60/60/24/365);
$co{'age_string'} .= " years ago";
} elsif ($age > 60*60*24*(365/12)*2) {
$co{'age_string'} = int $age/60/60/24/(365/12);
$co{'age_string'} .= " months ago";
} elsif ($age > 60*60*24*7*2) {
$co{'age_string'} = int $age/60/60/24/7;
$co{'age_string'} .= " weeks ago";
} elsif ($age > 60*60*24*2) {
$co{'age_string'} = int $age/60/60/24;
$co{'age_string'} .= " days ago";
} elsif ($age > 60*60*2) {
$co{'age_string'} = int $age/60/60;
$co{'age_string'} .= " hours ago";
} elsif ($age > 60*2) {
$co{'age_string'} = int $age/60;
$co{'age_string'} .= " min ago";
} elsif ($age > 2) {
$co{'age_string'} = int $age;
$co{'age_string'} .= " sec ago";
} else {
$co{'age_string'} .= " right now";
}
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday) = gmtime($co{'committer_epoch'}); my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday) = gmtime($co{'committer_epoch'});
if ($age > 60*60*24*7*2) { if ($age > 60*60*24*7*2) {
$co{'age_string_date'} = sprintf "%4i-%02u-%02i", 1900 + $year, $mon+1, $mday; $co{'age_string_date'} = sprintf "%4i-%02u-%02i", 1900 + $year, $mon+1, $mday;
@ -839,11 +848,19 @@ sub git_read_refs {
my %co; my %co;
$ref_item{'type'} = $type; $ref_item{'type'} = $type;
$ref_item{'id'} = $ref_id; $ref_item{'id'} = $ref_id;
$ref_item{'epoch'} = 0;
$ref_item{'age'} = "unknown";
if ($type eq "tag") { if ($type eq "tag") {
my %tag = git_read_tag($ref_id); my %tag = git_read_tag($ref_id);
$ref_item{'comment'} = $tag{'comment'}; $ref_item{'comment'} = $tag{'comment'};
if ($tag{'type'} eq "commit") { if ($tag{'type'} eq "commit") {
%co = git_read_commit($tag{'object'}); %co = git_read_commit($tag{'object'});
$ref_item{'epoch'} = $co{'committer_epoch'};
$ref_item{'age'} = $co{'age_string'};
} elsif (defined($tag{'epoch'})) {
my $age = time - $tag{'epoch'};
$ref_item{'epoch'} = $tag{'epoch'};
$ref_item{'age'} = age_string($age);
} }
$ref_item{'reftype'} = $tag{'type'}; $ref_item{'reftype'} = $tag{'type'};
$ref_item{'name'} = $tag{'name'}; $ref_item{'name'} = $tag{'name'};
@ -854,9 +871,9 @@ sub git_read_refs {
$ref_item{'name'} = $ref_file; $ref_item{'name'} = $ref_file;
$ref_item{'title'} = $co{'title'}; $ref_item{'title'} = $co{'title'};
$ref_item{'refid'} = $ref_id; $ref_item{'refid'} = $ref_id;
$ref_item{'epoch'} = $co{'committer_epoch'};
$ref_item{'age'} = $co{'age_string'};
} }
$ref_item{'epoch'} = $co{'committer_epoch'} || 0;
$ref_item{'age'} = $co{'age_string'} || "unknown";


push @reflist, \%ref_item; push @reflist, \%ref_item;
} }

Loading…
Cancel
Save