MCPcopy Create free account
hub / github.com/git/git / get_delta

Function get_delta

builtin/pack-objects.c:354–385  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

352}
353
354static void *get_delta(struct object_entry *entry)
355{
356 unsigned long size, base_size, delta_size;
357 void *buf, *base_buf, *delta_buf;
358 enum object_type type;
359 size_t size_st = 0, base_size_st = 0;
360
361 buf = odb_read_object(the_repository->objects, &entry->idx.oid,
362 &type, &size_st);
363 size = cast_size_t_to_ulong(size_st);
364 if (!buf)
365 die(_("unable to read %s"), oid_to_hex(&entry->idx.oid));
366 base_buf = odb_read_object(the_repository->objects,
367 &DELTA(entry)->idx.oid, &type,
368 &base_size_st);
369 base_size = cast_size_t_to_ulong(base_size_st);
370 if (!base_buf)
371 die("unable to read %s",
372 oid_to_hex(&DELTA(entry)->idx.oid));
373 delta_buf = diff_delta(base_buf, base_size,
374 buf, size, &delta_size, 0);
375 /*
376 * We successfully computed this delta once but dropped it for
377 * memory reasons. Something is very wrong if this time we
378 * recompute and create a different delta.
379 */
380 if (!delta_buf || delta_size != DELTA_SIZE(entry))
381 BUG("delta size changed");
382 free(buf);
383 free(base_buf);
384 return delta_buf;
385}
386
387static unsigned long do_compress(void **pptr, unsigned long size)
388{

Callers 1

write_no_reuse_objectFunction · 0.70

Calls 5

odb_read_objectFunction · 0.85
cast_size_t_to_ulongFunction · 0.85
oid_to_hexFunction · 0.85
diff_deltaFunction · 0.85
dieFunction · 0.50

Tested by

no test coverage detected