The current document mentions OBJ_* constants without their actual values. A git developer would know these are from cache.h but that's not very friendly to a person who wants to read this file to implement a pack file parser. Similarly, the deltified representation is not documented at all (the "document" is basically patch-delta.c). Translate that C code in English. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- I noticed that these object type values are not documented in pack-format.txt so here's my attempt to improve it. While at there, I also add some text about this obscure delta format. We occasionally have questions about this on the mailing list if I remember correctly. Documentation/technical/pack-format.txt | 41 +++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/Documentation/technical/pack-format.txt b/Documentation/technical/pack-format.txt index 8e5bf60be3..2c7d5c0e74 100644 --- a/Documentation/technical/pack-format.txt +++ b/Documentation/technical/pack-format.txt @@ -36,6 +36,47 @@ Git pack format - The trailer records 20-byte SHA-1 checksum of all of the above. +Valid object types are: + +- OBJ_COMMIT (1) +- OBJ_TREE (2) +- OBJ_BLOB (3) +- OBJ_TAG (4) +- OBJ_OFS_DELTA (6) +- OBJ_REF_DELTA (7) + +Type 5 is reserved for future expansion. + +Deltified representation is a sequence of one byte command optionally +followed by more data for the command. The following commands are +recognized: + +- If bit 7 is set, the remaining bits in the command byte specifies + how to extract copy offset and size to copy. The following must be + evaluated in this exact order: + - If bit 0 is set, the following byte contains bits 0-7 of the copy + offset (this also resets all other bits in the copy offset to + zero). + - If bit 1 is set, the following byte contains bits 8-15 of the copy + offset. + - If bit 2 is set, the following byte contains bits 16-23 of the + copy offset. + - If bit 3 is set, the following byte contains bits 24-31 of the + copy offset. + - If bit 4 is set, the following byte contains bits 0-7 of the copy + size (this also resets all other bits in the copy size to zero_. + - If bit 5 is set, the following byte contains bits 8-15 of the copy + size. + - If bit 6 is set, the following byte contains bits 16-23 of the + copy size. + + Copy size zero means 0x10000 bytes. The data from source object at + the given copy offset is copied back to the destination buffer. + +- If bit 7 is not set, it is the copy size in bytes. The following + bytes are copied to destination buffer +- Command byte zero is reserved for future expansion. + == Original (version 1) pack-*.idx files have the following format: - The header consists of 256 4-byte network byte order -- 2.17.0.705.g3525833791