~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tree.py

First cut at pluralised VersionedFiles. Some rather massive API incompatabilities, primarily because of the difficulty of coherence among competing stores.

Show diffs side-by-side

added added

removed removed

Lines of Context:
358
358
                                 last_revision_base)
359
359
 
360
360
    def _get_file_revision(self, file_id, vf, tree_revision):
 
361
        """Ensure that file_id, tree_revision is in vf to plan the merge."""
361
362
        def file_revision(revision_tree):
362
363
            revision_tree.lock_read()
363
364
            try:
372
373
                except:
373
374
                    yield self.repository.revision_tree(revision_id)
374
375
 
375
 
        if getattr(self, '_get_weave', None) is None:
 
376
        if getattr(self, '_repository', None) is None:
376
377
            last_revision = tree_revision
377
 
            parent_revisions = [file_revision(t) for t in iter_parent_trees()]
378
 
            vf.add_lines(last_revision, parent_revisions,
 
378
            parent_keys = [(file_id, file_revision(t)) for t in
 
379
                iter_parent_trees()]
 
380
            vf.add_lines((file_id, last_revision), parent_keys,
379
381
                         self.get_file(file_id).readlines())
380
382
            repo = self.branch.repository
381
 
            transaction = repo.get_transaction()
382
 
            base_vf = repo.weave_store.get_weave(file_id, transaction)
 
383
            base_vf = repo.texts
383
384
        else:
384
385
            last_revision = file_revision(self)
385
 
            base_vf = self._get_weave(file_id)
386
 
        vf.fallback_versionedfiles.append(base_vf)
 
386
            base_vf = self._repository.texts
 
387
        if base_vf not in vf.fallback_versionedfiles:
 
388
            vf.fallback_versionedfiles.append(base_vf)
387
389
        return last_revision
388
390
 
389
391
    inventory = property(_get_inventory,