~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/fetch.py

  • Committer: Robert Collins
  • Date: 2006-03-01 08:40:35 UTC
  • mto: (1594.2.4 integration)
  • mto: This revision was merged to the branch mainline in revision 1596.
  • Revision ID: robertc@robertcollins.net-20060301084035-ce00abd11fe4da31
Change weave store to be a versioned store, using WeaveFiles which maintain integrity without needing explicit 'put' operations.

Show diffs side-by-side

added added

removed removed

Lines of Context:
32
32
 
33
33
import bzrlib
34
34
import bzrlib.errors as errors
35
 
from bzrlib.errors import (InstallFailed, NoSuchRevision, WeaveError,
 
35
from bzrlib.errors import (InstallFailed, NoSuchRevision,
36
36
                           MissingText)
37
37
from bzrlib.trace import mutter
38
38
from bzrlib.progress import ProgressBar
160
160
            count +=1
161
161
            to_weave = self.to_weaves.get_weave_or_empty(file_id,
162
162
                self.to_repository.get_transaction())
163
 
            from_weave = self.from_weaves.get_weave(file_id,
164
 
                self.from_repository.get_transaction())
165
163
 
166
164
            if to_weave.numversions() > 0:
167
165
                # destination has contents, must merge
 
166
                from_weave = self.from_weaves.get_weave(file_id,
 
167
                    self.from_repository.get_transaction())
168
168
                try:
169
169
                    to_weave.join(from_weave)
170
170
                except errors.WeaveParentMismatch:
171
171
                    to_weave.reweave(from_weave)
172
172
            else:
173
173
                # destination is empty, just replace it
174
 
                to_weave = from_weave.copy()
175
 
 
176
 
            self.to_weaves.put_weave(file_id, to_weave,
177
 
                self.to_repository.get_transaction())
 
174
                self.to_weaves.copy_multi(self.from_weaves, [file_id], self.pb)
178
175
        self.pb.clear()
179
176
 
180
177
    def _fetch_inventory_weave(self, revs):
181
178
        self.pb.update("inventory fetch", 0, 2)
182
 
        from_weave = self.from_repository.get_inventory_weave()
183
 
        to_weave = self.to_repository.get_inventory_weave()
184
 
        self.pb.update("inventory fetch", 1, 2)
185
179
        to_weave = self.to_control.get_weave('inventory',
186
180
                self.to_repository.get_transaction())
187
 
        self.pb.update("inventory fetch", 2, 2)
188
181
 
189
182
        if to_weave.numversions() > 0:
190
183
            # destination has contents, must merge
 
184
            self.pb.update("inventory fetch", 1, 2)
 
185
            from_weave = self.from_repository.get_inventory_weave()
 
186
            self.pb.update("inventory fetch", 2, 2)
191
187
            try:
192
188
                to_weave.join(from_weave, pb=self.pb, msg='merge inventory')
193
189
            except errors.WeaveParentMismatch:
194
190
                to_weave.reweave(from_weave, pb=self.pb, msg='reweave inventory')
195
191
        else:
196
192
            # destination is empty, just replace it
197
 
            to_weave = from_weave.copy()
198
 
 
199
 
        self.to_control.put_weave('inventory', to_weave,
200
 
            self.to_repository.get_transaction())
 
193
            self.to_control.copy_multi(self.from_control,
 
194
                                       ['inventory'],
 
195
                                       self.pb,
 
196
                                       self.from_repository.get_transaction())
201
197
 
202
198
        self.pb.clear()
203
199