At http://people.ubuntu.com/~robertc/baz2.0/plugins/groupcompress/trunk
------------------------------------------------------------ revno: 23 revision-id: [email protected] parent: [email protected] committer: Robert Collins <[email protected]> branch nick: trunk timestamp: Mon 2009-01-19 16:46:53 +1100 message: Only decompress as much of the zlib data as is needed to read the text recipe. === modified file 'TODO' --- a/TODO 2008-07-05 18:15:40 +0000 +++ b/TODO 2009-01-19 05:46:53 +0000 @@ -3,3 +3,4 @@ * layers - gc reader/writer and vf layers should be separate * mpdiff usage * other stuff from design + * use byte offsets not line offsets. === modified file 'groupcompress.py' --- a/groupcompress.py 2009-01-07 03:25:15 +0000 +++ b/groupcompress.py 2009-01-19 05:46:53 +0000 @@ -297,8 +297,8 @@ def cleanup_pack_group(versioned_files): + versioned_files.writer.end() versioned_files.stream.close() - versioned_files.writer.end() class GroupCompressVersionedFiles(VersionedFiles): @@ -487,12 +487,15 @@ parents = self._unadded_refs[key] else: index_memo, _, parents, (method, _) = locations[key] - # read + # read the group read_memo = index_memo[0:3] zdata = self._access.get_raw_records([read_memo]).next() - # decompress - plain = zlib.decompress(zdata) - # parse + # decompress - whole thing; this is a bug. + decomp = zlib.decompressobj() + plain = decomp.decompress(zdata, index_memo[4]) + # cheapo debugging: + # print len(zdata), len(plain) + # parse - requires split_lines, better to have byte offsets here. delta_lines = split_lines(plain[index_memo[3]:index_memo[4]]) label, sha1, delta = parse(delta_lines) if label != key: -- bazaar-commits mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/bazaar-commits
