summaryrefslogtreecommitdiff
path: root/cache.h
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2013-12-21 14:24:20 (GMT)
committerJunio C Hamano <gitster@pobox.com>2013-12-26 19:53:32 (GMT)
commit5d642e75069334944fcc795a80cf04749dd12857 (patch)
treeaf2396187952817f081170e8b8deff9c051de041 /cache.h
parent7794a680e63a2a11b73cb1194653662f2769a792 (diff)
downloadgit-5d642e75069334944fcc795a80cf04749dd12857.zip
git-5d642e75069334944fcc795a80cf04749dd12857.tar.gz
git-5d642e75069334944fcc795a80cf04749dd12857.tar.bz2
sha1_object_info_extended: provide delta base sha1s
A caller of sha1_object_info_extended technically has enough information to determine the base sha1 from the results of the call. It knows the pack, offset, and delta type of the object, which is sufficient to find the base. However, the functions to do so are not publicly available, and the code itself is intimate enough with the pack details that it should be abstracted away. We could add a public helper to allow callers to query the delta base separately, but it is simpler and slightly more efficient to optionally grab it along with the rest of the object_info data. For cases where the object is not stored as a delta, we write the null sha1 into the query field. A careful caller could check "oi.whence == OI_PACKED && oi.u.packed.is_delta" before looking at the base sha1, but using the null sha1 provides a simple alternative (and gives a better sanity check for a non-careful caller than simply returning random bytes). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'cache.h')
-rw-r--r--cache.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/cache.h b/cache.h
index ce377e1..67356db 100644
--- a/cache.h
+++ b/cache.h
@@ -1074,6 +1074,7 @@ struct object_info {
enum object_type *typep;
unsigned long *sizep;
unsigned long *disk_sizep;
+ unsigned char *delta_base_sha1;
/* Response */
enum {