git/Documentation/technical
Ben Peart 3b1d9e045e eoie: add End of Index Entry (EOIE) extension
The End of Index Entry (EOIE) is used to locate the end of the variable
length index entries and the beginning of the extensions. Code can take
advantage of this to quickly locate the index extensions without having
to parse through all of the index entries.

The EOIE extension is always written out to the index file including to
the shared index when using the split index feature. Because it is always
written out, the SHA checksums in t/t1700-split-index.sh were updated
to reflect its inclusion.

It is written as an optional extension to ensure compatibility with other
git implementations that do not yet support it.  It is always written out
to ensure it is available as often as possible to speed up index operations.

Because it must be able to be loaded before the variable length cache
entries and other index extensions, this extension must be written last.
The signature for this extension is { 'E', 'O', 'I', 'E' }.

The extension consists of:

- 32-bit offset to the end of the index entries

- 160-bit SHA-1 over the extension types and their sizes (but not
their contents).  E.g. if we have "TREE" extension that is N-bytes
long, "REUC" extension that is M-bytes long, followed by "EOIE",
then the hash would be:

SHA-1("TREE" + <binary representation of N> +
    "REUC" + <binary representation of M>)

Signed-off-by: Ben Peart <benpeart@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-10-11 15:32:48 +09:00
..
.gitignore
api-allocation-growing.txt
api-argv-array.txt
api-config.txt
api-credentials.txt
api-diff.txt
api-directory-listing.txt
api-error-handling.txt
api-gitattributes.txt
api-grep.txt
api-history-graph.txt
api-index-skel.txt
api-index.sh
api-merge.txt
api-object-access.txt
api-oid-array.txt
api-parse-options.txt
api-quote.txt
api-ref-iteration.txt
api-remote.txt
api-revision-walking.txt
api-run-command.txt
api-setup.txt
api-sigchain.txt
api-submodule-config.txt
api-trace.txt
api-tree-walking.txt
api-xdiff-interface.txt
bitmap-format.txt
commit-graph-format.txt Merge branch 'ds/commit-graph' 2018-07-18 12:20:34 -07:00
commit-graph.txt
directory-rename-detection.txt
hash-function-transition.txt doc hash-function-transition: pick SHA-256 as NewHash 2018-08-07 07:40:43 -07:00
http-protocol.txt doc: fix want-capability separator 2018-07-30 11:25:20 -07:00
index-format.txt eoie: add End of Index Entry (EOIE) extension 2018-10-11 15:32:48 +09:00
long-running-process-protocol.txt
multi-pack-index.txt
pack-format.txt midx: write object offsets 2018-07-20 11:27:28 -07:00
pack-heuristics.txt
pack-protocol.txt Merge branch 'bw/protocol-v2' 2018-08-15 15:08:21 -07:00
partial-clone.txt partial-clone: render design doc using asciidoc 2018-08-15 09:22:54 -07:00
protocol-capabilities.txt
protocol-common.txt
protocol-v2.txt Merge branch 'jt/connectivity-check-after-unshallow' 2018-07-24 14:50:44 -07:00
racy-git.txt
repository-version.txt
rerere.txt rerere: mention caveat about unmatched conflict markers 2018-08-29 08:54:11 -07:00
send-pack-pipeline.txt
shallow.txt
signature-format.txt
trivial-merge.txt