Example #1
0
    def run(self, location, verbose=False):
        from breezy.bzr.bundle.serializer import read_bundle
        from breezy.mergeable import read_mergeable_from_url
        from breezy import osutils
        term_encoding = osutils.get_terminal_encoding()
        bundle_info = read_mergeable_from_url(location)
        if isinstance(bundle_info, merge_directive.BaseMergeDirective):
            bundle_file = BytesIO(bundle_info.get_raw_bundle())
            bundle_info = read_bundle(bundle_file)
        else:
            if verbose:
                raise errors.BzrCommandError(
                    gettext('--verbose requires a merge directive'))
        reader_method = getattr(bundle_info, 'get_bundle_reader', None)
        if reader_method is None:
            raise errors.BzrCommandError(
                gettext('Bundle format not supported'))

        by_kind = {}
        file_ids = set()
        for bytes, parents, repo_kind, revision_id, file_id\
                in reader_method().iter_records():
            by_kind.setdefault(repo_kind, []).append(
                (bytes, parents, repo_kind, revision_id, file_id))
            if file_id is not None:
                file_ids.add(file_id)
        self.outf.write(gettext('Records\n'))
        for kind, records in sorted(by_kind.items()):
            multiparent = sum(1 for b, m, k, r, f in records
                              if len(m.get('parents', [])) > 1)
            self.outf.write(
                gettext('{0}: {1} ({2} multiparent)\n').format(
                    kind, len(records), multiparent))
        self.outf.write(gettext('unique files: %d\n') % len(file_ids))
        self.outf.write('\n')
        nicks = set()
        committers = set()
        for revision in bundle_info.real_revisions:
            if 'branch-nick' in revision.properties:
                nicks.add(revision.properties['branch-nick'])
            committers.add(revision.committer)

        self.outf.write(gettext('Revisions\n'))
        self.outf.write(
            (gettext('nicks: %s\n') % ', '.join(sorted(nicks))).encode(
                term_encoding, 'replace'))
        self.outf.write(
            (gettext('committers: \n%s\n') %
             '\n'.join(sorted(committers)).encode(term_encoding, 'replace')))
        if verbose:
            self.outf.write('\n')
            bundle_file.seek(0)
            line = bundle_file.readline()
            line = bundle_file.readline()
            import bz2
            content = bz2.decompress(bundle_file.read())
            self.outf.write(gettext("Decoded contents\n"))
            self.outf.write(content)
            self.outf.write('\n')
Example #2
0
    def init_encodings(self, initial_encoding=None):
        _encodings = UniqueList()
        if initial_encoding:
            _encodings.append(initial_encoding)
        _encodings.append(get_user_encoding())
        _encodings.append(get_terminal_encoding())
        _encodings += python_encodings
        self.encodings = list(filter(is_valid_encoding, _encodings))

        if initial_encoding:
            if initial_encoding not in self.encodings:
                self.encodings.insert(0, initial_encoding)
        else:
            initial_encoding = 'utf-8'
        self._encoding = initial_encoding
Example #3
0
 def _check_can_encode_paths(self):
     fs_enc = sys.getfilesystemencoding()
     terminal_enc = osutils.get_terminal_encoding()
     fname = self.info['filename']
     dir_name = self.info['directory']
     for thing in [fname, dir_name]:
         try:
             thing.encode(fs_enc)
         except UnicodeEncodeError:
             raise tests.TestSkipped(
                 'Unable to represent path %r in filesystem encoding "%s"' %
                 (thing, fs_enc))
         try:
             thing.encode(terminal_enc)
         except UnicodeEncodeError:
             raise tests.TestSkipped(
                 'Unable to represent path %r in terminal encoding "%s"'
                 ' (even though it is valid in filesystem encoding "%s")' %
                 (thing, terminal_enc, fs_enc))