On 1/28/2020 12:21 AM, Elijah Newren wrote: > On Sun, Jan 26, 2020 at 6:09 AM Derrick Stolee <stolee@xxxxxxxxx> wrote: >> >> On 1/25/2020 3:59 PM, Elijah Newren wrote: >>> On Fri, Jan 24, 2020 at 7:41 AM Derrick Stolee <stolee@xxxxxxxxx> wrote: >>>> I'm CC'ing Elijah because he also made changes to dir.c, and >>>> perhaps he has some idea of what's going on. >>> >>> If you think it might be related to the dir.c changes, I can take a >>> look. I don't have any immediate ideas off the top of my head. >> >> The only thing I can think of is that these paths are already >> marked as sparse, but something is requiring us to test if the >> path can be created with the filesystem. I'll try to debug >> more into exactly where that is. It's telling that this happens >> both in cone mode and without. > > Yeah, I'll take a look. The exponentially slow 'status --ignored' > report is forcing me to look at dir.c again anyway, though it's also > delaying me from getting a chance to look at this particular report. I made some progress, at least, in root-causing the issue. The problem bisects down to 4dc42c6c1 (mingw: refuse paths containing reserved names, 2019-12-21) [1]. CC'ing Dscho. That commit updates is_valid_win32_path() to fail on these paths. We were _already_ calling this method even for paths outside the sparse cone, but the method didn't fail for these examples. This means the fix is probably even more complicated: we need to not call this method when traversing paths that have the skip-worktree bit enabled. This may lead to some tiny performance gains when hydrating a very small fraction of a very large index. Thanks, -Stolee [1] http://github.com/git/git/commit/4dc42c6c1867a52e22f1f04a1a247b5a7538b8af