~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to groupcompress.py

Working better --gc-plain-chk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
158
158
        """Compress lines with label key.
159
159
 
160
160
        :param key: A key tuple. It is stored in the output
161
 
            for identification of the text during decompression.
 
161
            for identification of the text during decompression. If the last
 
162
            element is 'None' it is replaced with the sha1 of the text -
 
163
            e.g. sha1:xxxxxxx.
162
164
        :param lines: The lines to be compressed. Must be split
163
165
            on \n, with the \n preserved.'
164
166
        :param expected_sha: If non-None, the sha the lines are blieved to
168
170
            the group output so far.
169
171
        """
170
172
        sha1 = sha_strings(lines)
 
173
        if key[-1] is None:
 
174
            key = key[:-1] + ('sha1:' + sha1,)
171
175
        label = '\x00'.join(key)
172
176
        # setup good encoding for trailing \n support.
173
177
        if not lines or lines[-1].endswith('\n'):
406
410
    def _check_add(self, key, lines, random_id, check_content):
407
411
        """check that version_id and lines are safe to add."""
408
412
        version_id = key[-1]
409
 
        if contains_whitespace(version_id):
410
 
            raise InvalidRevisionId(version_id, self)
 
413
        if version_id is not None:
 
414
            if contains_whitespace(version_id):
 
415
                raise InvalidRevisionId(version_id, self)
411
416
        self.check_not_reserved_id(version_id)
412
417
        # TODO: If random_id==False and the key is already present, we should
413
418
        # probably check that the existing content is identical to what is
586
591
                    record.get_bytes_as(record.storage_kind))
587
592
            found_sha1, end_point = self._compressor.compress(record.key,
588
593
                split_lines(bytes), record.sha1)
589
 
            self._unadded_refs[record.key] = record.parents
 
594
            if record.key[-1] is None:
 
595
                key = record.key[:-1] + ('sha1:' + found_sha1,)
 
596
            else:
 
597
                key = record.key
 
598
            self._unadded_refs[key] = record.parents
590
599
            yield found_sha1
591
 
            keys_to_add.append((record.key, '%d %d' % (basis_end, end_point),
 
600
            keys_to_add.append((key, '%d %d' % (basis_end, end_point),
592
601
                (record.parents,)))
593
602
            basis_end = end_point
594
603
            if basis_end > 1024 * 1024 * 20: