mirror of
https://git.proxmox.com/git/libgit2
synced 2025-06-21 10:34:05 +00:00
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.
This commit is contained in:
parent
219c89d19d
commit
a409acefbb
@ -1566,25 +1566,26 @@ int git_iterator_advance_over_with_status(
|
|||||||
&wi->ignores, wi->fi.entry.path, &wi->is_ignored) < 0)
|
&wi->ignores, wi->fi.entry.path, &wi->is_ignored) < 0)
|
||||||
wi->is_ignored = true;
|
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);
|
error = git_iterator_advance_into(&entry, iter);
|
||||||
|
|
||||||
if (!error)
|
if (!error)
|
||||||
continue;
|
continue;
|
||||||
else if (error == GIT_ENOTFOUND) {
|
else if (error == GIT_ENOTFOUND) {
|
||||||
error = 0;
|
error = 0;
|
||||||
wi->is_ignored = true; /* treat empty directories as ignored */
|
wi->is_ignored = true; /* mark empty directories as ignored */
|
||||||
} else
|
} else
|
||||||
break; /* real error, stop here */
|
break; /* real error, stop here */
|
||||||
}
|
} else {
|
||||||
|
/* we found a non-ignored item, treat parent as untracked */
|
||||||
/* if we found a non-ignored item, treat parent as untracked */
|
|
||||||
if (!wi->is_ignored) {
|
|
||||||
*status = GIT_ITERATOR_STATUS_NORMAL;
|
*status = GIT_ITERATOR_STATUS_NORMAL;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (entry && !S_ISDIR(entry->mode))
|
|
||||||
*status = GIT_ITERATOR_STATUS_IGNORED;
|
|
||||||
|
|
||||||
if ((error = git_iterator_advance(&entry, iter)) < 0)
|
if ((error = git_iterator_advance(&entry, iter)) < 0)
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user