\n";
}
}
@@ -1276,27 +1587,27 @@ sub git_diff_print {
sub git_project_list {
my $order = $cgi->param('o');
if (defined $order && $order !~ m/project|descr|owner|age/) {
- die_error(undef, "Invalid order parameter '$order'.");
+ die_error(undef, "Unknown order parameter");
}
- my @list = git_read_projects();
+ my @list = git_get_projects_list();
my @projects;
if (!@list) {
- die_error(undef, "No projects found.");
+ die_error(undef, "No projects found");
}
foreach my $pr (@list) {
- my $head = git_read_head($pr->{'path'});
+ my $head = git_get_head_hash($pr->{'path'});
if (!defined $head) {
next;
}
$ENV{'GIT_DIR'} = "$projectroot/$pr->{'path'}";
- my %co = git_read_commit($head);
+ my %co = parse_commit($head);
if (!%co) {
next;
}
$pr->{'commit'} = \%co;
if (!defined $pr->{'descr'}) {
- my $descr = git_read_description($pr->{'path'}) || "";
+ my $descr = git_get_project_description($pr->{'path'}) || "";
$pr->{'descr'} = chop_str($descr, 25, 5);
}
if (!defined $pr->{'owner'}) {
@@ -1380,81 +1691,74 @@ sub git_project_list {
}
sub git_summary {
- my $descr = git_read_description($project) || "none";
- my $head = git_read_head($project);
- my %co = git_read_commit($head);
- my %cd = date_str($co{'committer_epoch'}, $co{'committer_tz'});
+ my $descr = git_get_project_description($project) || "none";
+ my $head = git_get_head_hash($project);
+ my %co = parse_commit($head);
+ my %cd = parse_date($co{'committer_epoch'}, $co{'committer_tz'});
- my $owner;
- if (-f $projects_list) {
- open (my $fd , $projects_list);
- while (my $line = <$fd>) {
- chomp $line;
- my ($pr, $ow) = split ' ', $line;
- $pr = unescape($pr);
- $ow = unescape($ow);
- if ($pr eq $project) {
- $owner = decode("utf8", $ow, Encode::FB_DEFAULT);
- last;
- }
- }
- close $fd;
- }
- if (!defined $owner) {
- $owner = get_file_owner("$projectroot/$project");
- }
+ my $owner = git_get_project_owner($project);
- my $refs = read_info_ref();
+ my $refs = git_get_references();
git_header_html();
- git_page_nav('summary','', $head);
+ git_print_page_nav('summary','', $head);
print "
\n";
print "
\n" .
"
description
" . esc_html($descr) . "
\n" .
"
owner
$owner
\n" .
- "
last change
$cd{'rfc2822'}
\n" .
- "
\n";
+ "
last change
$cd{'rfc2822'}
\n";
+ # use per project git URL list in $projectroot/$project/cloneurl
+ # or make project git URL from git base URL and project name
+ my $url_tag = "URL";
+ my @url_list = git_get_project_url_list($project);
+ @url_list = map { "$_/$project" } @git_base_url_list unless @url_list;
+ foreach my $git_url (@url_list) {
+ next unless $git_url;
+ print "
$url_tag
$git_url
\n";
+ $url_tag = "";
+ }
+ print "
\n";
- open my $fd, "-|", $GIT, "rev-list", "--max-count=17", git_read_head($project)
- or die_error(undef, "Open git-rev-list failed.");
+ open my $fd, "-|", $GIT, "rev-list", "--max-count=17", git_get_head_hash($project)
+ or die_error(undef, "Open git-rev-list failed");
my @revlist = map { chomp; $_ } <$fd>;
close $fd;
- git_header_div('shortlog');
+ git_print_header_div('shortlog');
git_shortlog_body(\@revlist, 0, 15, $refs,
- $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=shortlog")}, "..."));
+ $cgi->a({-href => href(action=>"shortlog")}, "..."));
- my $taglist = git_read_refs("refs/tags");
+ my $taglist = git_get_refs_list("refs/tags");
if (defined @$taglist) {
- git_header_div('tags');
+ git_print_header_div('tags');
git_tags_body($taglist, 0, 15,
- $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=tags")}, "..."));
+ $cgi->a({-href => href(action=>"tags")}, "..."));
}
- my $headlist = git_read_refs("refs/heads");
+ my $headlist = git_get_refs_list("refs/heads");
if (defined @$headlist) {
- git_header_div('heads');
+ git_print_header_div('heads');
git_heads_body($headlist, $head, 0, 15,
- $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=heads")}, "..."));
+ $cgi->a({-href => href(action=>"heads")}, "..."));
}
git_footer_html();
}
sub git_tag {
- my $head = git_read_head($project);
+ my $head = git_get_head_hash($project);
git_header_html();
- git_page_nav('','', $head,undef,$head);
- my %tag = git_read_tag($hash);
- git_header_div('commit', esc_html($tag{'name'}), $hash);
+ git_print_page_nav('','', $head,undef,$head);
+ my %tag = parse_tag($hash);
+ git_print_header_div('commit', esc_html($tag{'name'}), $hash);
print "
\n";
+ git_history_body($fd, $refs, $hash_base, $ftype);
+
close $fd;
git_footer_html();
}
sub git_search {
if (!defined $searchtext) {
- die_error("", "Text field empty.");
+ die_error(undef, "Text field empty");
}
if (!defined $hash) {
- $hash = git_read_head($project);
+ $hash = git_get_head_hash($project);
}
- my %co = git_read_commit($hash);
+ my %co = parse_commit($hash);
if (!%co) {
- die_error(undef, "Unknown commit object.");
+ die_error(undef, "Unknown commit object");
}
# pickaxe may take all resources of your box and run for several minutes
# with every query - so decide by yourself how public you make this feature :)
@@ -2347,8 +2526,8 @@ sub git_search {
$pickaxe_search = 1;
}
git_header_html();
- git_page_nav('','', $hash,$co{'tree'},$hash);
- git_header_div('commit', esc_html($co{'title'}), $hash);
+ git_print_page_nav('','', $hash,$co{'tree'},$hash);
+ git_print_header_div('commit', esc_html($co{'title'}), $hash);
print "
\n";
my $alternate = 0;
@@ -2366,7 +2545,7 @@ sub git_search {
next;
}
my @commit_lines = split "\n", $commit_text;
- my %co = git_read_commit(undef, \@commit_lines);
+ my %co = parse_commit(undef, \@commit_lines);
if (!%co) {
next;
}
@@ -2447,7 +2626,7 @@ sub git_search {
print "\n" .
"\n";
}
- %co = git_read_commit($1);
+ %co = parse_commit($1);
}
}
close $fd;
@@ -2457,22 +2636,22 @@ sub git_search {
}
sub git_shortlog {
- my $head = git_read_head($project);
+ my $head = git_get_head_hash($project);
if (!defined $hash) {
$hash = $head;
}
if (!defined $page) {
$page = 0;
}
- my $refs = read_info_ref();
+ my $refs = git_get_references();
my $limit = sprintf("--max-count=%i", (100 * ($page+1)));
open my $fd, "-|", $GIT, "rev-list", $limit, $hash
- or die_error(undef, "Open git-rev-list failed.");
+ or die_error(undef, "Open git-rev-list failed");
my @revlist = map { chomp; $_ } <$fd>;
close $fd;
- my $paging_nav = git_get_paging_nav('shortlog', $hash, $head, $page, $#revlist);
+ my $paging_nav = format_paging_nav('shortlog', $hash, $head, $page, $#revlist);
my $next_link = '';
if ($#revlist >= (100 * ($page+1)-1)) {
$next_link =
@@ -2482,8 +2661,8 @@ sub git_shortlog {
git_header_html();
- git_page_nav('shortlog','', $hash,$hash,$hash, $paging_nav);
- git_header_div('summary', $project);
+ git_print_page_nav('shortlog','', $hash,$hash,$hash, $paging_nav);
+ git_print_header_div('summary', $project);
git_shortlog_body(\@revlist, ($page * 100), $#revlist, $refs, $next_link);
@@ -2495,10 +2674,10 @@ sub git_shortlog {
sub git_rss {
# http://www.notestips.com/80256B3A007F2692/1/NAMO5P9UPQ
- open my $fd, "-|", $GIT, "rev-list", "--max-count=150", git_read_head($project)
- or die_error(undef, "Open git-rev-list failed.");
+ open my $fd, "-|", $GIT, "rev-list", "--max-count=150", git_get_head_hash($project)
+ or die_error(undef, "Open git-rev-list failed");
my @revlist = map { chomp; $_ } <$fd>;
- close $fd or die_error(undef, "Reading rev-list failed.");
+ close $fd or die_error(undef, "Reading git-rev-list failed");
print $cgi->header(-type => 'text/xml', -charset => 'utf-8');
print "\n".
"\n";
@@ -2510,12 +2689,12 @@ sub git_rss {
for (my $i = 0; $i <= $#revlist; $i++) {
my $commit = $revlist[$i];
- my %co = git_read_commit($commit);
+ my %co = parse_commit($commit);
# we read 150, we always show 30 and the ones more recent than 48 hours
if (($i >= 20) && ((time - $co{'committer_epoch'}) > 48*60*60)) {
last;
}
- my %cd = date_str($co{'committer_epoch'});
+ my %cd = parse_date($co{'committer_epoch'});
open $fd, "-|", $GIT, "diff-tree", '-r', $co{'parent'}, $co{'id'} or next;
my @difftree = map { chomp; $_ } <$fd>;
close $fd or next;
@@ -2552,7 +2731,7 @@ sub git_rss {
}
sub git_opml {
- my @list = git_read_projects();
+ my @list = git_get_projects_list();
print $cgi->header(-type => 'text/xml', -charset => 'utf-8');
print "\n".
@@ -2565,12 +2744,12 @@ sub git_opml {
foreach my $pr (@list) {
my %proj = %$pr;
- my $head = git_read_head($proj{'path'});
+ my $head = git_get_head_hash($proj{'path'});
if (!defined $head) {
next;
}
$ENV{'GIT_DIR'} = "$projectroot/$proj{'path'}";
- my %co = git_read_commit($head);
+ my %co = parse_commit($head);
if (!%co) {
next;
}