On Tue, 19 Apr 2005, Steven Cole wrote: > > I wasn't complaining about the 4 minutes, just the lack of feedback > during the majority of that time. And most of it was after the last > patching file message. That should be exactly the thing that the new "read-tree -m" fixes. Before, when you read in a new tree (which is what you do when you update to somebody elses version), git would throw all the cached information away, and so you'd end up doing a "checkout-cache -f -a" that re-wrote every single checked-out file, followed by "update-cache --refresh" that then re-created the cache for every single file. With the new read-tree, the same sequence (assuming you have the "-m" flag to tell read-tree to merge the cache information) will now only write out and re-check the files that actually changed due to the update or merge. So that last phase should go from minutes to seconds - instead of checking 17,000+ files, you'd end up checking maybe a few hundred for most "normal" updates. For example, updating all the way from the git root (ie plain 2.6.12-rc2) to the current head, only 577 files have changed, and the rest (16,740) should never be touched at all. You can see why doing just the 577 instead of the full 17,317 might speed things up a bit ;) Linus PS. Of course, right now it probably does make sense to waste some time occasionally, and run "fsck-cache $(cat .git/HEAD)" every once in a while. Just in case..