Re: inotify to minimize stat() calls
From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2016-06-15 22:56:09
On Fri, Feb 8, 2013 at 10:10 PM, Ramkumar Ramachandra [off-list ref] wrote:
For large repositories, many simple git commands like `git status` take a while to respond. I understand that this is because of large number of stat() calls to figure out which files were changed. I overheard that Mercurial wants to solve this problem using itnotify, but the idea bothers me because it's not portable. Will Git ever consider using inotify on Linux? What is the downside?
There's one relatively easy sub-task of this that I haven't seen mentioned: Improving the speed of interactive rebase on large (as in lots of checked out files) repositories. That's the single biggest thing that bothers me when I use Git with large repos, not the speed of "git status". When you "git rebase -i HEAD~100" re-arrange some patches and save the TODO list it takes say 0.5-1s for each patch to be applied, but at least 10x less than that on a small repository. E.g. try this on linux-2.6.git v.s. some small project with a few dozen files. I looked into this a long while ago and remembered that rebase was doing something like a git status for every commit that it made to check the dirtyness. This could be vastly improved by having an unsafe option to git-rebase where it just assumes that the starting state + whatever it wrote out is the current state, i.e. it would break if someone stuck up on your checkout during an interactive rebase and changed a file, but the common case of the user having exclusive access to the repo and waiting for the rebase would be much faster.