4 The directory listing API is used to enumerate paths in the work tree,
 
   5 optionally taking `.git/info/exclude` and `.gitignore` files per
 
   6 directory into account.
 
  11 `struct dir_struct` structure is used to pass directory traversal
 
  12 options to the library and to record the paths discovered.  The notable
 
  17         The name of the file to be read in each directory for excluded
 
  18         files (typically `.gitignore`).
 
  22         Include paths that are to be excluded in the result.
 
  26         The traversal is for finding just ignored files, not unignored
 
  29 `show_other_directories`::
 
  31         Include a directory that is not tracked.
 
  33 `hide_empty_directories`::
 
  35         Do not include a directory that is not tracked and is empty.
 
  39         If set, recurse into a directory that looks like a git
 
  40         directory.  Otherwise it is shown as a directory.
 
  42 The result of the enumeration is left in these fields::
 
  46         An array of `struct dir_entry`, each element of which describes
 
  51         The number of members in `entries[]` array.
 
  55         Internal use; keeps track of allocation of `entries[]` array.
 
  61 Note: index may be looked at for .gitignore files that are CE_SKIP_WORKTREE
 
  62 marked. If you to exclude files, make sure you have loaded index first.
 
  64 * Prepare `struct dir_struct dir` and clear it with `memset(&dir, 0,
 
  67 * Call `add_exclude()` to add single exclude pattern,
 
  68   `add_excludes_from_file()` to add patterns from a file
 
  69   (e.g. `.git/info/exclude`), and/or set `dir.exclude_per_dir`.  A
 
  70   short-hand function `setup_standard_excludes()` can be used to set up
 
  71   the standard set of exclude settings.
 
  73 * Set options described in the Data Structure section above.
 
  75 * Call `read_directory()`.
 
  77 * Use `dir.entries[]`.