The directory listing API is used to enumerate paths in the work tree, optionally taking .git/info/exclude and .gitignore files per directory into account.

Data structure

struct dir_struct structure is used to pass directory traversal options to the library and to record the paths discovered. The notable options are:


The name of the file to be read in each directory for excluded files (typically .gitignore).


Include paths that are to be excluded in the result.


The traversal is for finding just ignored files, not unignored files.


Include a directory that is not tracked.


Do not include a directory that is not tracked and is empty.


If set, recurse into a directory that looks like a git directory. Otherwise it is shown as a directory.

The result of the enumeration is left in these fields

An array of struct dir_entry, each element of which describes a path.


The number of members in entries[] array.


Internal use; keeps track of allocation of entries[] array.

Calling sequence

Note: index may be looked at for .gitignore files that are CE_SKIP_WORKTREE marked. If you to exclude files, make sure you have loaded index first.