mirror of
https://github.com/git-for-windows/git.git
synced 2026-04-29 04:28:53 -05:00
checkout.c: enable fscache for checkout_entry
This is to speed up git checkout for directory in very large repositories. Taking file stats while directory traversing is faster than stating to each files on windows. `git checkout .` in master branch of chromium repositry, having 284659 files, takes more than 18 seconds. This patch improved the time to around 4 seconds on my SSD laptop. Signed-off-by: Takuto Ikuta <tikuta@chromium.org>
This commit is contained in:
committed by
Johannes Schindelin
parent
98117e33f6
commit
397c27b3d8
@@ -359,6 +359,7 @@ static int checkout_paths(const struct checkout_opts *opts,
|
||||
state.istate = &the_index;
|
||||
|
||||
enable_delayed_checkout(&state);
|
||||
enable_fscache(1);
|
||||
for (pos = 0; pos < active_nr; pos++) {
|
||||
struct cache_entry *ce = active_cache[pos];
|
||||
if (ce->ce_flags & CE_MATCHED) {
|
||||
@@ -373,6 +374,7 @@ static int checkout_paths(const struct checkout_opts *opts,
|
||||
pos = skip_same_name(ce, pos) - 1;
|
||||
}
|
||||
}
|
||||
enable_fscache(0);
|
||||
errs |= finish_delayed_checkout(&state);
|
||||
|
||||
if (write_locked_index(&the_index, &lock_file, COMMIT_LOCK))
|
||||
|
||||
Reference in New Issue
Block a user