git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[RFC 0/16] Introduce index file format version 5

From
Thomas Gummerer <t.gummerer@gmail.com>
Date
Aug 2, 2012, 11:01 UTC
Message-ID
<1343905326-23790-1-git-send-email-t.gummerer@gmail.com>

Series of patches to introduce the index version 5 file format. This series does not include any fancy stuff like partial loading or partial writing yet, though it's possible to do that with the new format.

There was already a POC for partial loading, which gave pretty good results, which was however broken in all but the general case, so it's not included yet. (for timings see: http://thread.gmane.org/gmane.comp.version-control.git/201964/focus=202019)

The first 4 patches are refactoring the old code, splitting it up into different functions, as a preparation for index-v5.

Patches 5 and 6 fix testcases for index v5.

Patch 9..11 introduce the reader for index-v5. I've split those patches up to read the main index first, then the resolve-undo data and then the cache-tree, to make it easier to review them.

The same goes for patches 12..14, which introduce the writer, again split up in writing the main index, resolve-undo data and cache-tree data.

Patch 15 adds a option to update index to force-rewrite the index, so rewriting it even if nothing has changed. This is later used for performance testing, to test the performance for both the reader and the writer.

Patch 16 adds the performance test, which compares the time for force-rewrites for index-v[23], index-v4 and index-v5.

The default index format is still set to 3, it can be changed in read-cache.c (INDEX_FORMAT_DEFAULT)

[PATCH 01/16] Modify cache_header to prepare for other index formats [PATCH 02/16] Modify read functions to prepare for other index [PATCH 03/16] Modify match_stat_basic to prepare for other index [PATCH 04/16] Modify write functions to prepare for other index [PATCH 05/16] t2104: Don't fail when index version is 5 [PATCH 06/16] t3700: sleep for 1 second, to avoid interfering with [PATCH 07/16] Add documentation of the index-v5 file format [PATCH 08/16] Make in-memory format aware of stat_crc [PATCH 09/16] Read index-v5 [PATCH 10/16] Read resolve-undo data [PATCH 11/16] Read cache-tree in index-v5 [PATCH 12/16] Write index-v5 [PATCH 13/16] Write index-v5 cache-tree data [PATCH 14/16] Write resolve-undo data for index-v5 [PATCH 15/16] update-index.c: add a force-rewrite option [PATCH 16/16] p0002-index.sh: add perf test for the index formats

Documentation/technical/index-file-format-v5.txt | 281 ++++++++++++++++++++++++++++++++++ builtin/update-index.c | 5 +- cache-tree.c | 145 ++++++++++++++++++ cache-tree.h | 7 + cache.h | 96 +++++++++++- read-cache.c | 1519 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------- resolve-undo.c | 129 ++++++++++++++++ resolve-undo.h | 3 + t/perf/p0002-index.sh | 33 ++++ t/t2104-update-index-skip-worktree.sh | 15 +- t/t3700-add.sh | 1 + test-index-version.c | 2 +- 12 files changed, 2082 insertions(+), 154 deletions(-)

Next: Thomas Gummerer
Message 1 of 38 in “[RFC 0/16] Introduce index file format version 5”
  1. Thomas GummererAug 2, 2012
  2. 01/16 Modify cache_header to prepare for other index formatsThomas Gummerer, Aug 2, 2012
  3. Nguyen Thai Ngoc DuyAug 2, 2012
  4. 02/16 Modify read functions to prepare for other index formatsThomas Gummerer, Aug 2, 2012
  5. 03/16 Modify match_stat_basic to prepare for other index formatsThomas Gummerer, Aug 2, 2012
  6. Nguyen Thai Ngoc DuyAug 2, 2012
  7. Thomas GummererAug 2, 2012
  8. 04/16 Modify write functions to prepare for other index formatsThomas Gummerer, Aug 2, 2012
  9. Nguyen Thai Ngoc DuyAug 2, 2012
  10. Thomas GummererAug 2, 2012
  11. 05/16 t2104: Don't fail when index version is 5Thomas Gummerer, Aug 2, 2012
  12. Thomas RastAug 3, 2012
  13. Thomas GummererAug 3, 2012
  14. Junio C HamanoAug 3, 2012
  15. 06/16 t3700: sleep for 1 second, to avoid interfering with the racy codeThomas Gummerer, Aug 2, 2012
  16. 07/16 Add documentation of the index-v5 file formatThomas Gummerer, Aug 2, 2012
  17. 08/16 Make in-memory format aware of stat_crcThomas Gummerer, Aug 2, 2012
  18. 09/16 Read index-v5Thomas Gummerer, Aug 2, 2012
  19. Nguyen Thai Ngoc DuyAug 2, 2012
  20. Thomas GummererAug 2, 2012
  21. 10/16 Read resolve-undo dataThomas Gummerer, Aug 2, 2012
  22. 11/16 Read cache-tree in index-v5Thomas Gummerer, Aug 2, 2012
  23. Thomas RastAug 3, 2012
  24. Thomas GummererAug 3, 2012
  25. 12/16 Write index-v5Thomas Gummerer, Aug 2, 2012
  26. 13/16 Write index-v5 cache-tree dataThomas Gummerer, Aug 2, 2012
  27. 14/16 Write resolve-undo data for index-v5Thomas Gummerer, Aug 2, 2012
  28. 15/16 update-index.c: add a force-rewrite optionThomas Gummerer, Aug 2, 2012
  29. 16/16 p0002-index.sh: add perf test for the index formatsThomas Gummerer, Aug 2, 2012
  30. Nguyen Thai Ngoc DuyAug 2, 2012
  31. Thomas GummererAug 2, 2012
  32. Nguyen Thai Ngoc DuyAug 2, 2012
  33. Thomas GummererAug 2, 2012
  34. Nguyen Thai Ngoc DuyAug 2, 2012
  35. Nguyen Thai Ngoc DuyAug 3, 2012
  36. Thomas GummererAug 3, 2012
  37. Thomas RastAug 3, 2012
  38. Thomas GummererAug 3, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.