mirror of
https://github.com/git/git
synced 2024-08-27 11:39:22 +00:00
gitweb: Refactor common parts of 'log' and 'shortlog' views
Put the common parts of git_log and git_shortlog into git_log_generic subroutine: git_log and git_shortlog are now thin wrappers calling git_log_generic with appropriate arguments. The unification of code responsible for 'log' and 'shorlog' actions lead to the following changes in gitweb output * 'tree' link in page_nav now uses $hash parameter, as was the case for 'shortlog' but not for 'log' * 'log' view now respect $hash_parent limiting, like 'shortlog' did * 'log' view doesn't have special case for empty list anymore, and it always uses page_header linking to summary view, like 'shortlog' did. Signed-off-by: Jakub Narebski <jnareb@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
42671caa7d
commit
15f0b112d8
|
@ -5337,7 +5337,9 @@ sub git_snapshot {
|
|||
close $fd;
|
||||
}
|
||||
|
||||
sub git_log {
|
||||
sub git_log_generic {
|
||||
my ($fmt_name, $body_subr) = @_;
|
||||
|
||||
my $head = git_get_head_hash($project);
|
||||
if (!defined $hash) {
|
||||
$hash = $head;
|
||||
|
@ -5347,16 +5349,21 @@ sub git_log {
|
|||
}
|
||||
my $refs = git_get_references();
|
||||
|
||||
my @commitlist = parse_commits($hash, 101, (100 * $page));
|
||||
my $commit_hash = $hash;
|
||||
if (defined $hash_parent) {
|
||||
$commit_hash = "$hash_parent..$hash";
|
||||
}
|
||||
my @commitlist = parse_commits($commit_hash, 101, (100 * $page));
|
||||
|
||||
my $paging_nav = format_paging_nav('log', $hash, $head, $page, $#commitlist >= 100);
|
||||
my $next_link;
|
||||
my $paging_nav = format_paging_nav($fmt_name, $hash, $head,
|
||||
$page, $#commitlist >= 100);
|
||||
my $next_link = '';
|
||||
if ($#commitlist >= 100) {
|
||||
$next_link =
|
||||
$cgi->a({-href => href(-replay=>1, page=>$page+1),
|
||||
-accesskey => "n", -title => "Alt-n"}, "next");
|
||||
}
|
||||
my ($patch_max) = gitweb_get_feature('patches');
|
||||
my $patch_max = gitweb_get_feature('patches');
|
||||
if ($patch_max) {
|
||||
if ($patch_max < 0 || @commitlist <= $patch_max) {
|
||||
$paging_nav .= " ⋅ " .
|
||||
|
@ -5366,20 +5373,18 @@ sub git_log {
|
|||
}
|
||||
|
||||
git_header_html();
|
||||
git_print_page_nav('log','', $hash,undef,undef, $paging_nav);
|
||||
git_print_page_nav($fmt_name,'', $hash,$hash,$hash, $paging_nav);
|
||||
git_print_header_div('summary', $project);
|
||||
|
||||
if (!@commitlist) {
|
||||
my %co = parse_commit($hash);
|
||||
|
||||
git_print_header_div('summary', $project);
|
||||
print "<div class=\"page_body\"> Last change $co{'age_string'}.<br/><br/></div>\n";
|
||||
}
|
||||
|
||||
git_log_body(\@commitlist, 0, 99, $refs, $next_link);
|
||||
$body_subr->(\@commitlist, 0, 99, $refs, $next_link);
|
||||
|
||||
git_footer_html();
|
||||
}
|
||||
|
||||
sub git_log {
|
||||
git_log_generic('log', \&git_log_body);
|
||||
}
|
||||
|
||||
sub git_commit {
|
||||
$hash ||= $hash_base || "HEAD";
|
||||
my %co = parse_commit($hash)
|
||||
|
@ -6243,44 +6248,7 @@ sub git_search_help {
|
|||
}
|
||||
|
||||
sub git_shortlog {
|
||||
my $head = git_get_head_hash($project);
|
||||
if (!defined $hash) {
|
||||
$hash = $head;
|
||||
}
|
||||
if (!defined $page) {
|
||||
$page = 0;
|
||||
}
|
||||
my $refs = git_get_references();
|
||||
|
||||
my $commit_hash = $hash;
|
||||
if (defined $hash_parent) {
|
||||
$commit_hash = "$hash_parent..$hash";
|
||||
}
|
||||
my @commitlist = parse_commits($commit_hash, 101, (100 * $page));
|
||||
|
||||
my $paging_nav = format_paging_nav('shortlog', $hash, $head, $page, $#commitlist >= 100);
|
||||
my $next_link = '';
|
||||
if ($#commitlist >= 100) {
|
||||
$next_link =
|
||||
$cgi->a({-href => href(-replay=>1, page=>$page+1),
|
||||
-accesskey => "n", -title => "Alt-n"}, "next");
|
||||
}
|
||||
my $patch_max = gitweb_check_feature('patches');
|
||||
if ($patch_max) {
|
||||
if ($patch_max < 0 || @commitlist <= $patch_max) {
|
||||
$paging_nav .= " ⋅ " .
|
||||
$cgi->a({-href => href(action=>"patches", -replay=>1)},
|
||||
"patches");
|
||||
}
|
||||
}
|
||||
|
||||
git_header_html();
|
||||
git_print_page_nav('shortlog','', $hash,$hash,$hash, $paging_nav);
|
||||
git_print_header_div('summary', $project);
|
||||
|
||||
git_shortlog_body(\@commitlist, 0, 99, $refs, $next_link);
|
||||
|
||||
git_footer_html();
|
||||
git_log_generic('shortlog', \&git_shortlog_body);
|
||||
}
|
||||
|
||||
## ......................................................................
|
||||
|
|
Loading…
Reference in a new issue