docs: document SHA-256 pack and indices
Now that we have SHA-256 support for packs and indices, let's document that in SHA-256 repositories, we use SHA-256 instead of SHA-1 for object names and checksums. Instead of duplicating this information throughout the document, let's just document that in SHA-1 repositories, we use SHA-1 for these purposes, and in SHA-256 repositories, we use SHA-256. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
878e727637
commit
17420eafa9
@ -1,6 +1,12 @@
|
|||||||
Git pack format
|
Git pack format
|
||||||
===============
|
===============
|
||||||
|
|
||||||
|
== Checksums and object IDs
|
||||||
|
|
||||||
|
In a repository using the traditional SHA-1, pack checksums, index checksums,
|
||||||
|
and object IDs (object names) mentioned below are all computed using SHA-1.
|
||||||
|
Similarly, in SHA-256 repositories, these values are computed using SHA-256.
|
||||||
|
|
||||||
== pack-*.pack files have the following format:
|
== pack-*.pack files have the following format:
|
||||||
|
|
||||||
- A header appears at the beginning and consists of the following:
|
- A header appears at the beginning and consists of the following:
|
||||||
@ -26,7 +32,7 @@ Git pack format
|
|||||||
|
|
||||||
(deltified representation)
|
(deltified representation)
|
||||||
n-byte type and length (3-bit type, (n-1)*7+4-bit length)
|
n-byte type and length (3-bit type, (n-1)*7+4-bit length)
|
||||||
20-byte base object name if OBJ_REF_DELTA or a negative relative
|
base object name if OBJ_REF_DELTA or a negative relative
|
||||||
offset from the delta object's position in the pack if this
|
offset from the delta object's position in the pack if this
|
||||||
is an OBJ_OFS_DELTA object
|
is an OBJ_OFS_DELTA object
|
||||||
compressed delta data
|
compressed delta data
|
||||||
@ -34,7 +40,7 @@ Git pack format
|
|||||||
Observation: length of each object is encoded in a variable
|
Observation: length of each object is encoded in a variable
|
||||||
length format and is not constrained to 32-bit or anything.
|
length format and is not constrained to 32-bit or anything.
|
||||||
|
|
||||||
- The trailer records 20-byte SHA-1 checksum of all of the above.
|
- The trailer records a pack checksum of all of the above.
|
||||||
|
|
||||||
=== Object types
|
=== Object types
|
||||||
|
|
||||||
@ -58,8 +64,8 @@ ofs-delta and ref-delta, which is only valid in a pack file.
|
|||||||
|
|
||||||
Both ofs-delta and ref-delta store the "delta" to be applied to
|
Both ofs-delta and ref-delta store the "delta" to be applied to
|
||||||
another object (called 'base object') to reconstruct the object. The
|
another object (called 'base object') to reconstruct the object. The
|
||||||
difference between them is, ref-delta directly encodes 20-byte base
|
difference between them is, ref-delta directly encodes base object
|
||||||
object name. If the base object is in the same pack, ofs-delta encodes
|
name. If the base object is in the same pack, ofs-delta encodes
|
||||||
the offset of the base object in the pack instead.
|
the offset of the base object in the pack instead.
|
||||||
|
|
||||||
The base object could also be deltified if it's in the same pack.
|
The base object could also be deltified if it's in the same pack.
|
||||||
@ -143,14 +149,14 @@ This is the instruction reserved for future expansion.
|
|||||||
object is stored in the packfile as the offset from the
|
object is stored in the packfile as the offset from the
|
||||||
beginning.
|
beginning.
|
||||||
|
|
||||||
20-byte object name.
|
one object name of the appropriate size.
|
||||||
|
|
||||||
- The file is concluded with a trailer:
|
- The file is concluded with a trailer:
|
||||||
|
|
||||||
A copy of the 20-byte SHA-1 checksum at the end of
|
A copy of the pack checksum at the end of the corresponding
|
||||||
corresponding packfile.
|
packfile.
|
||||||
|
|
||||||
20-byte SHA-1-checksum of all of the above.
|
Index checksum of all of the above.
|
||||||
|
|
||||||
Pack Idx file:
|
Pack Idx file:
|
||||||
|
|
||||||
@ -198,7 +204,7 @@ Pack file entry: <+
|
|||||||
If it is not DELTA, then deflated bytes (the size above
|
If it is not DELTA, then deflated bytes (the size above
|
||||||
is the size before compression).
|
is the size before compression).
|
||||||
If it is REF_DELTA, then
|
If it is REF_DELTA, then
|
||||||
20-byte base object name SHA-1 (the size above is the
|
base object name (the size above is the
|
||||||
size of the delta data that follows).
|
size of the delta data that follows).
|
||||||
delta data, deflated.
|
delta data, deflated.
|
||||||
If it is OFS_DELTA, then
|
If it is OFS_DELTA, then
|
||||||
@ -227,9 +233,9 @@ Pack file entry: <+
|
|||||||
|
|
||||||
- A 256-entry fan-out table just like v1.
|
- A 256-entry fan-out table just like v1.
|
||||||
|
|
||||||
- A table of sorted 20-byte SHA-1 object names. These are
|
- A table of sorted object names. These are packed together
|
||||||
packed together without offset values to reduce the cache
|
without offset values to reduce the cache footprint of the
|
||||||
footprint of the binary search for a specific object name.
|
binary search for a specific object name.
|
||||||
|
|
||||||
- A table of 4-byte CRC32 values of the packed object data.
|
- A table of 4-byte CRC32 values of the packed object data.
|
||||||
This is new in v2 so compressed data can be copied directly
|
This is new in v2 so compressed data can be copied directly
|
||||||
@ -248,10 +254,10 @@ Pack file entry: <+
|
|||||||
|
|
||||||
- The same trailer as a v1 pack file:
|
- The same trailer as a v1 pack file:
|
||||||
|
|
||||||
A copy of the 20-byte SHA-1 checksum at the end of
|
A copy of the pack checksum at the end of
|
||||||
corresponding packfile.
|
corresponding packfile.
|
||||||
|
|
||||||
20-byte SHA-1-checksum of all of the above.
|
Index checksum of all of the above.
|
||||||
|
|
||||||
== multi-pack-index (MIDX) files have the following format:
|
== multi-pack-index (MIDX) files have the following format:
|
||||||
|
|
||||||
@ -329,4 +335,4 @@ CHUNK DATA:
|
|||||||
|
|
||||||
TRAILER:
|
TRAILER:
|
||||||
|
|
||||||
20-byte SHA1-checksum of the above contents.
|
Index checksum of the above contents.
|
||||||
|
Loading…
Reference in New Issue
Block a user