git/Documentation/technical
Taylor Blau 20c49432e4 Documentation/technical/bitmap-format.txt: add missing position table
While investigating a benign Coverity warning on the new pseudo-merge
implementation, I was struggling to understand the (paraphrased) below:

    ofs = index_end - 24 - (index->pseudo_merges.nr * sizeof(uint64_t));
    for (i = 0; i < index->pseudo_merges.nr; i++) {
            index->pseudo_merges.v[i].at = get_be64(ofs);
            ofs += sizeof(uint64_t);
    }

, in pack-bitmap.c::load_bitmap_header(). Looking at the documentation,
the diagram describing the on-disk format (prior to this patch)
suggested that the optional extended lookup table immediately preceded
the trailing metadata portion.

If that were the case, that would make the above code from
load_bitmap_header() incorrect, as we'd be blindly reading into the
extended offset table.

But later on in the documentation there is a description of the
pseudo-merge position table as immediately preceding the trailing
metadata portion of the extension. And indeed, we do write the position
table in pack-bitmap-write.c:

    /* write positions for all pseudo merges */
    for (i = 0; i < writer->pseudo_merges_nr; i++)
            hashwrite_be64(f, pseudo_merge_ofs[i]);

    hashwrite_be32(f, writer->pseudo_merges_nr);
    hashwrite_be32(f, kh_size(writer->pseudo_merge_commits));
    hashwrite_be64(f, table_start - start);
    hashwrite_be64(f, hashfile_total(f) - start + sizeof(uint64_t));

So this is purely a case of the diagram being out of sync with the
textual description and actual implementation of the format
specification.

Add the missing component back to the format diagram to avoid further
confusion in this area.

Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-06-14 14:19:26 -07:00
..
.gitignore
api-error-handling.txt
api-index-skel.txt
api-index.sh
api-merge.txt
api-parse-options.txt
api-simple-ipc.txt
api-trace2.txt
bitmap-format.txt Documentation/technical/bitmap-format.txt: add missing position table 2024-06-14 14:19:26 -07:00
bundle-uri.txt
commit-graph.txt
directory-rename-detection.txt
hash-function-transition.txt
long-running-process-protocol.txt
multi-pack-index.txt
pack-heuristics.txt
packfile-uri.txt
parallel-checkout.txt
partial-clone.txt
racy-git.txt
reftable.txt
remembering-renames.txt
repository-version.txt refs: introduce reftable backend 2024-02-07 08:28:37 -08:00
rerere.txt
scalar.txt
send-pack-pipeline.txt
shallow.txt
sparse-checkout.txt
sparse-index.txt
trivial-merge.txt
unit-tests.txt