Here is a new version of a patch series to improve the untracked cache
feature.
This v5 implements core.untrackedCache as a tristate config
variable. When it's `true`, Git commands, especially `git status`,
should always add the untracked cache and use it, and when `false`,
Git commands should remove it. The default is `keep` in which case the
untracked cache is neither removed nor added, and used if it is there.
Patch 1/11 is a small bugfix that has not changed.
Patch 2/11 to 4/11 add some small features that are missing. There are
no changes compared to v4.
Patchs 5/11 to 7/11 are some refactoring to prepare for the following
patchs. The interface of the new functions has changed as they are now
passed a "struct index_state *istate" parameter on which they will
operate instead of modifying "the_index".
Patch 8/11 deals with the "ident" field in "struct
untracked_cache". Following Torsten and Junio's suggestions, the
differences compared to v4 are the following:
- we store only the kernel "sysname" and not the full kernel version,
- we match the full "ident" string instead of just the beginning of the string,
- a warning has been improved.
Patch 9/11 adds core.untrackedCache. Following Junio's suggestions, it
has been changed compared to v4 in the following ways:
- we don't die() and we exit 0, if "git update-index
--[no-|force-]untracked-cache" is used in a way that goes against
the value of core.untrackedCache,
- we add or remove the untracked cache in read_index_from() instead
of wt_status_collect_untracked().
Patch 10/11 is a new hack that is needed to have
test-dump-untracked-cache work like it used to, now that we add or
remove the untracked cache in read_index_from(). Because
test-dump-untracked-cache indirectly calls read_index_from(), we have
to prevent it from addind or removing the untracked cache.
Patch 11/11, which contains tests, has been changed to reflect changes
in 9/11.
So the changes compared to v4 are mostly small updates, and patchs
8/11, 9/11 and 10/11.
The patch series is also available there:
https://github.com/chriscool/git/tree/uc-notifs63
Thanks to the reviewers and helpers.
Christian Couder (11):
dir: free untracked cache when removing it
update-index: use enum for untracked cache options
update-index: add --test-untracked-cache
update-index: add untracked cache notifications
update-index: move 'uc' var declaration
dir: add {new,add}_untracked_cache()
dir: add remove_untracked_cache()
dir: simplify untracked cache "ident" field
config: add core.untrackedCache
test-dump-untracked-cache: don't modify the untracked cache
t7063: add tests for core.untrackedCache
Documentation/config.txt | 9 ++++
Documentation/git-update-index.txt | 67 +++++++++++++++++++++----
builtin/update-index.c | 62 ++++++++++++++---------
cache.h | 3 ++
config.c | 23 +++++++++
contrib/completion/git-completion.bash | 1 +
dir.c | 62 ++++++++++++++++++-----
dir.h | 3 +-
environment.c | 6 +++
read-cache.c | 14 ++++++
t/t7063-status-untracked-cache.sh | 89 +++++++++++++++++++++++++++++++---
test-dump-untracked-cache.c | 2 +
12 files changed, 287 insertions(+), 54 deletions(-)
--
2.7.0.36.g20612a7