~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/versionedfile.py

Merge bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
 
20
20
"""Versioned text file storage api."""
21
21
 
22
 
 
 
22
from bzrlib.lazy_import import lazy_import
 
23
lazy_import(globals(), """
23
24
from copy import deepcopy
24
 
from unittest import TestSuite
25
 
 
26
 
 
27
 
import bzrlib.errors as errors
 
25
import unittest
 
26
 
 
27
from bzrlib import (
 
28
    errors,
 
29
    tsort,
 
30
    ui,
 
31
    )
 
32
from bzrlib.transport.memory import MemoryTransport
 
33
""")
 
34
 
28
35
from bzrlib.inter import InterObject
29
36
from bzrlib.textmerge import TextMerge
30
 
from bzrlib.transport.memory import MemoryTransport
31
 
from bzrlib.tsort import topo_sort
32
 
from bzrlib import ui
33
37
from bzrlib.symbol_versioning import (deprecated_function,
34
38
        deprecated_method,
35
39
        zero_eight,
403
407
            version_ids,
404
408
            ignore_missing)
405
409
 
406
 
    def iter_lines_added_or_present_in_versions(self, version_ids=None):
 
410
    def iter_lines_added_or_present_in_versions(self, version_ids=None, 
 
411
                                                pb=None):
407
412
        """Iterate over the lines in the versioned file from version_ids.
408
413
 
409
414
        This may return lines from other versions, and does not return the
412
417
        thinks is relevant, but given that such hints are just guesses,
413
418
        its better not to have it if we don't need it.
414
419
 
 
420
        If a progress bar is supplied, it may be used to indicate progress.
 
421
        The caller is responsible for cleaning up progress bars (because this
 
422
        is an iterator).
 
423
 
415
424
        NOTES: Lines are normalised: they will all have \n terminators.
416
425
               Lines are returned in arbitrary order.
417
426
        """
468
477
        """
469
478
        raise NotImplementedError(VersionedFile.plan_merge)
470
479
        
471
 
    def weave_merge(self, plan, a_marker=TextMerge.A_MARKER, 
 
480
    def weave_merge(self, plan, a_marker=TextMerge.A_MARKER,
472
481
                    b_marker=TextMerge.B_MARKER):
473
482
        return PlanWeaveMerge(plan, a_marker, b_marker).merge_lines()[0]
474
483
 
558
567
    InterVersionedFile.get(other).method_name(parameters).
559
568
    """
560
569
 
561
 
    _optimisers = set()
 
570
    _optimisers = []
562
571
    """The available optimised InterVersionedFile types."""
563
572
 
564
573
    def join(self, pb=None, msg=None, version_ids=None, ignore_missing=False):
585
594
            target = temp_source
586
595
        version_ids = self._get_source_version_ids(version_ids, ignore_missing)
587
596
        graph = self.source.get_graph(version_ids)
588
 
        order = topo_sort(graph.items())
 
597
        order = tsort.topo_sort(graph.items())
589
598
        pb = ui.ui_factory.nested_progress_bar()
590
599
        parent_texts = {}
591
600
        try:
672
681
        self._formats = formats
673
682
    
674
683
    def adapt(self, test):
675
 
        result = TestSuite()
 
684
        result = unittest.TestSuite()
676
685
        for (interversionedfile_class,
677
686
             versionedfile_factory,
678
687
             versionedfile_factory_to) in self._formats: