Merge branch 'en/dir-traversal'

"git clean" and "git ls-files -i" had confusion around working on
or showing ignored paths inside an ignored directory, which has
been corrected.

* en/dir-traversal:
  dir: introduce readdir_skip_dot_and_dotdot() helper
  dir: update stale description of treat_directory()
  dir: traverse into untracked directories if they may have ignored subfiles
  dir: avoid unnecessary traversal into ignored directory
  t3001, t7300: add testcase showcasing missed directory traversal
  t7300: add testcase showing unnecessary traversal into ignored directory
  ls-files: error out on -i unless -o or -c are specified
  dir: report number of visited directories and paths with trace2
  dir: convert trace calls to trace2 equivalents
This commit is contained in:
Junio C Hamano
2021-05-20 08:54:58 +09:00
18 changed files with 298 additions and 172 deletions

View File

@ -2350,10 +2350,8 @@ int for_each_file_in_obj_subdir(unsigned int subdir_nr,
strbuf_addch(path, '/');
baselen = path->len;
while ((de = readdir(dir))) {
while ((de = readdir_skip_dot_and_dotdot(dir))) {
size_t namelen;
if (is_dot_or_dotdot(de->d_name))
continue;
namelen = strlen(de->d_name);
strbuf_setlen(path, baselen);