Re: inotify to minimize stat() calls
From: Ramkumar Ramachandra <hidden>
Date: 2016-06-15 22:56:12
Ævar Arnfjörð Bjarmason wrote:
On Fri, Feb 8, 2013 at 10:10 PM, Ramkumar Ramachandra [off-list ref] wrote:quoted
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.
What is it really doing? I think the main culprit is require_clean_work_tree() from git-sh-setup.sh, and that is only run in the `--continue` and `exec` codepaths.