aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--git.py20
-rw-r--r--utils.py4
2 files changed, 14 insertions, 10 deletions
diff --git a/git.py b/git.py
index 78f5b1e..9f73fd1 100644
--- a/git.py
+++ b/git.py
@@ -339,12 +339,12 @@ class Repo:
ref = self.branch
return Tree(self, ref)
- def blob(self, path, ref = None, raw = False):
+ def blob(self, path, ref = None):
"""Returns a Blob instance for the given path."""
if not ref:
ref = self.branch
cmd = self.cmd('cat-file')
- cmd.raw(raw)
+ cmd.raw(True)
cmd.batch = None
if isinstance(ref, unicode):
@@ -356,7 +356,7 @@ class Repo:
if not head or head.strip().endswith('missing'):
return None
- return Blob(out.read(), raw)
+ return Blob(out.read())
def last_commit_timestamp(self):
"""Return the timestamp of the last commit."""
@@ -559,8 +559,12 @@ class Tree:
class Blob:
"""A git blob."""
- def __init__(self, content, raw):
- if raw:
- self.raw_content = content
- else:
- self.utf8_content = content
+ def __init__(self, raw_content):
+ self.raw_content = raw_content
+ self._utf8_content = None
+
+ @property
+ def utf8_content(self):
+ if not self._utf8_content:
+ self._utf8_content = self.raw_content.decode('utf8', 'replace')
+ return self._utf8_content
diff --git a/utils.py b/utils.py
index be6ab78..7223303 100644
--- a/utils.py
+++ b/utils.py
@@ -102,9 +102,9 @@ def embed_image_blob(repo, dirname, fname):
mimetype = mimetypes.guess_type(fname)[0]
# Unfortunately, bottle seems to require utf-8 encoded data.
- # We have to refetch the blob with raw=True, because the utf-8 encoded
+ # We have to refetch the blob as raw data, because the utf-8 encoded
# version of the blob available in the bottle template discards binary data.
- raw_blob = repo.blob(dirname + fname, raw = True)
+ raw_blob = repo.blob(dirname + fname)
return '<img style="max-width:100%;" src="data:{0};base64,{1}" />'.format( \
mimetype, base64.b64encode(raw_blob.raw_content))