Browse Source

gitweb: Add diff tree, with links to patches, to commitdiff view

Added/uncommented git_difftree_body invocation in git_commitdiff.
Added anchors (via 'id' attribute) to patches in patchset.
git_difftree_body is modified to link to patch anchor when called from
git_commitdiff, instead of link to blobdiff.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
maint
Jakub Narebski 19 years ago committed by Junio C Hamano
parent
commit
b4657e7759
  1. 71
      gitweb/gitweb.perl

71
gitweb/gitweb.perl

@ -1460,6 +1460,7 @@ sub git_difftree_body { @@ -1460,6 +1460,7 @@ sub git_difftree_body {

print "<table class=\"diff_tree\">\n";
my $alternate = 0;
my $patchno = 0;
foreach my $line (@{$difftree}) {
my %diff = parse_difftree_raw_line($line);

@ -1500,8 +1501,14 @@ sub git_difftree_body { @@ -1500,8 +1501,14 @@ sub git_difftree_body {
"<td class=\"link\">" .
$cgi->a({-href => href(action=>"blob", hash=>$diff{'to_id'},
hash_base=>$hash, file_name=>$diff{'file'})},
"blob") .
"</td>\n";
"blob");
if ($action == "commitdiff") {
# link to patch
$patchno++;
print " | " .
$cgi->a({-href => "#patch$patchno"}, "patch");
}
print "</td>\n";

} elsif ($diff{'status'} eq "D") { # deleted
my $mode_chng = "<span class=\"file_status deleted\">[deleted $from_file_type]</span>";
@ -1515,8 +1522,14 @@ sub git_difftree_body { @@ -1515,8 +1522,14 @@ sub git_difftree_body {
$cgi->a({-href => href(action=>"blob", hash=>$diff{'from_id'},
hash_base=>$parent, file_name=>$diff{'file'})},
"blob") .
" | " .
$cgi->a({-href => href(action=>"history", hash_base=>$parent,
" | ";
if ($action == "commitdiff") {
# link to patch
$patchno++;
print " | " .
$cgi->a({-href => "#patch$patchno"}, "patch");
}
print $cgi->a({-href => href(action=>"history", hash_base=>$parent,
file_name=>$diff{'file'})},
"history") .
"</td>\n";
@ -1552,16 +1565,23 @@ sub git_difftree_body { @@ -1552,16 +1565,23 @@ sub git_difftree_body {
print "</td>\n" .
"<td>$mode_chnge</td>\n" .
"<td class=\"link\">" .
$cgi->a({-href => href(action=>"blob", hash=>$diff{'to_id'},
hash_base=>$hash, file_name=>$diff{'file'})},
"blob");
$cgi->a({-href => href(action=>"blob", hash=>$diff{'to_id'},
hash_base=>$hash, file_name=>$diff{'file'})},
"blob");
if ($diff{'to_id'} ne $diff{'from_id'}) { # modified
print " | " .
$cgi->a({-href => href(action=>"blobdiff",
hash=>$diff{'to_id'}, hash_parent=>$diff{'from_id'},
hash_base=>$hash, hash_parent_base=>$parent,
file_name=>$diff{'file'})},
"diff");
if ($action == "commitdiff") {
# link to patch
$patchno++;
print " | " .
$cgi->a({-href => "#patch$patchno"}, "patch");
} else {
print " | " .
$cgi->a({-href => href(action=>"blobdiff",
hash=>$diff{'to_id'}, hash_parent=>$diff{'from_id'},
hash_base=>$hash, hash_parent_base=>$parent,
file_name=>$diff{'file'})},
"diff");
}
}
print " | " .
$cgi->a({-href => href(action=>"history",
@ -1591,12 +1611,19 @@ sub git_difftree_body { @@ -1591,12 +1611,19 @@ sub git_difftree_body {
hash=>$diff{'to_id'}, file_name=>$diff{'to_file'})},
"blob");
if ($diff{'to_id'} ne $diff{'from_id'}) {
print " | " .
$cgi->a({-href => href(action=>"blobdiff",
hash=>$diff{'to_id'}, hash_parent=>$diff{'from_id'},
hash_base=>$hash, hash_parent_base=>$parent,
file_name=>$diff{'to_file'}, file_parent=>$diff{'from_file'})},
"diff");
if ($action == "commitdiff") {
# link to patch
$patchno++;
print " | " .
$cgi->a({-href => "#patch$patchno"}, "patch");
} else {
print " | " .
$cgi->a({-href => href(action=>"blobdiff",
hash=>$diff{'to_id'}, hash_parent=>$diff{'from_id'},
hash_base=>$hash, hash_parent_base=>$parent,
file_name=>$diff{'to_file'}, file_parent=>$diff{'from_file'})},
"diff");
}
}
print "</td>\n";

@ -1629,7 +1656,7 @@ sub git_patchset_body { @@ -1629,7 +1656,7 @@ sub git_patchset_body {
# first patch in patchset
$patch_found = 1;
}
print "<div class=\"patch\">\n";
print "<div class=\"patch\" id=\"patch". ($patch_idx+1) ."\">\n";

if (ref($difftree->[$patch_idx]) eq "HASH") {
$diffinfo = $difftree->[$patch_idx];
@ -2977,8 +3004,8 @@ TEXT @@ -2977,8 +3004,8 @@ TEXT

# write patch
if ($format eq 'html') {
#git_difftree_body(\@difftree, $hash, $hash_parent);
#print "<br/>\n";
git_difftree_body(\@difftree, $hash, $hash_parent);
print "<br/>\n";

git_patchset_body($fd, \@difftree, $hash, $hash_parent);
close $fd;

Loading…
Cancel
Save