~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/fetch.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2006-03-09 06:39:13 UTC
  • mfrom: (1596.2.6 integration)
  • Revision ID: pqm@pqm.ubuntu.com-20060309063913-6d8ce700706d0802
Merge knit performance stage 1.

Show diffs side-by-side

added added

removed removed

Lines of Context:
169
169
                # not reference anything, and its cheap enough
170
170
                to_weave.join(from_weave)
171
171
            else:
172
 
                # destination is empty, just replace it
 
172
                # destination is empty, just copy it.
 
173
                # this copies all the texts, which is useful and 
 
174
                # on per-file basis quite cheap.
173
175
                self.to_weaves.copy_multi(self.from_weaves, [file_id], self.pb,
174
176
                                          self.from_repository.get_transaction(),
175
177
                                          self.to_repository.get_transaction())
180
182
        to_weave = self.to_control.get_weave('inventory',
181
183
                self.to_repository.get_transaction())
182
184
 
183
 
        if to_weave.num_versions() > 0:
184
 
            # destination has contents, must merge
185
 
            self.pb.update("inventory fetch", 1, 2)
186
 
            from_weave = self.from_repository.get_inventory_weave()
187
 
            self.pb.update("inventory fetch", 2, 2)
188
 
            # we fetch only the referenced inventories because we do not
189
 
            # know for unselected inventories whether all their required
190
 
            # texts are present in the other repository - it could be
191
 
            # corrupt.
192
 
            to_weave.join(from_weave, pb=self.pb, msg='merge inventory',
193
 
                          version_ids=revs)
194
 
        else:
195
 
            # destination is empty, just replace it
196
 
            self.to_control.copy_multi(self.from_control,
197
 
                                       ['inventory'],
198
 
                                       self.pb,
199
 
                                       self.from_repository.get_transaction(),
200
 
                                       self.to_repository.get_transaction())
201
 
 
 
185
        # just merge, this is optimisable and its means we dont
 
186
        # copy unreferenced data such as not-needed inventories.
 
187
        self.pb.update("inventory fetch", 1, 2)
 
188
        from_weave = self.from_repository.get_inventory_weave()
 
189
        self.pb.update("inventory fetch", 2, 2)
 
190
        # we fetch only the referenced inventories because we do not
 
191
        # know for unselected inventories whether all their required
 
192
        # texts are present in the other repository - it could be
 
193
        # corrupt.
 
194
        to_weave.join(from_weave, pb=self.pb, msg='merge inventory',
 
195
                      version_ids=revs)
202
196
        self.pb.clear()
203
197
 
204
198
 
232
226
        # but on local disk its a few seconds and sftp push is already insane.
233
227
        # so we just-do-it.
234
228
        # FIXME: repository should inform if this is needed.
235
 
        reconciler = RepoReconciler(self.to_repository)
236
 
        reconciler.reconcile()
 
229
        self.to_repository.reconcile()
237
230
    
238
231
 
239
232
class KnitRepoFetcher(RepoFetcher):
258
251
        from_rf = self.from_repository._revision_store.get_revision_file(
259
252
            from_transaction)
260
253
        to_rf.join(from_rf, version_ids=revs, pb=self.pb)
261
 
        reconciler = RepoReconciler(self.to_repository)
262
 
        reconciler.reconcile()
263
254
 
264
255
 
265
256
class Fetcher(object):