Skip to content

Commit 6947ed3

Browse files
bk2204gitster
authored andcommitted
docs: update offset order for pack index v3
The current design of pack index v3 has items in two different orders: sorted shortened object ID order and pack order. The shortened object IDs and the pack index offset values are in the former order and everything else is in the latter. This, however, poses some problems. We have many parts of the packfile code that expect to find out data about an object knowing only its index in pack order. With the current design, to find the pack offset after having looked up the index in pack order, we must then look up the full object ID and use that to look up the shortened object ID to find the pack offset, which is inconvenient, inefficient, and leads to poor cache usage. Instead, let's change the offset values to be looked up by pack order. This works better because once we know the pack order offset, we can find the full object name and its location in the pack with a simple index into their respective tables. This makes many operations much more efficient, especially with the functions we already have, and it avoids the need for the revindex with pack index v3. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 87264b7 commit 6947ed3

File tree

1 file changed

+4
-6
lines changed

1 file changed

+4
-6
lines changed

Documentation/technical/hash-function-transition.adoc

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -260,12 +260,10 @@ network byte order):
260260
compressed data to be copied directly from pack to pack during
261261
repacking without undetected data corruption.
262262

263-
* A table of 4-byte offset values. For an object in the table of
264-
sorted shortened object names, the value at the corresponding
265-
index in this table indicates where that object can be found in
266-
the pack file. These are usually 31-bit pack file offsets, but
267-
large offsets are encoded as an index into the next table with the
268-
most significant bit set.
263+
* A table of 4-byte offset values. The index of this table in pack order
264+
indicates where that object can be found in the pack file. These are
265+
usually 31-bit pack file offsets, but large offsets are encoded as
266+
an index into the next table with the most significant bit set.
269267

270268
* A table of 8-byte offset entries (empty for pack files less than
271269
2 GiB). Pack files are organized with heavily used objects toward

0 commit comments

Comments
 (0)