git » git-arr » commit c91becc

blob: cap amount of rendered binary blob content

author Eric Sunshine
2015-01-13 09:57:15 UTC
committer Alberto Bertogli
2015-01-13 19:51:45 UTC
parent 6f3942ce38d0417baf57188eebf9bc2075f2f59a

blob: cap amount of rendered binary blob content

Although hexdump(1)-style rendering of binary blob content may reveal
some meaningful information about the data, it wastes even more storage
space than embedding the raw data itself. However, many binary files
have a "magic number" or other signature near the beginning of the file,
so it is often possible to glean useful information from just the
initial chunk of the file without having the entire content available.

Thus, limiting the rendered data to just an initial chunk saves storage
space while still potentially presenting useful information about the
binary content.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Alberto Bertogli <albertito@blitiri.com.ar>

static/git-arr.css +4 -0
views/blob.html +10 -1

diff --git a/static/git-arr.css b/static/git-arr.css
index a3fcadb..4e0c7ad 100644
--- a/static/git-arr.css
+++ b/static/git-arr.css
@@ -171,6 +171,10 @@ table.blob-binary .offset {
     border-right: 1px solid #eee;
 }
 
+table.blob-binary tr.etc {
+    text-align: center;
+}
+
 /* Pygments overrides. */
 div.linenodiv {
     padding-right: 0.5em;
diff --git a/views/blob.html b/views/blob.html
index 74c910a..521fe74 100644
--- a/views/blob.html
+++ b/views/blob.html
@@ -48,7 +48,8 @@
             binary &mdash; {{'{:,}'.format(len(blob.raw_content))}} bytes
         </td>
     </tr>
-%   for offset, hex1, hex2, text in hexdump(blob.raw_content):
+%   lim = 256
+%   for offset, hex1, hex2, text in hexdump(blob.raw_content[:lim]):
     <tr>
         <td class="offset">{{offset}}</td>
         <td><pre>{{hex1}}</pre></td>
@@ -56,6 +57,14 @@
         <td><pre>{{text}}</pre></td>
     </tr>
 %   end
+%   if lim < len(blob.raw_content):
+    <tr class="etc">
+        <td></td>
+        <td>&hellip;</td>
+        <td>&hellip;</td>
+        <td>&hellip;</td>
+    </tr>
+%   end
 </table>
 % elif can_markdown(repo, fname.unicode):
 {{!markdown_blob(blob.utf8_content)}}