gitweb: Add "next" link to commitdiff view
Add a kind of "next" view in the bottom part of navigation bar for "commitdiff" view. For commitdiff between two commits: (from: _commit_) For commitdiff for one single parent commit: (parent: _commit_) For commitdiff for one merge commit (merge: _commit_ _commit_ ...) For commitdiff for root (parentless) commit (initial) where _link_ denotes hyperlink. SHA1 is shortened to 7 characters on display, everything is perhaps unnecessary esc_html on display. Signed-off-by: Jakub Narebski <jnareb@gmail.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
c60c56cc70
commit
151602df00
@ -3396,6 +3396,51 @@ sub git_commitdiff {
|
||||
if (!%co) {
|
||||
die_error(undef, "Unknown commit object");
|
||||
}
|
||||
|
||||
# we need to prepare $formats_nav before any parameter munging
|
||||
my $formats_nav;
|
||||
if ($format eq 'html') {
|
||||
$formats_nav =
|
||||
$cgi->a({-href => href(action=>"commitdiff_plain",
|
||||
hash=>$hash, hash_parent=>$hash_parent)},
|
||||
"raw");
|
||||
|
||||
if (defined $hash_parent) {
|
||||
# commitdiff with two commits given
|
||||
my $hash_parent_short = $hash_parent;
|
||||
if ($hash_parent =~ m/^[0-9a-fA-F]{40}$/) {
|
||||
$hash_parent_short = substr($hash_parent, 0, 7);
|
||||
}
|
||||
$formats_nav .=
|
||||
' (from: ' .
|
||||
$cgi->a({-href => href(action=>"commitdiff",
|
||||
hash=>$hash_parent)},
|
||||
esc_html($hash_parent_short)) .
|
||||
')';
|
||||
} elsif (!$co{'parent'}) {
|
||||
# --root commitdiff
|
||||
$formats_nav .= ' (initial)';
|
||||
} elsif (scalar @{$co{'parents'}} == 1) {
|
||||
# single parent commit
|
||||
$formats_nav .=
|
||||
' (parent: ' .
|
||||
$cgi->a({-href => href(action=>"commitdiff",
|
||||
hash=>$co{'parent'})},
|
||||
esc_html(substr($co{'parent'}, 0, 7))) .
|
||||
')';
|
||||
} else {
|
||||
# merge commit
|
||||
$formats_nav .=
|
||||
' (merge: ' .
|
||||
join(' ', map {
|
||||
$cgi->a({-href => href(action=>"commitdiff",
|
||||
hash=>$_)},
|
||||
esc_html(substr($_, 0, 7)));
|
||||
} @{$co{'parents'}} ) .
|
||||
')';
|
||||
}
|
||||
}
|
||||
|
||||
if (!defined $hash_parent) {
|
||||
$hash_parent = $co{'parent'} || '--root';
|
||||
}
|
||||
@ -3434,10 +3479,6 @@ sub git_commitdiff {
|
||||
if ($format eq 'html') {
|
||||
my $refs = git_get_references();
|
||||
my $ref = format_ref_marker($refs, $co{'id'});
|
||||
my $formats_nav =
|
||||
$cgi->a({-href => href(action=>"commitdiff_plain",
|
||||
hash=>$hash, hash_parent=>$hash_parent)},
|
||||
"raw");
|
||||
|
||||
git_header_html(undef, $expires);
|
||||
git_print_page_nav('commitdiff','', $hash,$co{'tree'},$hash, $formats_nav);
|
||||
|
Loading…
Reference in New Issue
Block a user