Instead of using default, diff(1) like from-file/to-file header for combined diff (for a merge commit), which looks like: --- a/git-gui/git-gui.sh +++ b/_git-gui/git-gui.sh_ (where _link_ denotes [hidden] hyperlink), create from-file(n)/to-file header, using n/file for each or parents, e.g.: --- 1/_git-gui/git-gui.sh_ --- 2/_git-gui.sh_ +++ b/_git-gui/git-gui.sh_ Test it on one of merge commits involving rename, e.g. 95f97567c1887d77f3a46b42d8622c76414d964d (rename at top) 5bac4a671907604b5fb4e24ff682d5b0e8431931 (file from one branch) Signed-off-by: Jakub Narebski <jnareb@xxxxxxxxx> --- gitweb/gitweb.perl | 32 ++++++++++++++++++++++++-------- 1 files changed, 24 insertions(+), 8 deletions(-) diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index 795af92..f73f184 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -1045,17 +1045,33 @@ sub format_diff_from_to_header { #assert($line =~ m/^---/) if DEBUG; # no extra formatting "^--- /dev/null" if ($line =~ m!^--- "?a/!) { - if (!$diffinfo->{'nparents'} && # multiple 'from' - $from->{'href'}) { - $line = '--- a/' . - $cgi->a({-href=>$from->{'href'}, -class=>"path"}, - esc_path($from->{'file'})); + if (!$diffinfo->{'nparents'}) { + if ($from->{'href'}) { + $line = '--- a/' . + $cgi->a({-href=>$from->{'href'}, -class=>"path"}, + esc_path($from->{'file'})); + } else { + $line = '--- a/' . + esc_path($from->{'file'}); + } + $result .= qq!<div class="diff from_file">$line</div>\n!; } else { - $line = '--- a/' . - esc_path($from->{'file'}); + for (my $i = 0; $i < $diffinfo->{'nparents'}; $i++) { + if ($from->{'href'}[$i]) { + $result .= qq!<div class="diff from_file">--- ! . + ($i+1) . "/" . + $cgi->a({-href=>$from->{'href'}[$i], -class=>"path"}, + esc_path($from->{'file'}[$i])) . + qq!</div>\n!; + } else { + $result .= qq!<div class="diff from_file">--- /dev/null</div>\n!; + } + } } + } else { + $result .= qq!<div class="diff from_file">$line</div>\n!; } - $result .= qq!<div class="diff from_file">$line</div>\n!; + $line = $to_line; #assert($line =~ m/^\+\+\+/) if DEBUG; -- 1.5.2 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html