an existing index object
array of path patterns
combination of git_index_add_option_t flags
notification callback for each added/updated path (also gets index of matching pathspec entry); can be null; return 0 to add, >0 to skip, <0 to abort scan.
payload passed through to callback function
0 on success, negative callback return value, or error code
Add or update index entries matching files in the working directory.
This method will fail in bare index instances.
The pathspec is a list of file names or shell glob patterns that will be matched against files in the repository's working directory. Each file that matches will be added to the index (either updating an existing entry or adding a new entry). You can disable glob expansion and force exact matching with the git_index_add_option_t.GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH flag.
Files that are ignored will be skipped (unlike git_index_add_bypath). If a file is already tracked in the index, then it *will* be updated even if it is ignored. Pass the git_index_add_option_t.GIT_INDEX_ADD_FORCE flag to skip the checking of ignore rules.
To emulate git add -A and generate an error if the pathspec contains the exact path of an ignored file (when not using FORCE), add the git_index_add_option_t.GIT_INDEX_ADD_CHECK_PATHSPEC flag. This checks that each entry in the pathspec that is an exact match to a filename on disk is either not ignored or already in the index. If this check fails, the function will return git_error_code.GIT_EINVALIDSPEC.
To emulate git add -A with the "dry-run" option, just use a callback function that always returns a positive value. See below for details.
If any files are currently the result of a merge conflict, those files will no longer be marked as conflicting. The data about the conflicts will be moved to the "resolve undo" (REUC) section.
If you provide a callback function, it will be invoked on each matching item in the working directory immediately *before* it is added to / updated in the index. Returning zero will add the item to the index, greater than zero will skip the item, and less than zero will abort the scan and return that value to the caller.