Re: [PATCH] Add description of OFS_DELTA to the pack format description
Peter Eriksen <s022018@student.dtu.dk> wrote:
Show 17 quoted lines
> diff --git a/Documentation/technical/pack-format.txt b/Documentation/technical/pack-format.txt
> index aa87756..f6b1405 100644
> --- a/Documentation/technical/pack-format.txt
> +++ b/Documentation/technical/pack-format.txt
> @@ -103,10 +103,20 @@ Pack file entry: <+
> packed object data:
> If it is not DELTA, then deflated bytes (the size above
> is the size before compression).
> - If it is DELTA, then
> + If it is REF_DELTA, then
> 20-byte base object name SHA1 (the size above is the
> size of the delta data that follows).
> delta data, deflated.
> + If it is OFS_DELTA, then
> + n-byte offset (see below) (the size above is the
> + size of the delta data that follows).
> + delta data, deflated.
You are missing the description that the position within _this_ packfile is determined by:
offset_of_type_byte - n_byte_offset
The above can still be taken to mean the offset is from the start of the packfile or something like that.
Show 5 quoted lines
> + offset encoding:
> + n bytes with MSB set in all but the last one.
> + The offset is then the number constructed by
> + concatenating the lower 7 bit of each byte, and
> + adding 2^7 + 2^14 + ... + 2^(7*(n-1)) to the result.
Hmm. I've just spent 5 minutes reading this and I'm still not certain what the result is. 2^0 only gets added to the result if there is at least 2 bytes of data in the offset encoding; in your description above it sounds like we should add 2^0 (1) even when there is only 1 offset byte (n=1), which is not correct.
--
Shawn.