Subject: [PATCH 5/5] gitweb: Fix split patches output (e.g. file to symlink)

From: Jakub Narebski <[email-masked]>
Date: Sun, 7 Jan 2007 02:52:27 +0100

Do not replace /dev/null in two-line from-file/to-file diff header for
split patches ("split" patch mean more than one patch per one
diff-tree raw line) by a/file or b/file link.

Split patches differ from pair of deletion/creation patch in git diff
header: both a/file and b/file are hyperlinks, in all patches in a
split.

Signed-off-by: Jakub Narebski <[email-masked]>
---
 gitweb/gitweb.perl |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index d60d7c6..f46a422 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -2525,7 +2525,7 @@ sub git_patchset_body {
 		last PATCH unless $patch_line;
 		next PATCH if ($patch_line =~ m/^diff /);
 		#assert($patch_line =~ m/^---/) if DEBUG;
-		if ($from{'href'}) {
+		if ($from{'href'} && $patch_line =~ m!^--- "?a/!) {
 			$patch_line = '--- a/' .
 			              $cgi->a({-href=>$from{'href'}, -class=>"path"},
 			                      esc_path($from{'file'}));
@@ -2537,7 +2537,7 @@ sub git_patchset_body {
 		chomp $patch_line;
 
 		#assert($patch_line =~ m/^+++/) if DEBUG;
-		if ($to{'href'}) {
+		if ($to{'href'} && $patch_line =~ m!^\+\+\+ "?b/!) {
 			$patch_line = '+++ b/' .
 			              $cgi->a({-href=>$to{'href'}, -class=>"path"},
 			                      esc_path($to{'file'}));
-- 
1.4.4.3