git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* git check-ignore returns 0 for negated masks
@ 2019-11-19 14:01 marat
  2019-11-20  3:48 ` Junio C Hamano
  0 siblings, 1 reply; 2+ messages in thread
From: marat @ 2019-11-19 14:01 UTC (permalink / raw)
  To: git

Way to reproduce:

$ git --version
git version 2.24.0
$ mkdir /tmp/checkignore
$ cd /tmp/checkignore
$ git init
Initialized empty Git repository in /tmp/checkignore/.git/
$ echo '!*.txt' > .gitignore
$ git check-ignore 1.txt
1.txt
$ echo $?
0

I believe this is a bug because it contradicts check-ignore documentation:

  0 - One or more of the provided paths is ignored.
  1 - None of the provided paths are ignored.

This bug isn't hard to fix, however:

1. That causes several tests to fail because they test for exit code that I concider to be wrong.
2. I'm not sure how to handle negated masks when check-ignore prints matching patterns.
   Printing what pattern caused file to be *not* ignored seems useful,
   but others may think that there's "mask is printed iff the file is ignored" rule.

diff --git a/builtin/check-ignore.c b/builtin/check-ignore.c
index 5a4f92395f..d0711434e6 100644
--- a/builtin/check-ignore.c
+++ b/builtin/check-ignore.c
@@ -111,7 +111,7 @@ static int check_ignore(struct dir_struct *dir,
                }
                if (!quiet && (pattern || show_non_matching))
                        output_pattern(pathspec.items[i].original, pattern);
-               if (pattern)
+               if (pattern && !(pattern->flags & PATTERN_FLAG_NEGATIVE))
                        num_ignored++;
        }
        free(seen);

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2019-11-20  3:49 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-11-19 14:01 git check-ignore returns 0 for negated masks marat
2019-11-20  3:48 ` Junio C Hamano

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).