Oto, co git config --help
mówi:
core.fscache
Włącz dodatkowe buforowanie danych systemu plików dla niektórych operacji.
Git dla Windows używa tego do masowego odczytu i buforowania danych lstat całych katalogów (zamiast wykonywania pliku lstat plik po pliku).
Zamiast wykonywać wiele żądań systemu plików, git wykona tylko jedno żądanie, aby uzyskać informacje o wszystkich plikach w katalogu.
Więcej opisu technicznego można znaleźć w zatwierdzeniu, które wprowadziło fscache
:
Win32: dodaj pamięć podręczną poniżej implementacji lstat i dirent mingw
Sprawdzanie stanu drzewa roboczego jest dość wolne w systemie Windows z powodu powolnej emulacji lstat (git wywołuje lstat jeden raz dla każdego pliku w indeksie). Interfejsy API systemu operacyjnego Windows wydają się być znacznie lepsze w skanowaniu statusu całych katalogów niż sprawdzanie pojedynczych plików.
Dodaj implementację lstat, która używa pamięci podręcznej dla danych lstat. Pamięć podręczna pomija odczyt całego katalogu nadrzędnego i dodaje go do pamięci podręcznej. Kolejne wywołania lstat dla tego samego katalogu są obsługiwane bezpośrednio z pamięci podręcznej.
Zaimplementuj także opendir / readdir / closedir, aby tworzyły i korzystały z list katalogów w pamięci podręcznej.
Pamięć podręczna nie śledzi zmian w systemie plików i nie podłącza się do żadnych modyfikujących interfejsów API plików, dlatego musi być jawnie włączona dla funkcji git, które nie modyfikują kopii roboczej.