From: Andy Parkins Date: Fri, 30 Mar 2007 20:20:22 GMT Subject: Re: git-add has gone lstat() mad Message-ID: <200703302120.23713.andyparkins@gmail.com> In-Reply-To: <200703302055.13619.andyparkins@gmail.com> On Friday 2007, March 30, Andy Parkins wrote: > At this point the CPU pegs at 100% systime. An strace shows that git > is calling lstat64() on every file in my home directory. I killed > git before it scanned everything I've ever done. Okay. I've tracked down the culprit function, but I have no idea what the fix is. builtin-add.c:fill_directory() calls dir.c:read_directory() which calls dir.c:read_directory_recursive() I can't see why git feels that it has to recurse the entire subtree. It seems to be something to do with the gitignore stuff. Surely there is no need to use a recursive search when no directories are being added? If git-add were given file1 dir1/file2 dir2/dir3/file3 Then only the directories "."; "dir1/"; "dir2"; and "dir2/dir3" need checking for .gitignore files; and in none of those cases does the search need to be recursive. Andy -- Dr Andy Parkins, M Eng (hons), MIET andyparkins@gmail.com