~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/repofmt/weaverepo.py

s/NotInOtherForRev/NotInOtherForRevs/, and allow passing multiple revision_ids to search_missing_revision_ids.

Show diffs side-by-side

added added

removed removed

Lines of Context:
39
39
    lockable_files,
40
40
    lockdir,
41
41
    osutils,
 
42
    symbol_versioning,
42
43
    trace,
43
44
    urlutils,
44
45
    versionedfile,
803
804
            self.target.fetch(self.source, revision_id=revision_id)
804
805
 
805
806
    @needs_read_lock
806
 
    def search_missing_revision_ids(self, revision_id=None, find_ghosts=True):
807
 
        """See InterRepository.missing_revision_ids()."""
 
807
    def search_missing_revision_ids(self,
 
808
            revision_id=symbol_versioning.DEPRECATED_PARAMETER,
 
809
            find_ghosts=True, revision_ids=None):
 
810
        """See InterRepository.search_missing_revision_ids()."""
808
811
        # we want all revisions to satisfy revision_id in source.
809
812
        # but we don't want to stat every file here and there.
810
813
        # we want then, all revisions other needs to satisfy revision_id
816
819
        # disk format scales terribly for push anyway due to rewriting
817
820
        # inventory.weave, this is considered acceptable.
818
821
        # - RBC 20060209
819
 
        if revision_id is not None:
820
 
            source_ids = self.source.get_ancestry(revision_id)
821
 
            if source_ids[0] is not None:
822
 
                raise AssertionError()
823
 
            source_ids.pop(0)
824
 
        else:
825
 
            source_ids = self.source._all_possible_ids()
826
 
        source_ids_set = set(source_ids)
 
822
        if symbol_versioning.deprecated_passed(revision_id):
 
823
            symbol_versioning.warn(
 
824
                'search_missing_revision_ids(revision_id=...) was '
 
825
                'deprecated in 2.3.  Use revision_ids=[...] instead.',
 
826
                DeprecationWarning, stacklevel=2)
 
827
            if revision_ids is not None:
 
828
                raise AssertionError(
 
829
                    'revision_ids is mutually exclusive with revision_id')
 
830
            if revision_id is not None:
 
831
                revision_ids = [revision_id]
 
832
        del revision_id
 
833
        source_ids_set = self._present_source_revisions_for(revision_ids)
827
834
        # source_ids is the worst possible case we may need to pull.
828
835
        # now we want to filter source_ids against what we actually
829
836
        # have in target, but don't try to check for existence where we know
833
840
        actually_present_revisions = set(
834
841
            self.target._eliminate_revisions_not_present(possibly_present_revisions))
835
842
        required_revisions = source_ids_set.difference(actually_present_revisions)
836
 
        if revision_id is not None:
 
843
        if revision_ids is not None:
837
844
            # we used get_ancestry to determine source_ids then we are assured all
838
845
            # revisions referenced are present as they are installed in topological order.
839
846
            # and the tip revision was validated by get_ancestry.