/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/git/repository.py

  • Committer: Jelmer Vernooij
  • Date: 2018-11-16 23:15:15 UTC
  • mfrom: (7180 work)
  • mto: This revision was merged to the branch mainline in revision 7183.
  • Revision ID: jelmer@jelmer.uk-20181116231515-zqd2yn6kj8lfydyp
Merge trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
    trace,
30
30
    transactions,
31
31
    ui,
32
 
    version_info as breezy_version,
33
32
    )
34
33
from ..decorators import only_raises
35
34
from ..foreign import (
106
105
    def check(self, callback_refs=None, check_repo=True):
107
106
        if callback_refs is None:
108
107
            callback_refs = {}
109
 
        with self.repository.lock_read(), ui.ui_factory.nested_progress_bar() as self.progress:
 
108
        with self.repository.lock_read(), \
 
109
                ui.ui_factory.nested_progress_bar() as self.progress:
110
110
            shas = set(self.repository._git.object_store)
111
111
            self.object_count = len(shas)
112
112
            # TODO(jelmer): Check more things
133
133
 
134
134
_optimisers_loaded = False
135
135
 
 
136
 
136
137
def lazy_load_optimisers():
137
138
    global _optimisers_loaded
138
139
    if _optimisers_loaded:
159
160
    def __init__(self, gitdir):
160
161
        self._transport = gitdir.root_transport
161
162
        super(GitRepository, self).__init__(GitRepositoryFormat(),
162
 
            gitdir, control_files=None)
 
163
                                            gitdir, control_files=None)
163
164
        self.base = gitdir.root_transport.base
164
165
        lazy_load_optimisers()
165
166
        self._lock_mode = None
167
168
 
168
169
    def add_fallback_repository(self, basis_url):
169
170
        raise errors.UnstackableRepositoryFormat(self._format,
170
 
            self.control_transport.base)
 
171
                                                 self.control_transport.base)
171
172
 
172
173
    def is_shared(self):
173
174
        return False
288
289
        :param lossy: Whether to discard data that can not be natively
289
290
            represented, when pushing to a foreign VCS
290
291
        """
291
 
        builder = GitCommitBuilder(self, parents, config,
292
 
                timestamp, timezone, committer, revprops, revision_id,
293
 
                lossy)
 
292
        builder = GitCommitBuilder(
 
293
            self, parents, config, timestamp, timezone, committer, revprops,
 
294
            revision_id, lossy)
294
295
        self.start_write_group()
295
296
        return builder
296
297
 
355
356
 
356
357
    def gather_stats(self, revid=None, committers=None):
357
358
        """See Repository.gather_stats()."""
358
 
        result = super(LocalGitRepository, self).gather_stats(revid, committers)
 
359
        result = super(LocalGitRepository, self).gather_stats(
 
360
            revid, committers)
359
361
        revs = []
360
362
        for sha in self._git.object_store:
361
363
            o = self._git.object_store[sha]
370
372
            o = self._git.object_store[sha]
371
373
            if not isinstance(o, Commit):
372
374
                continue
373
 
            rev, roundtrip_revid, verifiers = mapping.import_commit(o,
374
 
                mapping.revision_id_foreign_to_bzr)
 
375
            rev, roundtrip_revid, verifiers = mapping.import_commit(
 
376
                o, mapping.revision_id_foreign_to_bzr)
375
377
            yield o.id, rev.revision_id, roundtrip_revid
376
378
 
377
379
    def all_revision_ids(self):
409
411
    def get_parent_map(self, revids, no_alternates=False):
410
412
        parent_map = {}
411
413
        for revision_id in revids:
412
 
            parents = self._get_parents(revision_id, no_alternates=no_alternates)
 
414
            parents = self._get_parents(
 
415
                revision_id, no_alternates=no_alternates)
413
416
            if revision_id == _mod_revision.NULL_REVISION:
414
417
                parent_map[revision_id] = ()
415
418
                continue
475
478
        commit = self._git.object_store.peel_sha(foreign_revid)
476
479
        if not isinstance(commit, Commit):
477
480
            raise NotCommitError(commit.id)
478
 
        rev, roundtrip_revid, verifiers = mapping.import_commit(commit,
479
 
            mapping.revision_id_foreign_to_bzr)
 
481
        rev, roundtrip_revid, verifiers = mapping.import_commit(
 
482
            commit, mapping.revision_id_foreign_to_bzr)
480
483
        # FIXME: check testament before doing this?
481
484
        if roundtrip_revid:
482
485
            return roundtrip_revid
517
520
            without_sig = Commit.from_string(commit.as_raw_string())
518
521
            without_sig.gpgsig = None
519
522
 
520
 
            (result, key, plain_text) = gpg_strategy.verify(without_sig.as_raw_string(), commit.gpgsig)
 
523
            (result, key, plain_text) = gpg_strategy.verify(
 
524
                without_sig.as_raw_string(), commit.gpgsig)
521
525
            return (result, key)
522
526
 
523
527
    def lookup_bzr_revision_id(self, bzr_revid, mapping=None):
529
533
            details
530
534
        """
