Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/gdatastore
diff options
context:
space:
mode:
authorSascha Silbe <sascha-pgp@silbe.org>2011-09-29 18:10:58 (GMT)
committer Sascha Silbe <sascha-pgp@silbe.org>2011-09-29 18:10:58 (GMT)
commitd8e3d402038074fbf4791b827c7c260f6dcf1d20 (patch)
tree5d19d0f64206714fc66fd243468b08ce72cf830e /gdatastore
parent3da458ab108ae31c846fb2aeb3efe67e0d9ae925 (diff)
Pretty-print metadata in git commit message
This is useful for manual inspection of the git repository.
Diffstat (limited to 'gdatastore')
-rw-r--r--gdatastore/datastore.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/gdatastore/datastore.py b/gdatastore/datastore.py
index 2378abc..3b77828 100644
--- a/gdatastore/datastore.py
+++ b/gdatastore/datastore.py
@@ -19,6 +19,7 @@ Gdatastore D-Bus service API
import hashlib
import logging
import os
+import pprint
import shutil
from subprocess import Popen, PIPE
import tempfile
@@ -593,7 +594,7 @@ class InternalApi(object):
[_format_ref(tree_id, parent_id)]).strip()
def _format_commit_message(self, metadata):
- return repr(metadata)
+ return pprint.pformat(to_native(metadata))
def _gen_uuid(self):
return str(uuid.uuid4())
@@ -660,5 +661,17 @@ def calculate_checksum(path):
checksum.update(chunk)
+def to_native(value):
+ if isinstance(value, list):
+ return [to_native(e) for e in value]
+ elif isinstance(value, dict):
+ return dict([(to_native(k), to_native(v)) for k, v in value.items()])
+ elif isinstance(value, unicode):
+ return unicode(value)
+ elif isinstance(value, str):
+ return str(value)
+ return value
+
+
def _format_ref(tree_id, version_id):
return 'refs/gdatastore/%s/%s' % (tree_id, version_id)