Re: git-add has gone lstat() mad
- From
- Andy Parkins <andyparkins@gmail.com>
- Date
- Mar 30, 2007, 20:20 UTC
- 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