531
535
        try:
532
 
            (git_sha, mapping) = mapping_registry.revision_id_bzr_to_foreign(bzr_revid)
 
536
            (git_sha, mapping) = mapping_registry.revision_id_bzr_to_foreign(
 
537
                bzr_revid)
533
538
        except errors.InvalidRevisionId:
534
539
            if mapping is None:
535
540
                mapping = self.get_mapping()
541
546
                # FIXME: Hitting this a lot will be very inefficient...
542
547
                pb = ui.ui_factory.nested_progress_bar()
543
548
                try:
544
 
                    for i, (git_sha, revid, roundtrip_revid) in enumerate(self._iter_revision_ids()):
 
549
                    for i, (git_sha, revid, roundtrip_revid) in enumerate(
 
550
                            self._iter_revision_ids()):
545
551
                        if not roundtrip_revid:
546
552
                            continue
547
553
                        pb.update("resolving revision id", i)
624
630
            required_trees.update(revision.parent_ids[:1])
625
631
 
626
632
        trees = dict((t.get_revision_id(), t) for
627
 
            t in self.revision_trees(required_trees))
 
633
                     t in self.revision_trees(required_trees))
628
634
 
629
635
        # Calculate the deltas
630
636
        for revision in revisions:
634
640
                old_tree = trees[revision.parent_ids[0]]
635
641
            new_tree = trees[revision.revision_id]
636
642
            if specific_fileids is not None:
637
 
                specific_files = [new_tree.id2path(fid) for fid in specific_fileids]
 
643
                specific_files = [new_tree.id2path(
 
644
                    fid) for fid in specific_fileids]
638
645
            else:
639
646
                specific_files = None
640
 
            yield new_tree.changes_from(old_tree, specific_files=specific_files)
 
647
            yield new_tree.changes_from(
 
648
                old_tree, specific_files=specific_files)
641
649
 
642
650
    def set_make_working_trees(self, trees):
643
651
        raise errors.UnsupportedOperation(self.set_make_working_trees, self)
644
652
 
645
653
    def fetch_objects(self, determine_wants, graph_walker, resolve_ext_ref,
646
 
        progress=None, limit=None):
 
654
                      progress=None, limit=None):
647
655
        return self._git.fetch_objects(determine_wants, graph_walker, progress,
648
 
            limit=limit)
 
656
                                       limit=limit)
649
657
 
650
658
 
651
659
class GitRepositoryFormat(repository.RepositoryFormat):
700
708
    from ..bzr.groupcompress_repo import RepositoryFormat2a
701
709
    from . import interrepo
702
710
    return [
703
 
            (interrepo.InterLocalGitNonGitRepository, GitRepositoryFormat(), RepositoryFormat2a()),
704
 
            (interrepo.InterLocalGitLocalGitRepository, GitRepositoryFormat(), GitRepositoryFormat()),
705
 
            (interrepo.InterToLocalGitRepository, RepositoryFormat2a(), GitRepositoryFormat()),
 
711
        (interrepo.InterLocalGitNonGitRepository,
 
712
         GitRepositoryFormat(), RepositoryFormat2a()),
 
713
        (interrepo.InterLocalGitLocalGitRepository,
 
714
         GitRepositoryFormat(), GitRepositoryFormat()),
 
715
        (interrepo.InterToLocalGitRepository,
 
716
         RepositoryFormat2a(), GitRepositoryFormat()),
706
717
        ]