gitweb: Give side-by-side diff extra CSS styling
authorJakub Narebski <jnareb@gmail.com>
Sun, 30 Oct 2011 23:36:23 +0000 (00:36 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 31 Oct 2011 22:22:57 +0000 (15:22 -0700)
Use separate background colors for pure removal, pure addition and
change for side-by-side diff. This makes reading such diff easier,
allowing to easily distinguish empty lines in diff from vertical
whitespace used to align chunk blocks.

Note that if lines in diff were numbered, the absence of line numbers
[for one side] would help in distinguishing empty lines from vertical
align.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
gitweb/gitweb.perl
gitweb/static/gitweb.css
index 68629f66c952f85e0294cfa9406d7d0b927eb3a2..f69ed08310df851c44bf2dc9cdb10b2ee2d73577 100755 (executable)
@@ -4890,7 +4890,7 @@ sub print_sidebyside_diff_chunk {
                # empty contents block on start rem/add block, or end of chunk
                if (@ctx && (!$class || $class eq 'rem' || $class eq 'add')) {
                        print join '',
-                               '<div class="chunk_block">',
+                               '<div class="chunk_block ctx">',
                                        '<div class="old">',
                                        @ctx,
                                        '</div>',
@@ -4902,15 +4902,34 @@ sub print_sidebyside_diff_chunk {
                }
                # empty add/rem block on start context block, or end of chunk
                if ((@rem || @add) && (!$class || $class eq 'ctx')) {
-                       print join '',
-                               '<div class="chunk_block">',
-                                       '<div class="old">',
-                                       @rem,
-                                       '</div>',
-                                       '<div class="new">',
-                                       @add,
-                                       '</div>',
-                               '</div>';
+                       if (!@add) {
+                               # pure removal
+                               print join '',
+                                       '<div class="chunk_block rem">',
+                                               '<div class="old">',
+                                               @rem,
+                                               '</div>',
+                                       '</div>';
+                       } elsif (!@rem) {
+                               # pure addition
+                               print join '',
+                                       '<div class="chunk_block add">',
+                                               '<div class="new">',
+                                               @add,
+                                               '</div>',
+                                       '</div>';
+                       } else {
+                               # assume that it is change
+                               print join '',
+                                       '<div class="chunk_block chg">',
+                                               '<div class="old">',
+                                               @rem,
+                                               '</div>',
+                                               '<div class="new">',
+                                               @add,
+                                               '</div>',
+                                       '</div>';
+                       }
                        @rem = @add = ();
                }
 
index 21842a66ac33d8f42e3348006a99ef45acdce24e..c7827e8f1d2f9239bca42d80d2efbaa025300bbb 100644 (file)
@@ -491,6 +491,19 @@ div.chunk_block div.new {
        width: 50%;
 }
 
+div.chunk_block.rem div.old div.diff.rem {
+       background-color: #fff5f5;
+}
+div.chunk_block.add div.new div.diff.add {
+       background-color: #f8fff8;
+}
+div.chunk_block.chg div     div.diff {
+       background-color: #fffff0;
+}
+div.chunk_block.ctx div     div.diff.ctx {
+       color: #404040;
+}
+
 
 div.index_include {
        border: solid #d9d8d1;