X-Git-Url: https://git.ladys.computer/Gitweb/blobdiff_plain/43a1d2911bc019edc2116adbe000e969af76e28a6ea703994b80dd7364f3520b..739df17f552f684fab90d96e66c4ef9470bc2c156b5113fc2f018b4051a473ff:/gitweb.perl
diff --git a/gitweb.perl b/gitweb.perl
index 716d416..191be31 100755
--- a/gitweb.perl
+++ b/gitweb.perl
@@ -2379,7 +2379,6 @@ sub git_patchset_body {
my $patch_line;
my $diffinfo;
my (%from, %to);
- my ($from_id, $to_id);
print "
\n";
@@ -2393,6 +2392,7 @@ sub git_patchset_body {
PATCH:
while ($patch_line) {
my @diff_header;
+ my ($from_id, $to_id);
# git diff header
#assert($patch_line =~ m/^diff /) if DEBUG;
@@ -2404,7 +2404,7 @@ sub git_patchset_body {
while ($patch_line = <$fd>) {
chomp $patch_line;
- last EXTENDED_HEADER if ($patch_line =~ m/^--- /);
+ last EXTENDED_HEADER if ($patch_line =~ m/^--- |^diff /);
if ($patch_line =~ m/^index ([0-9a-fA-F]{40})..([0-9a-fA-F]{40})/) {
$from_id = $1;
@@ -2440,11 +2440,15 @@ sub git_patchset_body {
$from{'href'} = href(action=>"blob", hash_base=>$hash_parent,
hash=>$diffinfo->{'from_id'},
file_name=>$from{'file'});
+ } else {
+ delete $from{'href'};
}
if ($diffinfo->{'status'} ne "D") { # not deleted file
$to{'href'} = href(action=>"blob", hash_base=>$hash,
hash=>$diffinfo->{'to_id'},
file_name=>$to{'file'});
+ } else {
+ delete $to{'href'};
}
# this is first patch for raw difftree line with $patch_idx index
# we index @$difftree array from 0, but number patches from 1
@@ -2476,11 +2480,11 @@ sub git_patchset_body {
# match
if ($patch_line =~ s!^((copy|rename) from ).*$!$1! && $from{'href'}) {
$patch_line .= $cgi->a({-href=>$from{'href'}, -class=>"path"},
- esc_path($from{'file'}));
+ esc_path($from{'file'}));
}
if ($patch_line =~ s!^((copy|rename) to ).*$!$1! && $to{'href'}) {
- $patch_line = $cgi->a({-href=>$to{'href'}, -class=>"path"},
- esc_path($to{'file'}));
+ $patch_line .= $cgi->a({-href=>$to{'href'}, -class=>"path"},
+ esc_path($to{'file'}));
}
# match
if ($patch_line =~ m/\s(\d{6})$/) {
@@ -2519,6 +2523,8 @@ sub git_patchset_body {
# from-file/to-file diff header
$patch_line = $last_patch_line;
+ last PATCH unless $patch_line;
+ next PATCH if ($patch_line =~ m/^diff /);
#assert($patch_line =~ m/^---/) if DEBUG;
if ($from{'href'}) {
$patch_line = '--- a/' .
@@ -2528,7 +2534,7 @@ sub git_patchset_body {
print "$patch_line
\n";
$patch_line = <$fd>;
- last PATCH unless $patch_line;
+ #last PATCH unless $patch_line;
chomp $patch_line;
#assert($patch_line =~ m/^+++/) if DEBUG;
@@ -2814,8 +2820,12 @@ sub git_tags_body {
print "\n";
}
$alternate ^= 1;
- print "| $tag{'age'} | \n" .
- "" .
+ if (defined $tag{'age'}) {
+ print " | $tag{'age'} | \n";
+ } else {
+ print " | \n";
+ }
+ print "" .
$cgi->a({-href => href(action=>$tag{'reftype'}, hash=>$tag{'refid'}),
-class => "list name"}, esc_html($tag{'name'})) .
" | \n" .
@@ -3209,9 +3219,14 @@ HTML
esc_html($rev));
print "\n";
}
+ open (my $dd, "-|", git_cmd(), "rev-parse", "$full_rev^")
+ or die_error("could not open git-rev-parse");
+ my $parent_commit = <$dd>;
+ close $dd;
+ chomp($parent_commit);
my $blamed = href(action => 'blame',
file_name => $meta->{'filename'},
- hash_base => $full_rev);
+ hash_base => $parent_commit);
print "";
print $cgi->a({ -href => "$blamed#l$orig_lineno",
-id => "l$lineno",
|