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

[PATCHv3 8/8] gitweb: Add navigation to select side-by-side diff

From
Jakub Narebski <jnareb@gmail.com>
Date
Oct 30, 2011, 23:36 UTC
Message-ID
<1320017787-18048-9-git-send-email-jnareb@gmail.com>
In-Reply-To
<1320017787-18048-1-git-send-email-jnareb@gmail.com>
From: Kato Kazuyoshi <kato.kazuyoshi@gmail.com>

Add to the lower part of navigation bar (the action specific part) links allowing to switch between 'inline' (ordinary) diff and 'side by side' style diff.

It is not shown for combined / compact combined diff.
Signed-off-by: Kato Kazuyoshi <kato.kazuyoshi@gmail.com>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
---
This patch was originally part of other commit, but was split into a
separate patch.
Note that "blobdiff" should probably also get this navigation.
 gitweb/gitweb.perl |   23 +++++++++++++++++++++++
 1 files changed, 23 insertions(+), 0 deletions(-)
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index ffaea45..f80f259 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -7164,6 +7164,7 @@ sub git_blobdiff {
 		my $formats_nav =
 			$cgi->a({-href => href(action=>"blobdiff_plain", -replay=>1)},
 			        "raw");
+		$formats_nav .= diff_style_nav($diff_style);
 		git_header_html(undef, $expires);
 		if (defined $hash_base && (my %co = parse_commit($hash_base))) {
 			git_print_page_nav('','', $hash_base,$co{'tree'},$hash_base, $formats_nav);
@@ -7221,6 +7222,27 @@ sub git_blobdiff_plain {
 	git_blobdiff('plain');
 }
 
+# assumes that it is added as later part of already existing navigation,
+# so it returns "| foo | bar" rather than just "foo | bar"
+sub diff_style_nav {
+	my ($diff_style, $is_combined) = @_;
+	$diff_style ||= 'inline';
+
+	return "" if ($is_combined);
+
+	my @styles = (inline => 'inline', 'sidebyside' => 'side by side');
+	my %styles = @styles;
+	@styles =
+		@styles[ map { $_ * 2 } 0..$#styles/2 ];
+
+	return join '',
+		map { " | ".$_ }
+		map {
+			$_ eq $diff_style ? $styles{$_} :
+			$cgi->a({-href => href(-replay=>1, diff_style => $_)}, $styles{$_})
+		} @styles;
+}
+
 sub git_commitdiff {
 	my %params = @_;
 	my $format = $params{-format} || 'html';
@@ -7250,6 +7272,7 @@ sub git_commitdiff {
 				$cgi->a({-href => href(action=>"patch", -replay=>1)},
 					"patch");
 		}
+		$formats_nav .= diff_style_nav($diff_style, @{$co{'parents'}} > 1);
 
 		if (defined $hash_parent &&
 		    $hash_parent ne '-c' && $hash_parent ne '--cc') {
-- 
1.7.6
Previous: Jakub Narebski
Message 9 of 9 in “[PATCHv3 0/8] gitweb: side-by-side diff”
  1. Jakub NarebskiOct 30, 2011
  2. 1/8 gitweb: Refactor diff body line classificationJakub Narebski, Oct 30, 2011
  3. 2/8 gitweb: Extract formatting of diff chunk headerJakub Narebski, Oct 30, 2011
  4. 3/8 gitweb: Add a feature to show side-by-side diffJakub Narebski, Oct 30, 2011
  5. 4/8 gitweb: Give side-by-side diff extra CSS stylingJakub Narebski, Oct 30, 2011
  6. 5/8 t9500: Add test for handling incomplete lines in diff by gitwebJakub Narebski, Oct 30, 2011
  7. 6/8 t9500: Add basic sanity tests for side-by-side diff in gitwebJakub Narebski, Oct 30, 2011
  8. 7/8 gitweb: Use href(-replay=>1,...) for formats links in "commitdiff"Jakub Narebski, Oct 30, 2011
  9. 8/8 gitweb: Add navigation to select side-by-side diffJakub Narebski, Oct 30, 2011

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.