This is the third part of killing the_index (at least outside builtin/). Part 1 [1] is dropped. Part 2 is nd/no-extern on 'pu'. This part is built on top of nd/no-extern. This series would actually break 'pu' because builtin/stash.c uses three functions that are updated here. So we would need something like the following patch to make it build again. I don't know if that adds too much work on Junio. If it does, I guess I'll hold this off for a while until builtin/stash.c gets merged because reordering these patches, pushing the patches that break stash.c away, really takes a lot of work. [1] https://public-inbox.org/git/20180616054157.32433-1-pclouds@xxxxxxxxx/ diff --git a/builtin/stash.c b/builtin/stash.c index 74eda822ce..f34edba21f 100644 --- a/builtin/stash.c +++ b/builtin/stash.c @@ -294,7 +294,7 @@ static int apply_patch_from_buf(struct strbuf *patch, int cached, int reverse, const char *patch_path = ".git/stash_patch.patch"; FILE *patch_file; - if (init_apply_state(&state, NULL)) + if (init_apply_state(&state, the_repository, NULL)) return -1; state.cached = cached; @@ -873,7 +873,7 @@ static int get_untracked_files(const char **argv, const char *prefix, max_len = fill_directory(&dir, the_repository->index, &pathspec); for (i = 0; i < dir.nr; i++) { struct dir_entry *ent = dir.entries[i]; - if (!dir_path_match(ent, &pathspec, max_len, seen)) { + if (!dir_path_match(the_repository->index, ent, &pathspec, max_len, seen)) { free(ent); continue; } @@ -1299,7 +1299,7 @@ static int do_push_stash(int argc, const char **argv, const char *prefix, for (i = 0; i < active_nr; ++i) { const struct cache_entry *ce = active_cache[i]; - if (!ce_path_match(ce, &ps, ps_matched)) + if (!ce_path_match(&the_index, ce, &ps, ps_matched)) continue; } Nguyễn Thái Ngọc Duy (24): diff.c: move read_index() code back to the caller cache-tree: wrap the_index based wrappers with #ifdef attr: remove an implicit dependency on the_index convert.c: remove an implicit dependency on the_index dir.c: remove an implicit dependency on the_index in pathspec code preload-index.c: use the right index instead of the_index ls-files: correct index argument to get_convert_attr_ascii() unpack-trees: remove 'extern' on function declaration unpack-trees: add a note about path invalidation unpack-trees: don't shadow global var the_index unpack-trees: convert clear_ce_flags* to avoid the_index unpack-trees: avoid the_index in verify_absent() pathspec.c: use the right index instead of the_index submodule.c: use the right index instead of the_index entry.c: use the right index instead of the_index attr: remove index from git_attr_set_direction() grep: use the right index instead of the_index archive.c: avoid access to the_index archive-*.c: use the right repository resolve-undo.c: use the right index instead of the_index apply.c: pass struct apply_state to more functions apply.c: make init_apply_state() take a struct repository apply.c: remove implicit dependency on the_index blame.c: remove implicit dependency on the_index apply.c | 66 +++++++++++++++++++++---------------- apply.h | 4 +++ archive-tar.c | 2 +- archive-zip.c | 2 +- archive.c | 47 ++++++++++++++++---------- archive.h | 16 +++++++-- attr.c | 52 +++++++++++++++++------------ attr.h | 11 ++++--- blame.c | 52 +++++++++++++++++------------ blame.h | 1 + builtin/add.c | 6 ++-- builtin/am.c | 2 +- builtin/apply.c | 2 +- builtin/archive.c | 2 +- builtin/blame.c | 1 + builtin/cat-file.c | 2 +- builtin/check-attr.c | 6 ++-- builtin/checkout-index.c | 1 + builtin/checkout.c | 2 +- builtin/clean.c | 2 +- builtin/commit.c | 2 +- builtin/diff-tree.c | 8 +++-- builtin/grep.c | 6 ++-- builtin/ls-files.c | 17 +++++----- builtin/pack-objects.c | 2 +- builtin/rm.c | 2 +- builtin/submodule--helper.c | 2 +- builtin/update-index.c | 2 +- builtin/upload-archive.c | 3 +- cache-tree.c | 12 ------- cache-tree.h | 17 ++++++++-- convert.c | 41 +++++++++++++---------- convert.h | 15 ++++++--- diff-lib.c | 4 +-- diff.c | 12 +------ diff.h | 1 - dir.c | 27 ++++++++------- dir.h | 16 +++++---- entry.c | 9 ++--- ll-merge.c | 4 +-- merge-recursive.c | 2 +- pathspec.c | 2 +- preload-index.c | 2 +- read-cache.c | 2 +- rerere.c | 2 +- resolve-undo.c | 2 +- revision.c | 2 +- sequencer.c | 4 +-- sha1-file.c | 4 +-- submodule.c | 8 ++--- unpack-trees.c | 57 ++++++++++++++++++++------------ unpack-trees.h | 4 +-- userdiff.c | 2 +- ws.c | 2 +- wt-status.c | 6 ++-- 55 files changed, 337 insertions(+), 245 deletions(-) -- 2.18.0.1004.g6639190530