pack-objects: reuse deflated data from new-style loose objects.

When packing an object without deltifying, if the data is stored in
a loose object that is encoded with a new style header, copy it without
inflating and deflating.

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Junio C Hamano 2006-07-17 15:06:23 -07:00
parent bb6b8e4f87
commit ceec1361eb

View file

@ -269,6 +269,22 @@ static unsigned long write_object(struct sha1file *f,
* and we do not need to deltify it.
*/
if (!entry->in_pack && !entry->delta) {
unsigned char *map;
unsigned long mapsize;
map = map_sha1_file(entry->sha1, &mapsize);
if (map && !legacy_loose_object(map)) {
/* We can copy straight into the pack file */
sha1write(f, map, mapsize);
munmap(map, mapsize);
written++;
reused++;
return mapsize;
}
if (map)
munmap(map, mapsize);
}
if (! to_reuse) {
buf = read_sha1_file(entry->sha1, type, &size);
if (!buf)