/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/interrepo.py

  • Committer: Breezy landing bot
  • Author(s): Jelmer Vernooij
  • Date: 2020-06-01 21:57:00 UTC
  • mfrom: (7490.39.3 move-launchpad)
  • Revision ID: breezy.the.bot@gmail.com-20200601215700-joxuzo6w172gq74v
Move launchpad hoster support to the launchpad plugin.

Merged from https://code.launchpad.net/~jelmer/brz/move-launchpad/+merge/384931

Show diffs side-by-side

added added

removed removed

Lines of Context:
84
84
    )
85
85
from .remote import (
86
86
    RemoteGitRepository,
87
 
    RemoteGitError,
88
87
    )
89
88
from .unpeel_map import (
90
89
    UnpeelMap,
243
242
                # broken symref?
244
243
                continue
245
244
            revid = None
246
 
            if v and not v.startswith(SYMREF):
 
245
            if not v.startswith(SYMREF):
247
246
                try:
248
247
                    for (kind, type_data) in self.source_store.lookup_git_sha(
249
248
                            v):
309
308
                        try:
310
309
                            self.mapping.revision_id_bzr_to_foreign(old_revid)
311
310
                        except InvalidRevisionId:
312
 
                            pass
 
311
                            refname = self.mapping.revid_as_refname(old_revid)
 
312
                            self.target_refs[refname] = git_sha
313
313
                    revidmap[old_revid] = (git_sha, new_revid)
314
314
                self.target_store.add_objects(object_generator)
315
315
                return revidmap
371
371
            return ret
372
372
        self._warn_slow()
373
373
        with self.source_store.lock_read():
374
 
            result = self.target.send_pack(
 
374
            new_refs = self.target.send_pack(
375
375
                git_update_refs, self.source_store.generate_lossy_pack_data)
376
 
            if result is not None and not isinstance(result, dict):
377
 
                for ref, error in result.ref_status.items():
378
 
                    if error:
379
 
                        raise RemoteGitError(
380
 
                            'unable to update ref %r: %s' % (ref, error))
381
 
                new_refs = result.refs
382
 
            else:  # dulwich < 0.20.3
383
 
                new_refs = result
384
376
        # FIXME: revidmap?
385
377
        return revidmap, self.old_refs, new_refs
386
378
 
788
780
        """Be compatible with GitRepository."""
789
781
        return (isinstance(source, RemoteGitRepository) and
790
782
                isinstance(target, LocalGitRepository))
791
 
 
792
 
 
793
 
 
794
 
class InterLocalGitRemoteGitRepository(InterToGitRepository):
795
 
 
796
 
    def fetch_refs(self, update_refs, lossy=False, overwrite=False):
797
 
        """Import the gist of the ancestry of a particular revision."""
798
 
        if lossy:
799
 
            raise LossyPushToSameVCS(self.source, self.target)
800
 
 
801
 
        def git_update_refs(old_refs):
802
 
            ret = {}
803
 
            self.old_refs = {
804
 
                k: (v, None) for (k, v) in viewitems(old_refs)}
805
 
            new_refs = update_refs(self.old_refs)
806
 
            for name, (gitid, revid) in viewitems(new_refs):
807
 
                if gitid is None:
808
 
                    gitid = self.source_store._lookup_revision_sha1(revid)
809
 
                if not overwrite:
810
 
                    if remote_divergence(
811
 
                            old_refs.get(name), gitid, self.source_store):
812
 
                        raise DivergedBranches(self.source, self.target)
813
 
                ret[name] = gitid
814
 
            return ret
815
 
        new_refs = self.target.send_pack(
816
 
            git_update_refs,
817
 
            self.source._git.generate_pack_data)
818
 
        return None, self.old_refs, new_refs
819
 
 
820
 
    @staticmethod
821
 
    def is_compatible(source, target):
822
 
        return (isinstance(source, LocalGitRepository) and
823
 
                isinstance(target, RemoteGitRepository))