~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/reconcile.py

  • Committer: Martin
  • Date: 2010-07-04 07:09:09 UTC
  • mto: This revision was merged to the branch mainline in revision 5333.
  • Revision ID: gzlist@googlemail.com-20100704070909-r51s2leny0wjcqtn
Use same timestamp rounding logic as Inno, just in case

Show diffs side-by-side

added added

removed removed

Lines of Context:
36
36
from bzrlib.versionedfile import AdapterFactory, FulltextContentFactory
37
37
 
38
38
 
39
 
def reconcile(dir, canonicalize_chks=False):
 
39
def reconcile(dir, other=None):
40
40
    """Reconcile the data in dir.
41
41
 
42
42
    Currently this is limited to a inventory 'reweave'.
46
46
    Directly using Reconciler is recommended for library users that
47
47
    desire fine grained control or analysis of the found issues.
48
48
 
49
 
    :param canonicalize_chks: Make sure CHKs are in canonical form.
 
49
    :param other: another bzrdir to reconcile against.
50
50
    """
51
 
    reconciler = Reconciler(dir, canonicalize_chks=canonicalize_chks)
 
51
    reconciler = Reconciler(dir, other=other)
52
52
    reconciler.reconcile()
53
53
 
54
54
 
55
55
class Reconciler(object):
56
56
    """Reconcilers are used to reconcile existing data."""
57
57
 
58
 
    def __init__(self, dir, other=None, canonicalize_chks=False):
 
58
    def __init__(self, dir, other=None):
59
59
        """Create a Reconciler."""
60
60
        self.bzrdir = dir
61
 
        self.canonicalize_chks = canonicalize_chks
62
61
 
63
62
    def reconcile(self):
64
63
        """Perform reconciliation.
99
98
        ui.ui_factory.note('Reconciling repository %s' %
100
99
            self.repo.user_url)
101
100
        self.pb.update("Reconciling repository", 0, 1)
102
 
        if self.canonicalize_chks:
103
 
            try:
104
 
                self.repo.reconcile_canonicalize_chks
105
 
            except AttributeError:
106
 
                raise errors.BzrError(
107
 
                    "%s cannot canonicalize CHKs." % (self.repo,))
108
 
            repo_reconciler = self.repo.reconcile_canonicalize_chks()
109
 
        else:
110
 
            repo_reconciler = self.repo.reconcile(thorough=True)
 
101
        repo_reconciler = self.repo.reconcile(thorough=True)
111
102
        self.inconsistent_parents = repo_reconciler.inconsistent_parents
112
103
        self.garbage_inventories = repo_reconciler.garbage_inventories
113
104
        if repo_reconciler.aborted:
505
496
    #  - unlock the names list
506
497
    # https://bugs.launchpad.net/bzr/+bug/154173
507
498
 
508
 
    def __init__(self, repo, other=None, thorough=False,
509
 
            canonicalize_chks=False):
510
 
        super(PackReconciler, self).__init__(repo, other=other,
511
 
            thorough=thorough)
512
 
        self.canonicalize_chks = canonicalize_chks
513
 
 
514
499
    def _reconcile_steps(self):
515
500
        """Perform the steps to reconcile this repository."""
516
501
        if not self.thorough:
524
509
        total_inventories = len(list(
525
510
            collection.inventory_index.combined_index.iter_all_entries()))
526
511
        if len(all_revisions):
527
 
            if self.canonicalize_chks:
528
 
                reconcile_meth = self.repo._canonicalize_chks_pack
529
 
            else:
530
 
                reconcile_meth = self.repo._reconcile_pack
531
 
            new_pack = reconcile_meth(collection, packs, ".reconcile",
532
 
                all_revisions, self.pb)
 
512
            new_pack =  self.repo._reconcile_pack(collection, packs,
 
513
                ".reconcile", all_revisions, self.pb)
533
514
            if new_pack is not None:
534
515
                self._discard_and_save(packs)
535
516
        else: