-
Notifications
You must be signed in to change notification settings - Fork 81
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
rewrite the cache to be asynchronous
We've been seeing "Task X took Y seconds" warnings in our tests for a long time, especially on Windows. Running git commands synchronously blocks other tasks from running, like display redrawing. It's bad practice in an async program. One of the barriers to async-ifying the cache code earlier was that many commands relied on having exclusive ownership of the index file while they were running. For example, 1) read a tree into the index, 2) merge another tree into some subdirectory, 3) write out the result. If any other git commands ran in the middle of that, it would screw up the result. So we needed to rewrite every cache function to use its own temporary index file, if we want them to run in parallel. The reason I'm finally getting around to this now, is that I'm trying to reduce the number of git commands that run in a no-op sync. One of the optimizations I'm going to want to do, is to reuse the index file from the last sync, so that we don't need a `read-tree` and an `update-index` just to set us up for `diff-files`. But the plumbing to do that right is pretty much the same as what we should be doing to run every git command with its own index anyway. So let's just bite the bullet and do that now, and then reusing index files will be easy after that.
- Loading branch information
1 parent
264ede4
commit e18aa33
Showing
27 changed files
with
602 additions
and
380 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.