~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/weave.py

PumpĀ inĀ changes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
78
78
    osutils,
79
79
    )
80
80
from bzrlib.errors import (
81
 
    BzrError,
82
 
    ParentMismatch,
 
81
    WeaveError,
 
82
    WeaveFormatError,
 
83
    WeaveParentMismatch,
83
84
    RevisionAlreadyPresent,
84
85
    RevisionNotPresent,
85
86
    UnavailableRepresentation,
102
103
    )
103
104
 
104
105
 
105
 
class WeaveError(BzrError):
106
 
 
107
 
    _fmt = "Error in processing weave: %(msg)s"
108
 
 
109
 
    def __init__(self, msg=None):
110
 
        BzrError.__init__(self)
111
 
        self.msg = msg
112
 
 
113
 
 
114
 
class WeaveRevisionNotPresent(WeaveError):
115
 
 
116
 
    _fmt = "Revision {%(revision_id)s} not present in %(weave)s"
117
 
 
118
 
    def __init__(self, revision_id, weave):
119
 
        WeaveError.__init__(self)
120
 
        self.revision_id = revision_id
121
 
        self.weave = weave
122
 
 
123
 
 
124
 
class WeaveFormatError(WeaveError):
125
 
 
126
 
    _fmt = "Weave invariant violated: %(what)s"
127
 
 
128
 
    def __init__(self, what):
129
 
        WeaveError.__init__(self)
130
 
        self.what = what
131
 
 
132
 
 
133
 
class WeaveTextDiffers(WeaveError):
134
 
 
135
 
    _fmt = ("Weaves differ on text content. Revision:"
136
 
            " {%(revision_id)s}, %(weave_a)s, %(weave_b)s")
137
 
 
138
 
    def __init__(self, revision_id, weave_a, weave_b):
139
 
        WeaveError.__init__(self)
140
 
        self.revision_id = revision_id
141
 
        self.weave_a = weave_a
142
 
        self.weave_b = weave_b
143
 
 
144
 
 
145
106
class WeaveContentFactory(ContentFactory):
146
107
    """Content factory for streaming from weaves.
147
108
 
806
767
        expected_sha1 = self._sha1s[int_index]
807
768
        measured_sha1 = sha_strings(result)
808
769
        if measured_sha1 != expected_sha1:
809
 
            raise errors.VersionedFileInvalidChecksum(
 
770
            raise errors.WeaveInvalidChecksum(
810
771
                    'file %s, revision %s, expected: %s, measured %s'
811
772
                    % (self._weave_name, version_id,
812
773
                       expected_sha1, measured_sha1))
883
844
            hd = sha1s[version].hexdigest()
884
845
            expected = self._sha1s[i]
885
846
            if hd != expected:
886
 
                raise errors.VersionedFileInvalidChecksum(
 
847
                raise errors.WeaveInvalidChecksum(
887
848
                        "mismatched sha1 for version %s: "
888
849
                        "got %s, expected %s"
889
850
                        % (version, hd, expected))
925
886
            n1 = set([self._names[i] for i in self_parents])
926
887
            n2 = set([other._names[i] for i in other_parents])
927
888
            if not self._compatible_parents(n1, n2):
928
 
                raise ParentMismatch(name, n1, n2)
 
889
                raise WeaveParentMismatch("inconsistent parents "
 
890
                    "for version {%s}: %s vs %s" % (name, n1, n2))
929
891
            else:
930
892
                return True         # ok!
931
893
        else: