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:
parent
bb6b8e4f87
commit
ceec1361eb
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user