Re: [PATCH v2 4/5] Expand support for ignored arguments on status
From: Junio C Hamano <hidden>
Date: 2017-10-12 03:58:50
Jameson Miller [off-list ref] writes:
quoted hunk
Teach status command to handle matching ignored mode when showing untracked files with the normal option. Signed-off-by: Jameson Miller <redacted> --- dir.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-)diff --git a/dir.c b/dir.c index b9af87eca9..8636d080b2 100644 --- a/dir.c +++ b/dir.c@@ -1585,6 +1585,7 @@ static enum path_treatment treat_one_path(struct dir_struct *dir, { int exclude; int has_path_in_index = !!index_file_exists(istate, path->buf, path->len, ignore_case); + enum path_treatment path_treatment; if (dtype == DT_UNKNOWN) dtype = get_dtype(de, istate, path->buf, path->len);@@ -1631,8 +1632,23 @@ static enum path_treatment treat_one_path(struct dir_struct *dir, return path_none; case DT_DIR: strbuf_addch(path, '/'); - return treat_directory(dir, istate, untracked, path->buf, path->len, - baselen, exclude, pathspec); + path_treatment = treat_directory(dir, istate, untracked, + path->buf, path->len, + baselen, exclude, pathspec); + /* + * If we are only want to return directories that + * match an exclude pattern, and this directories does
s/are //; s/directories/directory/
+ * not match an exclude pattern but all contents are + * excluded, then indicate that we should recurse into + * this directory (instead of marking the directory + * itself as an ignored path) + */ + if (!exclude && + path_treatment == path_excluded && + (dir->flags & DIR_SHOW_IGNORED_TOO) && + (dir->flags & DIR_SHOW_IGNORED_TOO_MODE_MATCHING)) + return path_recurse; + return path_treatment;
The required change to the code is surprisingly small ;-) and it is well explained in the comment. Good job.
case DT_REG: case DT_LNK: return exclude ? path_excluded : path_untracked;