Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: b76a68630e
Fetching contributors…

Cannot retrieve contributors at this time

80 lines (48 sloc) 1.92 kb
directory listing API
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
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.
* Prepare `struct dir_struct dir` and clear it with `memset(&dir, 0,
* Call `add_exclude()` to add single exclude pattern,
`add_excludes_from_file()` to add patterns from a file
(e.g. `.git/info/exclude`), and/or set `dir.exclude_per_dir`. A
short-hand function `setup_standard_excludes()` can be used to set up
the standard set of exclude settings.
* Set options described in the Data Structure section above.
* Call `read_directory()`.
* Use `dir.entries[]`.
Jump to Line
Something went wrong with that request. Please try again.