Home Explore Blog CI



git

6th chunk of `Documentation/gitformat-index.adoc`
c008cd1f50641f0edc821d3f6a5611ee97584a9f9b4efdec0000000100000be4
 "one" bit
    in the previous ewah bitmap.

  - One NUL.

== File System Monitor cache

  The file system monitor cache tracks files for which the core.fsmonitor
  hook has told us about changes.  The signature for this extension is
  { 'F', 'S', 'M', 'N' }.

  The extension starts with

  - 32-bit version number: the current supported versions are 1 and 2.

  - (Version 1)
    64-bit time: the extension data reflects all changes through the given
	time which is stored as the nanoseconds elapsed since midnight,
	January 1, 1970.

  - (Version 2)
    A null terminated string: an opaque token defined by the file system
    monitor application.  The extension data reflects all changes relative
    to that token.

  - 32-bit bitmap size: the size of the CE_FSMONITOR_VALID bitmap.

  - An ewah bitmap, the n-th bit indicates whether the n-th index entry
    is not CE_FSMONITOR_VALID.

== End of Index Entry

  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.

  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

  - Hash 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:

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

== Index Entry Offset Table

  The Index Entry Offset Table (IEOT) is used to help address the CPU
  cost of loading the index by enabling multi-threading the process of
  converting cache entries from the on-disk format to the in-memory format.
  The signature for this extension is { 'I', 'E', 'O', 'T' }.

  The extension consists of:

  - 32-bit version (currently 1)

  - A number of index offset entries each consisting of:

    - 32-bit offset from the beginning of the file to the first cache entry
	in this block of entries.

    - 32-bit count of cache entries in this block

== Sparse Directory Entries

  When using sparse-checkout in cone mode, some entire directories within
  the index can be summarized by pointing to a tree object instead of the
  entire expanded list of paths within that tree. An index containing such
  entries is a "sparse index". Index format versions 4 and less were not
  implemented with such entries in mind. Thus, for these versions, an
  index containing sparse directory entries will include this extension
  with signature { 's', 'd', 'i', 'r' }. Like the split-index extension,
  tools should avoid interacting with a sparse index unless they understand
  this extension.

GIT
---
Part of the linkgit:git[1] suite

Title: Git Index Extensions: File System Monitor, End of Index Entry, and More
Summary
This section describes various Git index extensions, including the File System Monitor cache, End of Index Entry, Index Entry Offset Table, and Sparse Directory Entries, which provide features like file system monitoring, efficient index parsing, and support for sparse checkout in cone mode.