Switch to side-by-side view

--- a/ForgeSVN/forgesvn/model/svn.py
+++ b/ForgeSVN/forgesvn/model/svn.py
@@ -63,7 +63,12 @@
         self.status = 'ready'
 
     def log(self, *args, **kwargs):
+        offset = kwargs.pop('offset', 0)
         try:
+            if offset != 0:
+                entry = self._impl.log(self.local_url, limit=1)[0]
+                kwargs = dict(kwargs, revision_start=pysvn.Revision(
+                        pysvn.opt_revision_kind.number, entry.revision.number-offset))
             return [SVNCommit.from_svn(entry, self)
                     for entry in self._impl.log(self.local_url, *args, **kwargs) ]
         except:  # pragma no cover
@@ -96,8 +101,7 @@
     def from_svn(cls, entry, repo):
         result = cls(id=entry.revision.number, repo=repo)
         result.__dict__['_impl'] = entry
-        result.author_username=entry.author
-        result.author=User.by_username(entry.author)
+        result.author_username=entry.get('author')
         result.datetime=datetime.utcfromtimestamp(entry.date)
         return result
 
@@ -128,4 +132,8 @@
     def diff(self):
         return self._repo.diff(self._id-1, self._id)
 
+    @LazyProperty
+    def author(self):
+        return User.by_username(self.author_username)
+
 MappedClass.compile_all()