This is the beginning of the end of the_index. The problem with the_index is it lets library code anywhere access it freely. This is not good because from high level you may not realize that the_index is being used while you don't want to touch index at all, or you want to use a different index instead. This is a long series, 86 patches [1], so I'm going to split and submit it in 15-20 patches at a time. The first two parts are trivial though and could be safely fast tracked if needed. This is the first part, which kills the use of index compat macros outside builtin/ and expose the_index in all library code. Later on we will ban the_index from one file each time until it's gone for good. "struct index_state *" will be passed from builtin/ through the call chain to the function that needs it. In some cases, "struct repository *" will be passed instead when the whole operation spans more than just the index. By the end, the_index becomes part of "index compat macros" and cannot be used outside builtin/ Part one is mechanical conversion with the help of coccinelle. The only real patches are the first and the last one. [1] https://gitlab.com/pclouds/git/commits/really-kill-the-index Nguyễn Thái Ngọc Duy (15): contrib: add cocci script to replace index compat macros apply.c: stop using index compat macros blame.c: stop using index compat macros check-racy.c: stop using index compat macros diff-lib.c: stop using index compat macros diff.c: stop using index compat macros entry.c: stop using index compat macros merge-recursive.c: stop using index compat macros merge.c: stop using index compat macros rerere.c: stop using index compat macros revision.c: stop using index compat macros sequencer.c: stop using index compat macros sha1-name.c: stop using index compat macros wt-status.c: stop using index compat macros cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch apply.c | 34 ++--- attr.c | 1 - blame.c | 19 +-- builtin/add.c | 1 + builtin/am.c | 1 + builtin/check-attr.c | 1 + builtin/check-ignore.c | 1 + builtin/checkout-index.c | 1 + builtin/checkout.c | 1 + builtin/clean.c | 1 + builtin/commit.c | 1 + builtin/describe.c | 1 + builtin/diff-files.c | 1 + builtin/diff-index.c | 1 + builtin/diff-tree.c | 1 + builtin/diff.c | 1 + builtin/fsck.c | 1 + builtin/ls-files.c | 1 - builtin/merge-index.c | 1 + builtin/merge-ours.c | 1 + builtin/merge.c | 1 + builtin/mv.c | 1 + builtin/pull.c | 1 + builtin/read-tree.c | 1 + builtin/reset.c | 1 + builtin/rev-parse.c | 1 + builtin/rm.c | 1 + builtin/submodule--helper.c | 1 + builtin/update-index.c | 1 + cache.h | 2 +- check-racy.c | 10 +- contrib/coccinelle/index-compat.cocci | 184 ++++++++++++++++++++++++++ convert.c | 1 - diff-lib.c | 8 +- diff.c | 12 +- dir.c | 1 - entry.c | 3 +- merge-recursive.c | 65 ++++----- merge.c | 14 +- name-hash.c | 1 - pathspec.c | 1 - read-cache.c | 1 - rerere.c | 36 ++--- revision.c | 14 +- sequencer.c | 32 ++--- sha1-name.c | 22 +-- submodule.c | 1 - t/helper/test-dump-untracked-cache.c | 1 + t/helper/test-tool.h | 2 + tree.c | 1 - unpack-trees.c | 1 - wt-status.c | 24 ++-- 52 files changed, 363 insertions(+), 154 deletions(-) create mode 100644 contrib/coccinelle/index-compat.cocci -- 2.18.0.rc0.333.g22e6ee6cdf