git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 5/6] gitweb: Add links to blobdiffs in from-file/to-file header for merges

From
Jakub Narebski <jnareb@gmail.com>
Date
Jun 8, 2007, 11:32 UTC
Message-ID
<20070608113000.3594.74677.stgit@roke.D-201>
In-Reply-To
<20070608112337.3594.93976.stgit@roke.D-201>

Add links to diff to file ('blobdiff' view) for each of individual versions of the file in a merge commit to the from-file/to-file header in the patch part of combined 'commitdiff' view for merges.

The from-file/to-file header for combined diff now looks like:
  --- _1_/_git-gui/git-gui.sh_
  --- _2_/_git-gui.sh_
  +++ b/_git-gui/git-gui.sh_

where _<filename>_ link is link to appropriate version of a file ('blob' view), and _<n>_ is link to respective diff to mentioned version of a file ('blobdiff' view). There is even hint provided in the form of title attribute.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
---
As requested by Junio C Hamano and Petr "Pasky" Baudis in:
  Message-ID: <7v1wh1en8k.fsf@assigned-by-dhcp.cox.net>
  Message-ID: <20070528132959.GT4489@pasky.or.cz>

I don't know if the link placement is best possible; I tried for combined diff output be similar to ordinary diff output, but also provide reqeusted additional functionality (which does not make sense for ordinary diff). You have to know ehere to search for the link.

 gitweb/gitweb.perl |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 13114bc..c7acfad 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -1058,7 +1058,7 @@ sub format_extended_diff_header_line {
 
 # format from-file/to-file diff header
 sub format_diff_from_to_header {
-	my ($from_line, $to_line, $diffinfo, $from, $to) = @_;
+	my ($from_line, $to_line, $diffinfo, $from, $to, @parents) = @_;
 	my $line;
 	my $result = '';
 
@@ -1084,7 +1084,17 @@ sub format_diff_from_to_header {
 		for (my $i = 0; $i < $diffinfo->{'nparents'}; $i++) {
 			if ($from->{'href'}[$i]) {
 				$line = '--- ' .
-				        ($i+1) . "/" .
+				        $cgi->a({-href=>href(action=>"blobdiff",
+				                             hash_parent=>$diffinfo->{'from_id'}[$i],
+				                             hash_parent_base=>$parents[$i],
+				                             file_parent=>$from->{'file'}[$i],
+				                             hash=>$diffinfo->{'to_id'},
+				                             hash_base=>$hash,
+				                             file_name=>$to->{'file'}),
+				                 -class=>"path",
+				                 -title=>"diff" . ($i+1)},
+				                $i+1) .
+				        '/' .
 				        $cgi->a({-href=>$from->{'href'}[$i], -class=>"path"},
 				                esc_path($from->{'file'}[$i]));
 			} else {
@@ -3042,7 +3052,8 @@ sub git_patchset_body {
 		#assert($patch_line =~ m/^\+\+\+/) if DEBUG;
 
 		print format_diff_from_to_header($last_patch_line, $patch_line,
-		                                 $diffinfo, \%from, \%to);
+		                                 $diffinfo, \%from, \%to,
+		                                 @hash_parents);
 
 		# the patch itself
 	LINE:
Previous: Jakub NarebskiNext: Jakub Narebski
Message 6 of 8 in “gitweb: 'commitdiff' view improvements”
  1. 0/6 gitweb: 'commitdiff' view improvementsJakub Narebski, Jun 8, 2007
  2. 1/6 gitweb: Provide links to commitdiff to each parent in 'commitdiff' viewJakub Narebski, Jun 8, 2007
  3. 2/6 gitweb: Improve "next" link in commitdiff viewJakub Narebski, Jun 8, 2007
  4. 3/6 gitweb: Split git_patchset_body into separate subroutinesJakub Narebski, Jun 8, 2007
  5. 4/6 gitweb: Create special from-file/to-file header for combined diffJakub Narebski, Jun 8, 2007
  6. 5/6 gitweb: Add links to blobdiffs in from-file/to-file header for mergesJakub Narebski, Jun 8, 2007
  7. 6/6 gitweb: '--cc' for merges in 'commitdiff' viewJakub Narebski, Jun 8, 2007
  8. Junio C HamanoJun 11, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.