[PATCH] Allow using --cc when showing a merge.
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:42:18
Subsystem:
the rest · Maintainer:
Linus Torvalds
Signed-off-by: Junio C Hamano <redacted> --- * This does not do the colorized diff, but just to show ideas where to put the link to ask for the combined diff. gitweb.cgi | 60 +++++++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 47 insertions(+), 13 deletions(-) 1f19febaefbf90dc04a6b37d79ba3a9337decaff
diff --git a/gitweb.cgi b/gitweb.cgi
index c1bb624..d2659ea 100755
--- a/gitweb.cgi
+++ b/gitweb.cgi@@ -191,6 +191,9 @@ if (!defined $action || $action eq "summ } elsif ($action eq "commitdiff_plain") { git_commitdiff_plain(); exit; +} elsif ($action eq "combinediff") { + git_combinediff(); + exit; } elsif ($action eq "history") { git_history(); exit;
@@ -1762,7 +1765,15 @@ sub git_commit { "</tr>\n"; print "<tr><td>committer</td><td>" . esc_html($co{'committer'}) . "</td></tr>\n"; print "<tr><td></td><td> $cd{'rfc2822'}" . sprintf(" (%02d:%02d %s)", $cd{'hour_local'}, $cd{'minute_local'}, $cd{'tz_local'}) . "</td></tr>\n"; - print "<tr><td>commit</td><td style=\"font-family:monospace\">$co{'id'}</td></tr>\n"; + print "<tr><td>commit</td><td style=\"font-family:monospace\">$co{'id'}</td>"; + if (1 < @{$co{'parents'}}) { + print '<td class="link">'; + print $cgi->a({-href => "$my_uri?" . + esc_param("p=$project;a=combinediff;". + "h=$hash")}, "combinediff"); + print '</td>'; + } + print "</tr>\n"; print "<tr>" . "<td>tree</td>" . "<td style=\"font-family:monospace\">" .
@@ -2044,6 +2055,38 @@ sub git_commitdiff { git_footer_html(); } +sub git_combinediff { + mkdir($git_temp, 0700); + my $fd; + my $refs = read_info_ref("tags"); + open $fd, "-|", "$gitbin/git-describe $hash"; + my ($tagname) = <$fd>; + chomp($tagname); + close $fd; + print $cgi->header(-type => "text/plain", -charset => 'utf-8', '-content-disposition' => "inline; filename=\"git-$hash.patch\""); + my %co = git_read_commit($hash); + my %ad = date_str($co{'author_epoch'}, $co{'author_tz'}); + my $comment = $co{'comment'}; + print "From: $co{'author'}\n" . + "Date: $ad{'rfc2822'} ($ad{'tz_local'})\n". + "Subject: $co{'title'}\n"; + if (defined $tagname) { + print "X-Git-Tag: $tagname\n"; + } + print "\n"; + + foreach my $line (@$comment) {; + print "$line\n"; + } + print "---\n\n"; + + open $fd, "-|", "$gitbin/git-diff-tree --cc $hash"; + while (<$fd>) { + print $_; + } + close $fd; +} + sub git_commitdiff_plain { mkdir($git_temp, 0700); open my $fd, "-|", "$gitbin/git-diff-tree -r $hash_parent $hash" or die_error(undef, "Open failed.");
@@ -2051,20 +2094,11 @@ sub git_commitdiff_plain { close $fd or die_error(undef, "Reading diff-tree failed."); # try to figure out the next tag after this commit - my $tagname; my $refs = read_info_ref("tags"); - open $fd, "-|", "$gitbin/git-rev-list HEAD"; - chomp (my (@commits) = <$fd>); + open $fd, "-|", "$gitbin/git-describe $hash"; + my ($tagname) = <$fd>; + chomp($tagname); close $fd; - foreach my $commit (@commits) { - if (defined $refs->{$commit}) { - $tagname = $refs->{$commit} - } - if ($commit eq $hash) { - last; - } - } - print $cgi->header(-type => "text/plain", -charset => 'utf-8', '-content-disposition' => "inline; filename=\"git-$hash.patch\""); my %co = git_read_commit($hash); my %ad = date_str($co{'author_epoch'}, $co{'author_tz'});
--
1.1.6.gbb042