/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 bzrlib/fetch.py

  • Committer: Jelmer Vernooij
  • Date: 2009-05-28 16:04:39 UTC
  • mfrom: (4387 +trunk)
  • mto: This revision was merged to the branch mainline in revision 4405.
  • Revision ID: jelmer@samba.org-20090528160439-4z0xlrk5nejobm7q
Merge bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
    errors,
31
31
    symbol_versioning,
32
32
    )
33
 
from bzrlib.errors import InstallFailed
34
 
from bzrlib.progress import ProgressPhase
35
33
from bzrlib.revision import NULL_REVISION
36
34
from bzrlib.tsort import topo_sort
37
35
from bzrlib.trace import mutter
136
134
            pb.update("Inserting stream")
137
135
            resume_tokens, missing_keys = self.sink.insert_stream(
138
136
                stream, from_format, [])
 
137
            if self.to_repository._fallback_repositories:
 
138
                missing_keys.update(
 
139
                    self._parent_inventories(search.get_keys()))
139
140
            if missing_keys:
140
141
                pb.update("Missing keys")
141
142
                stream = source.get_stream_for_missing_keys(missing_keys)
167
168
        if self._last_revision is NULL_REVISION:
168
169
            # explicit limit of no revisions needed
169
170
            return None
170
 
        if (self._last_revision is not None and
171
 
            self.to_repository.has_revision(self._last_revision)):
172
 
            return None
173
 
        try:
174
 
            return self.to_repository.search_missing_revision_ids(
175
 
                self.from_repository, self._last_revision,
176
 
                find_ghosts=self.find_ghosts)
177
 
        except errors.NoSuchRevision, e:
178
 
            raise InstallFailed([self._last_revision])
 
171
        return self.to_repository.search_missing_revision_ids(
 
172
            self.from_repository, self._last_revision,
 
173
            find_ghosts=self.find_ghosts)
 
174
 
 
175
    def _parent_inventories(self, revision_ids):
 
176
        # Find all the parent revisions referenced by the stream, but
 
177
        # not present in the stream, and make sure we send their
 
178
        # inventories.
 
179
        parent_maps = self.to_repository.get_parent_map(revision_ids)
 
180
        parents = set()
 
181
        map(parents.update, parent_maps.itervalues())
 
182
        parents.discard(NULL_REVISION)
 
183
        parents.difference_update(revision_ids)
 
184
        missing_keys = set(('inventories', rev_id) for rev_id in parents)
 
185
        return missing_keys
179
186
 
180
187
 
181
188
class Inter1and2Helper(object):