Commit a409acef by Russell Belfer

Handle explicitly ignored dir slightly differently

When considering status of untracked directories, if we find an
explicitly ignored item, even if it is a directory, treat the
parent as an IGNORED item.  It was accidentally being treated as
an EMPTY item because we were not looking into the ignored subdir.
parent 219c89d1
......@@ -1566,25 +1566,26 @@ int git_iterator_advance_over_with_status(
&wi->ignores, wi->fi.entry.path, &wi->is_ignored) < 0)
wi->is_ignored = true;
if (!wi->is_ignored && S_ISDIR(entry->mode)) {
/* if we found an explicitly ignored item, then update from
* EMPTY to IGNORED
*/
if (wi->is_ignored)
*status = GIT_ITERATOR_STATUS_IGNORED;
else if (S_ISDIR(entry->mode)) {
error = git_iterator_advance_into(&entry, iter);
if (!error)
continue;
else if (error == GIT_ENOTFOUND) {
error = 0;
wi->is_ignored = true; /* treat empty directories as ignored */
wi->is_ignored = true; /* mark empty directories as ignored */
} else
break; /* real error, stop here */
}
/* if we found a non-ignored item, treat parent as untracked */
if (!wi->is_ignored) {
} else {
/* we found a non-ignored item, treat parent as untracked */
*status = GIT_ITERATOR_STATUS_NORMAL;
break;
}
if (entry && !S_ISDIR(entry->mode))
*status = GIT_ITERATOR_STATUS_IGNORED;
if ((error = git_iterator_advance(&entry, iter)) < 0)
break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment