def diff(self, file_id, old_path, new_path): """Perform a diff of a single file :param file_id: file-id of the file :param old_path: The path of the file in the old tree :param new_path: The path of the file in the new tree """ try: old_kind = self.old_tree.kind(file_id) except (errors.NoSuchId, errors.NoSuchFile): old_kind = None try: new_kind = self.new_tree.kind(file_id) except (errors.NoSuchId, errors.NoSuchFile): new_kind = None self._diff(file_id, old_path, new_path, old_kind, new_kind) def _diff(self, file_id, old_path, new_path, old_kind, new_kind): result = DiffPath._diff_many(self.differs, file_id, old_path, new_path, old_kind, new_kind) if result is DiffPath.CANNOT_DIFF: error_path = new_path if error_path is None: error_path = old_path raise errors.NoDiffFound(error_path) format_registry = Registry() format_registry.register('default', DiffTree)
:param branch: Branch :param tags: List of tuples with tag name and revision id. """ tags.sort() def sort_time(branch, tags): """Sort tags by time inline. :param branch: Branch :param tags: List of tuples with tag name and revision id. """ timestamps = {} for tag, revid in tags: try: revobj = branch.repository.get_revision(revid) except errors.NoSuchRevision: timestamp = sys.maxint # place them at the end else: timestamp = revobj.timestamp timestamps[revid] = timestamp tags.sort(key=lambda x: timestamps[x[1]]) tag_sort_methods = Registry() tag_sort_methods.register("natural", sort_natural, 'Sort numeric substrings as numbers. (default)') tag_sort_methods.register("alpha", sort_alpha, 'Sort tags lexicographically.') tag_sort_methods.register("time", sort_time, 'Sort tags chronologically.') tag_sort_methods.default_key = "natural"