Mercurial > hgstorage
changeset 13:3d578fbfeb66
added history
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Sun, 15 May 2011 14:18:04 +0200 |
| parents | a51909f8032d |
| children | 8f53ae3e6696 |
| files | hgstorage.py test_repo.py |
| diffstat | 2 files changed, 43 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/hgstorage.py Sat May 14 13:25:57 2011 +0200 +++ b/hgstorage.py Sun May 15 14:18:04 2011 +0200 @@ -210,6 +210,13 @@ self.storage.repo.commitctx(ctx) self._update() + @staticmethod + def _get_meta(ctx): + date = datetime.datetime.fromtimestamp(ctx.date()[0]) + user = unicode(ctx.user(), "utf8", 'replace').split('<')[0].strip() + message = unicode(ctx.description(), 'utf8', 'replace') + return date, user, message + def load(self, key, rev=None, encoding=None): """Load the content of an item.""" @@ -225,7 +232,19 @@ filectx = self._filectx(key, rev) if rev is None: rev = filectx.filerev() - date = datetime.datetime.fromtimestamp(filectx.date()[0]) - user = unicode(filectx.user(), "utf8", 'replace').split('<')[0].strip() - message = unicode(filectx.description(), 'utf8', 'replace') - return rev, date, user, message + return (rev,) + self._get_meta(filectx) + + def history(self, maxrev=None, minrev=None): + """Iterate over changes history.""" + + maxrev = maxrev or self.tip.rev() + minrev = minrev or 0 + for rev in range(maxrev, minrev - 1, -1): + change = self.storage.repo.changectx(rev) + for filename in change.files(): + try: + file_rev = change[filename].filerev() + except mercurial.revlog.LookupError: + file_rev = -1 + key = self.storage._file_to_key(filename) + yield key, (file_rev,) + self._get_meta(change)
--- a/test_repo.py Sat May 14 13:25:57 2011 +0200 +++ b/test_repo.py Sun May 15 14:18:04 2011 +0200 @@ -123,3 +123,23 @@ items = sorted(s) assert ['title', 'title1', 'title2'] == items + + def test_history(self, storage): + s = storage.session() + s.save('title', 'text1', 'user1', 'message1', -1) + s.save('title1', 'text2', 'user2', 'message2', -1) + s.save('title2', 'text3', 'user3', 'message3', -1) + s.save('title', 'text4', 'user4', 'message4', 0) + history = list(s.history()) + assert u'title' == history[0][0] + assert u'title2' == history[1][0] + assert u'title1' == history[2][0] + assert u'title' == history[3][0] + assert u'user4' == history[0][1][2] + assert u'user3' == history[1][1][2] + assert u'user2' == history[2][1][2] + assert u'user1' == history[3][1][2] + assert u'message4' == history[0][1][3] + assert u'message3' == history[1][1][3] + assert u'message2' == history[2][1][3] + assert u'message1' == history[3][1][3]
