Re: [PATCH v2] wt-status: Show ignored files in untracked dirs
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Dec 27, 2012, 02:37 UTC
- Message-ID
- <7vip7omd8c.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <1356528674-2730-1-git-send-email-apelisse@gmail.com>
Antoine Pelisse <apelisse@gmail.com> writes:
> When looking for ignored files, we do not recurse into untracked > directory, and simply consider the directory ignored status.
When asked to show ignored ones, instead of listing all ignored files in such a directory, we just say "everything in this directory is ignored"?
That sounds like a more desirable behaviour, than listing everything there, at least to me, but perhaps I am missing something.
Care to add a test for this new behaviour?
Show 48 quoted lines
> As a consequence, we don't see ignored files in those directories.
>
> Change that behavior by recursing into untracked directories, if not
> ignored themselves, searching for ignored files.
>
> Signed-off-by: Antoine Pelisse <apelisse@gmail.com>
> ---
> Actually, the previous patch breaks the case where the directory is ignored.
> This one should fix both issues.
> Let me know if you see any other use case that could be an issue.
>
> dir.c | 7 +++++++
> wt-status.c | 2 +-
> 2 files changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/dir.c b/dir.c
> index 5a83aa7..2863799 100644
> --- a/dir.c
> +++ b/dir.c
> @@ -1042,6 +1042,13 @@ static enum path_treatment treat_one_path(struct dir_struct *dir,
> return path_ignored;
> }
>
> + /*
> + * Don't recurse into ignored directories when looking for
> + * ignored files, but still show the directory as ignored.
> + */
> + if (exclude && (dir->flags & DIR_SHOW_IGNORED) && dtype == DT_DIR)
> + return path_handled;
> +
> switch (dtype) {
> default:
> return path_ignored;
> diff --git a/wt-status.c b/wt-status.c
> index 2a9658b..7c41488 100644
> --- a/wt-status.c
> +++ b/wt-status.c
> @@ -516,7 +516,7 @@ static void wt_status_collect_untracked(struct wt_status *s)
>
> if (s->show_ignored_files) {
> dir.nr = 0;
> - dir.flags = DIR_SHOW_IGNORED | DIR_SHOW_OTHER_DIRECTORIES;
> + dir.flags = DIR_SHOW_IGNORED;
> fill_directory(&dir, s->pathspec);
> for (i = 0; i < dir.nr; i++) {
> struct dir_entry *ent = dir.entries[i];
> --
> 1.8.1.rc3.12.g8864e38