]> git.ipfire.org Git - thirdparty/git.git/commit
Documentation/gitformat-pack.txt: fix incorrect MIDX documentation
authorTaylor Blau <me@ttaylorr.com>
Tue, 31 Oct 2023 19:24:11 +0000 (15:24 -0400)
committerJunio C Hamano <gitster@pobox.com>
Wed, 1 Nov 2023 04:25:04 +0000 (13:25 +0900)
commit1bd809938a470ff92bc8963d59381c74a62839cc
tree0b3e93ee5ecb648ff3fb7c3066713beaed1fe87e
parent530a9f183f03cfa49d1951a5c204ef44f41f8c9d
Documentation/gitformat-pack.txt: fix incorrect MIDX documentation

Back in 32f3c541e3 (multi-pack-index: write pack names in chunk,
2018-07-12) the MIDX's "Packfile Names" (or "PNAM", for short) chunk was
described as containing an array of string entries. e0d1bcf825 notes
that this is the only chunk in the MIDX format's specification that is
not guaranteed to be 4-byte aligned, and so should be placed last.

This isn't quite accurate: the entries within the PNAM chunk are not
guaranteed to be 4-byte aligned since they are arbitrary strings, but
the chunk itself is 4-byte aligned since the ending is padded with NUL
bytes.

That padding has always been there since 32f3c541e3 via
midx.c::write_midx_pack_names(), which ended with:

    i = MIDX_CHUNK_ALIGNMENT - (written % MIDX_CHUNK_ALIGNMENT)
    if (i < MIDX_CHUNK_ALIGNMENT) {
      unsigned char padding[MIDX_CHUNK_ALIGNMENT];
      memset(padding, 0, sizeof(padding))
      hashwrite(f, padding, i);
      written += i;
    }

In fact, 32f3c541e3's log message itself describes the chunk in its
first paragraph with:

    Since filenames are not well structured, add padding to keep good
    alignment in later chunks.

So these have always been externally aligned. Correct the corresponding
part of our documentation to reflect that.

Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/gitformat-pack.txt