Code

gitweb: Add invisible hyperlink to from-file/to-file diff header
authorJakub Narebski <jnareb@gmail.com>
Fri, 25 Aug 2006 19:05:07 +0000 (21:05 +0200)
committerJunio C Hamano <junkio@cox.net>
Sat, 26 Aug 2006 02:41:12 +0000 (19:41 -0700)
Change replacing hashes as from-file/to-file with filenames from
difftree to adding invisible (except underlining on hover/mouseover)
hyperlink to from-file/to-file blob.  /dev/null as from-file or
to-file is not changed (is not hyperlinked).

This makes two-file from-file/to-file unified diff header parsing in
git_patchset_body more generic, and not only for legacy blobdiffs.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
gitweb/gitweb.css
gitweb/gitweb.perl

index 0912361ac8f2800b259e1fa7958deb52a76f2e82..afd9e8a56553b1c9307b46ffa83059ac8ab09573 100644 (file)
@@ -273,11 +273,21 @@ td.mode {
        font-family: monospace;
 }
 
+div.diff a.list {
+       text-decoration: none;
+}
+
+div.diff a.list:hover {
+       text-decoration: underline;
+}
+
+div.diff.to_file a.list,
 div.diff.to_file,
 div.diff.add {
        color: #008800;
 }
 
+div.diff.from_file a.list,
 div.diff.from_file,
 div.diff.rem {
        color: #cc0000;
index b2159bb820f9b71a4150ccc40eda48234b063236..29953429eebe4e683ff6b0d064a4b31687eb0b1f 100755 (executable)
@@ -1711,8 +1711,11 @@ sub git_patchset_body {
 
                        my $file = $diffinfo->{'from_file'};
                        $file  ||= $diffinfo->{'file'};
-                       $patch_line =~ s|a/[0-9a-fA-F]{40}|a/$file|g;
-                       print "<div class=\"diff from_file\">" . esc_html($patch_line) . "</div>\n";
+                       $file = $cgi->a({-href => href(action=>"blob", hash_base=>$hash_parent,
+                                                      hash=>$diffinfo->{'from_id'}, file_name=>$file),
+                                       -class => "list"}, esc_html($file));
+                       $patch_line =~ s|a/.*$|a/$file|g;
+                       print "<div class=\"diff from_file\">$patch_line</div>\n";
 
                        $patch_line = <$fd>;
                        chomp $patch_line;
@@ -1720,8 +1723,11 @@ sub git_patchset_body {
                        #$patch_line =~ m/^+++/;
                        $file    = $diffinfo->{'to_file'};
                        $file  ||= $diffinfo->{'file'};
-                       $patch_line =~ s|b/[0-9a-fA-F]{40}|b/$file|g;
-                       print "<div class=\"diff to_file\">" . esc_html($patch_line) . "</div>\n";
+                       $file = $cgi->a({-href => href(action=>"blob", hash_base=>$hash,
+                                                      hash=>$diffinfo->{'to_id'}, file_name=>$file),
+                                       -class => "list"}, esc_html($file));
+                       $patch_line =~ s|b/.*|b/$file|g;
+                       print "<div class=\"diff to_file\">$patch_line</div>\n";
 
                        next LINE;
                }