def itemlog(self, path_parts, rev, sortby, first, limit, options): """see vclib.Repository.itemlog docstring rev parameter can be a revision number, a branch number, a tag name, or None. If None, will return information about all revisions, otherwise, will only return information about the specified revision or branch. Option values returned by this implementation: cvs_tags dictionary of Tag objects for all tags encountered """ if self.itemtype(path_parts, rev) != vclib.FILE: # does auth-check raise vclib.Error("Path '%s' is not a file." % (_path_join(path_parts))) path = self.rcsfile(path_parts, 1) sink = TreeSink() rcsparse.parse(open(path, 'rb'), sink) filtered_revs = _file_log(sink.revs.values(), sink.tags, sink.lockinfo, sink.default_branch, rev) for rev in filtered_revs: if rev.prev and len(rev.number) == 2: rev.changed = rev.prev.next_changed options['cvs_tags'] = sink.tags if sortby == vclib.SORTBY_DATE: filtered_revs.sort(_logsort_date_cmp) elif sortby == vclib.SORTBY_REV: filtered_revs.sort(_logsort_rev_cmp) if len(filtered_revs) < first: return [] if limit: return filtered_revs[first:first+limit] return filtered_revs