You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
3.7 KiB
130 lines
3.7 KiB
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. A single |
|
`struct dir_struct` is used regardless of whether or not the traversal |
|
recursively descends into subdirectories. |
|
|
|
The notable options are: |
|
|
|
`exclude_per_dir`:: |
|
|
|
The name of the file to be read in each directory for excluded |
|
files (typically `.gitignore`). |
|
|
|
`flags`:: |
|
|
|
A bit-field of options: |
|
|
|
`DIR_SHOW_IGNORED`::: |
|
|
|
Return just ignored files in `entries[]`, not untracked |
|
files. This flag is mutually exclusive with |
|
`DIR_SHOW_IGNORED_TOO`. |
|
|
|
`DIR_SHOW_IGNORED_TOO`::: |
|
|
|
Similar to `DIR_SHOW_IGNORED`, but return ignored files in |
|
`ignored[]` in addition to untracked files in |
|
`entries[]`. This flag is mutually exclusive with |
|
`DIR_SHOW_IGNORED`. |
|
|
|
`DIR_KEEP_UNTRACKED_CONTENTS`::: |
|
|
|
Only has meaning if `DIR_SHOW_IGNORED_TOO` is also set; if this is set, the |
|
untracked contents of untracked directories are also returned in |
|
`entries[]`. |
|
|
|
`DIR_SHOW_IGNORED_TOO_MODE_MATCHING`::: |
|
|
|
Only has meaning if `DIR_SHOW_IGNORED_TOO` is also set; if |
|
this is set, returns ignored files and directories that match |
|
an exclude pattern. If a directory matches an exclude pattern, |
|
then the directory is returned and the contained paths are |
|
not. A directory that does not match an exclude pattern will |
|
not be returned even if all of its contents are ignored. In |
|
this case, the contents are returned as individual entries. |
|
+ |
|
If this is set, files and directories that explicity match an ignore |
|
pattern are reported. Implicity ignored directories (directories that |
|
do not match an ignore pattern, but whose contents are all ignored) |
|
are not reported, instead all of the contents are reported. |
|
|
|
`DIR_COLLECT_IGNORED`::: |
|
|
|
Special mode for git-add. Return ignored files in `ignored[]` and |
|
untracked files in `entries[]`. Only returns ignored files that match |
|
pathspec exactly (no wildcards). Does not recurse into ignored |
|
directories. |
|
|
|
`DIR_SHOW_OTHER_DIRECTORIES`::: |
|
|
|
Include a directory that is not tracked. |
|
|
|
`DIR_HIDE_EMPTY_DIRECTORIES`::: |
|
|
|
Do not include a directory that is not tracked and is empty. |
|
|
|
`DIR_NO_GITLINKS`::: |
|
|
|
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: |
|
|
|
`entries[]`:: |
|
|
|
An array of `struct dir_entry`, each element of which describes |
|
a path. |
|
|
|
`nr`:: |
|
|
|
The number of members in `entries[]` array. |
|
|
|
`alloc`:: |
|
|
|
Internal use; keeps track of allocation of `entries[]` array. |
|
|
|
`ignored[]`:: |
|
|
|
An array of `struct dir_entry`, used for ignored paths with the |
|
`DIR_SHOW_IGNORED_TOO` and `DIR_COLLECT_IGNORED` flags. |
|
|
|
`ignored_nr`:: |
|
|
|
The number of members in `ignored[]` 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, |
|
sizeof(dir))`. |
|
|
|
* To add single exclude pattern, call `add_exclude_list()` and then |
|
`add_exclude()`. |
|
|
|
* To add patterns from a file (e.g. `.git/info/exclude`), call |
|
`add_excludes_from_file()` , 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[]`. |
|
|
|
* Call `clear_directory()` when none of the contained elements are no longer in use. |
|
|
|
(JC)
|
|
|