diff options
author | Junio C Hamano <junkio@cox.net> | 2006-02-21 22:38:43 -0800 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-02-21 22:38:43 -0800 |
commit | 155d12912fec6c60ead6d6c1febda5fa6e6eb128 (patch) | |
tree | cfa9a9521b6d1510cf76ff0fe1b708b30e81412f /sha1_file.c | |
parent | ee072260dbff6914c24d956bcc2d46882831f1a0 (diff) | |
parent | e4c9327a77bd59e85d4b17a612e78977d68773ee (diff) | |
download | git-155d12912fec6c60ead6d6c1febda5fa6e6eb128.tar.gz |
Merge branch 'jc/pack-reuse'
* jc/pack-reuse:
pack-objects: avoid delta chains that are too long.
git-repack: allow passing a couple of flags to pack-objects.
pack-objects: finishing touches.
pack-objects: reuse data from existing packs.
Diffstat (limited to 'sha1_file.c')
-rw-r--r-- | sha1_file.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/sha1_file.c b/sha1_file.c index 1d799f793a..9cab99ae7c 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -828,6 +828,25 @@ static unsigned long unpack_object_header(struct packed_git *p, unsigned long of return offset; } +int check_reuse_pack_delta(struct packed_git *p, unsigned long offset, + unsigned char *base, unsigned long *sizep, + enum object_type *kindp) +{ + unsigned long ptr; + int status = -1; + + use_packed_git(p); + ptr = offset; + ptr = unpack_object_header(p, ptr, kindp, sizep); + if (*kindp != OBJ_DELTA) + goto done; + memcpy(base, p->pack_base + ptr, 20); + status = 0; + done: + unuse_packed_git(p); + return status; +} + void packed_object_info_detail(struct pack_entry *e, char *type, unsigned long *size, |