This is basically what's in 'pu' with fixup patches squashed in (also
resend is a good way to get people's eyes on it one more time).
There's also another minor change that SOMETHING_CHANGED now has value
1. This is the usual value of cache_changed before this series. So if
another in-flight series update cache_changed the old way, nothing's
subtly broken.
Nguyễn Thái Ngọc Duy (32):
ewah: fix constness of ewah_read_mmap
ewah: delete unused ewah_read_mmap_native declaration
sequencer: do not update/refresh index if the lock cannot be held
read-cache: new API write_locked_index instead of write_index/write_cache
read-cache: relocate and unexport commit_locked_index()
read-cache: store in-memory flags in the first 12 bits of ce_flags
read-cache: be strict about "changed" in remove_marked_cache_entries()
read-cache: be specific what part of the index has changed
update-index: be specific what part of the index has changed
resolve-undo: be specific what part of the index has changed
unpack-trees: be specific what part of the index has changed
cache-tree: mark istate->cache_changed on cache tree invalidation
cache-tree: mark istate->cache_changed on cache tree update
cache-tree: mark istate->cache_changed on prime_cache_tree()
entry.c: update cache_changed if refresh_cache is set in checkout_entry()
read-cache: save index SHA-1 after reading
read-cache: split-index mode
read-cache: mark new entries for split index
read-cache: save deleted entries in split index
read-cache: mark updated entries for split index
split-index: the writing part
split-index: the reading part
split-index: do not invalidate cache-tree at read time
split-index: strip pathname of on-disk replaced entries
update-index: new options to enable/disable split index mode
update-index --split-index: do not split if $GIT_DIR is read only
rev-parse: add --shared-index-path to get shared index path
read-tree: force split-index mode off on --index-output
read-tree: note about dropping split-index mode or index version
read-cache: force split index mode with GIT_TEST_SPLIT_INDEX
t2104: make sure split index mode is off for the version test
t1700: new tests for split-index mode
.gitignore | 1 +
Documentation/git-rev-parse.txt | 4 +
Documentation/git-update-index.txt | 11 ++
Documentation/gitrepository-layout.txt | 4 +
Documentation/technical/index-format.txt | 35 ++++
Makefile | 2 +
builtin/add.c | 6 +-
builtin/apply.c | 17 +-
builtin/blame.c | 2 +-
builtin/checkout-index.c | 4 +-
builtin/checkout.c | 12 +-
builtin/clone.c | 7 +-
builtin/commit.c | 33 ++--
builtin/merge.c | 12 +-
builtin/mv.c | 7 +-
builtin/read-tree.c | 18 +-
builtin/reset.c | 7 +-
builtin/rev-parse.c | 10 +
builtin/rm.c | 7 +-
builtin/update-index.c | 33 +++-
cache-tree.c | 52 ++---
cache-tree.h | 6 +-
cache.h | 28 ++-
entry.c | 3 +
ewah/ewah_io.c | 4 +-
ewah/ewok.h | 3 +-
lockfile.c | 20 --
merge-recursive.c | 11 +-
merge.c | 7 +-
read-cache.c | 270 ++++++++++++++++++++++---
rerere.c | 3 +-
resolve-undo.c | 2 +-
sequencer.c | 16 +-
split-index.c (new) | 328 +++++++++++++++++++++++++++++++
split-index.h (new) | 35 ++++
t/t1700-split-index.sh (new +x) | 194 ++++++++++++++++++
t/t2104-update-index-skip-worktree.sh | 2 +
test-dump-cache-tree.c | 7 +-
test-dump-split-index.c (new) | 34 ++++
test-scrap-cache-tree.c | 5 +-
unpack-trees.c | 18 +-
41 files changed, 1088 insertions(+), 192 deletions(-)
create mode 100644 split-index.c
create mode 100644 split-index.h
create mode 100755 t/t1700-split-index.sh
create mode 100644 test-dump-split-index.c