Ось що git config --help
говорить:
core.fscache
Увімкніть додаткове кешування даних файлової системи для деяких операцій.
Git для Windows використовує це для групового читання та кешування даних lstat цілих каталогів (замість того, щоб робити файл lstat файл за файлом).
Замість того, щоб робити багато запитів файлової системи, git зробить лише один запит, щоб отримати інформацію про всі файли в каталозі.
Більш технічний опис можна знайти в комітеті, який запровадив fscache
:
Win32: додайте кеш-пам'ять нижче lstat і mrentw-реалізацій dirent
Перевірка стану робочого дерева в Windows досить повільна, через повільну емуляцію lstat (git викликає lstat один раз для кожного файлу в індексі). API операційної системи Windows здаються набагато кращими при скануванні статусу цілих каталогів, ніж перевірка окремих файлів.
Додайте реалізацію lstat, яка використовує кеш даних lstat. Кеш пропускає прочитати весь батьківський каталог і додати його до кеша. Подальші виклики lstat для одного і того ж каталогу подаються безпосередньо з кеша.
Також реалізуйте opendir / readdir / closedir, щоб вони створювали та використовували списки каталогів у кеші.
Кеш не відстежує зміни файлової системи та не підключається до будь-яких API-файлів, що модифікують, тому він повинен бути чітко включений для функцій git, які не змінюють робочу копію.