~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/fetch.py

  • Committer: Robert Collins
  • Date: 2009-02-20 05:28:24 UTC
  • mto: This revision was merged to the branch mainline in revision 4024.
  • Revision ID: robertc@robertcollins.net-20090220052824-dfk8xf0mj68mn137
Fix progress bars in fetch after refactoring.

Show diffs side-by-side

added added

removed removed

Lines of Context:
157
157
        # item_keys_introduced_by should have a richer API than it does at the
158
158
        # moment, so that it can feed the progress information back to this
159
159
        # function?
160
 
        pb = bzrlib.ui.ui_factory.nested_progress_bar()
 
160
        self.pb = bzrlib.ui.ui_factory.nested_progress_bar()
161
161
        try:
162
162
            from_format = self.from_repository._format
163
 
            stream = self.get_stream(search, pb, pp)
 
163
            stream = self.get_stream(search, pp)
164
164
            self.sink.insert_stream(stream, from_format)
165
165
            self.sink.finished()
166
166
        finally:
167
 
            if pb is not None:
168
 
                pb.finished()
 
167
            if self.pb is not None:
 
168
                self.pb.finished()
169
169
        
170
 
    def get_stream(self, search, pb, pp):
 
170
    def get_stream(self, search, pp):
171
171
        phase = 'file'
172
172
        revs = search.get_keys()
173
173
        graph = self.from_repository.get_graph()
174
174
        revs = list(graph.iter_topo_order(revs))
175
 
        data_to_fetch = self.from_repository.item_keys_introduced_by(revs,
176
 
                                                                     pb)
 
175
        data_to_fetch = self.from_repository.item_keys_introduced_by(
 
176
            revs, self.pb)
177
177
        text_keys = []
178
178
        for knit_kind, file_id, revisions in data_to_fetch:
179
179
            if knit_kind != phase:
180
180
                phase = knit_kind
181
181
                # Make a new progress bar for this phase
182
 
                pb.finished()
 
182
                self.pb.finished()
183
183
                pp.next_phase()
184
 
                pb = bzrlib.ui.ui_factory.nested_progress_bar()
 
184
                self.pb = bzrlib.ui.ui_factory.nested_progress_bar()
185
185
            if knit_kind == "file":
186
186
                # Accumulate file texts
187
187
                text_keys.extend([(file_id, revision) for revision in
203
203
                    yield _
204
204
                # NB: This currently reopens the inventory weave in source;
205
205
                # using a single stream interface instead would avoid this.
206
 
                pb.update("fetch inventory", 0, 1)
 
206
                self.pb.update("fetch inventory", 0, 1)
207
207
                from_weave = self.from_repository.inventories
208
208
                # we fetch only the referenced inventories because we do not
209
209
                # know for unselected inventories whether all their required
218
218
                # _fetch_revision_texts happens.
219
219
                pass
220
220
            elif knit_kind == "revisions":
221
 
                for _ in self._fetch_revision_texts(revs, pb):
 
221
                for _ in self._fetch_revision_texts(revs, self.pb):
222
222
                    yield _
223
223
            else:
224
224
                raise AssertionError("Unknown knit kind %r" % knit_kind)