~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/versionedfile.py

  • Committer: Robert Collins
  • Date: 2006-03-14 10:27:28 UTC
  • mto: (1615.1.2 bzr.mbp.integration)
  • mto: This revision was merged to the branch mainline in revision 1616.
  • Revision ID: robertc@robertcollins.net-20060314102728-7e47b9b8cd6c3d73
rollback from using deltas to using fulltexts - deltas need more work to be ready.

Show diffs side-by-side

added added

removed removed

Lines of Context:
206
206
    def get_delta(self, version):
207
207
        """Get a delta for constructing version from some other version.
208
208
        
209
 
        :return: (delta_parent, sha1, delta)
 
209
        :return: (delta_parent, sha1, noeol, delta)
210
210
        Where delta_parent is a version id or None to indicate no parent.
211
211
        """
212
212
        raise NotImplementedError(self.get_delta)
213
213
 
 
214
    def get_deltas(self, versions):
 
215
        """Get multiple deltas at once for constructing versions.
 
216
        
 
217
        :return: dict(version_id:(delta_parent, sha1, noeol, delta))
 
218
        Where delta_parent is a version id or None to indicate no parent, and
 
219
        version_id is the version_id created by that delta.
 
220
        """
 
221
        result = {}
 
222
        for version in versions:
 
223
            result[version] = self.get_delta(version)
 
224
        return result
 
225
 
214
226
    def get_suffixes(self):
215
227
        """Return the file suffixes associated with this versioned file."""
216
228
        raise NotImplementedError(self.get_suffixes)
520
532
        graph = self.source.get_graph()
521
533
        order = topo_sort(graph.items())
522
534
        pb = ui.ui_factory.nested_progress_bar()
 
535
        parent_texts = {}
523
536
        try:
524
537
            # TODO for incremental cross-format work:
525
538
            # make a versioned file with the following content:
530
543
            # and the incorrect version data will be ignored.
531
544
            # TODO: for all ancestors that are present in target already,
532
545
            # check them for consistent data, this requires moving sha1 from
 
546
            # 
 
547
            # TODO: remove parent texts when they are not relevant any more for 
 
548
            # memory pressure reduction. RBC 20060313
 
549
            # pb.update('Converting versioned data', 0, len(order))
 
550
            # deltas = self.source.get_deltas(order)
533
551
            for index, version in enumerate(order):
534
552
                pb.update('Converting versioned data', index, len(order))
535
 
                delta_parent, sha1, noeol, delta = self.source.get_delta(version)
536
 
                target.add_delta(version,
537
 
                                 self.source.get_parents(version),
538
 
                                 delta_parent,
539
 
                                 sha1,
540
 
                                 noeol,
541
 
                                 delta)
 
553
                parent_text = target.add_lines(version,
 
554
                                               self.source.get_parents(version),
 
555
                                               self.source.get_lines(version),
 
556
                                               parent_texts=parent_texts)
 
557
                parent_texts[version] = parent_text
 
558
                #delta_parent, sha1, noeol, delta = deltas[version]
 
559
                #target.add_delta(version,
 
560
                #                 self.source.get_parents(version),
 
561
                #                 delta_parent,
 
562
                #                 sha1,
 
563
                #                 noeol,
 
564
                #                 delta)
 
565
                #target.get_lines(version)
542
566
            
543
567
            # this should hit the native code path for target
544
568
            if target is not self.target: