~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/repofmt/groupcompress_repo.py

  • Committer: Jelmer Vernooij
  • Date: 2011-04-08 15:26:51 UTC
  • mto: (5757.7.6 knitpackrepo-6)
  • mto: This revision was merged to the branch mainline in revision 5790.
  • Revision ID: jelmer@samba.org-20110408152651-6jfhyznacm4lp5n8
Move implementation of _find_inconsistent_parents to Repository.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1147
1147
            return GroupCHKStreamSource(self, to_format)
1148
1148
        return super(CHKInventoryRepository, self)._get_source(to_format)
1149
1149
 
1150
 
    def _find_inconsistent_revision_parents(self, revisions_iterator=None):
1151
 
        """Find revisions with different parent lists in the revision object
1152
 
        and in the index graph.
1153
 
 
1154
 
        :param revisions_iterator: None, or an iterator of (revid,
1155
 
            Revision-or-None). This iterator controls the revisions checked.
1156
 
        :returns: an iterator yielding tuples of (revison-id, parents-in-index,
1157
 
            parents-in-revision).
1158
 
        """
1159
 
        if not self.is_locked():
1160
 
            raise AssertionError()
1161
 
        vf = self.revisions
1162
 
        if revisions_iterator is None:
1163
 
            revisions_iterator = self._iter_revisions(None)
1164
 
        for revid, revision in revisions_iterator:
1165
 
            if revision is None:
1166
 
                pass
1167
 
            parent_map = vf.get_parent_map([(revid,)])
1168
 
            parents_according_to_index = tuple(parent[-1] for parent in
1169
 
                parent_map[(revid,)])
1170
 
            parents_according_to_revision = tuple(revision.parent_ids)
1171
 
            if parents_according_to_index != parents_according_to_revision:
1172
 
                yield (revid, parents_according_to_index,
1173
 
                    parents_according_to_revision)
1174
 
 
1175
 
    def _check_for_inconsistent_revision_parents(self):
1176
 
        inconsistencies = list(self._find_inconsistent_revision_parents())
1177
 
        if inconsistencies:
1178
 
            raise errors.BzrCheckError(
1179
 
                "Revision index has inconsistent parents.")
1180
 
 
1181
 
    def revision_graph_can_have_wrong_parents(self):
1182
 
        return True
1183
 
 
1184
1150
 
1185
1151
class GroupCHKStreamSource(StreamSource):
1186
1152
    """Used when both the source and target repo are GroupCHK repos."""