"Derrick Stolee via GitGitGadget" <gitgitgadget@xxxxxxxxx> writes: > From: Derrick Stolee <derrickstolee@xxxxxxxxxx> > > The GIT_FORCE_UNTRACKED_CACHE environment variable writes the untracked > cache more frequently than the core.untrackedCache config variable. This > is due to how read_directory() handles the creation of an untracked > cache. > > Before this change, Git would not create the untracked cache extension > for an index that did not already have one. Users would need to run a > command such as 'git update-index --untracked-cache' before the index > would actually contain an untracked cache. > > In particular, users noticed that the untracked cache would not appear > even with core.untrackedCache=true. Some users reported setting > GIT_FORCE_UNTRACKED_CACHE=1 in their engineering system environment to > ensure the untracked cache would be created. > > The decision to not write the untracked cache without an environment > variable tracks back to fc9ecbeb9 (dir.c: don't flag the index as dirty > for changes to the untracked cache, 2018-02-05). The motivation of that > change is that writing the index is expensive, and if the untracked > cache is the only thing that needs to be written, then it is more > expensive than the benefit of the cache. However, this also means that > the untracked cache never gets populated, so the user who enabled it via > config does not actually get the extension until running 'git > update-index --untracked-cache' manually or using the environment > variable. > > We have had a version of this change in the microsoft/git fork for a few > major releases now. It has been working well to get users into a good > state. Yes, that first index write is slow, but the remaining index > writes are much faster than they would be without this change. > > Signed-off-by: Derrick Stolee <derrickstolee@xxxxxxxxxx> > --- Will queue. Thanks.