git/list[1] front-page[2] threads[3] people[4] search[5] about
 

git check-ignore ignores negated entries

From
DADavid Alphus <david.alphus@gmail.com>
Date
Sep 20, 2018, 17:22 UTC
Message-ID
<CAB=bJ9Mjw2keJ3aspLWcreLBcB15Eq-WjtBO0XS8B=C3XJmx9A@mail.gmail.com>

If a .gitignore contains a ! entry, git check-ignore will still say the matching file is ignored if the file is not in the index.

Simple case to reproduce:

$ git init . $ echo "*.c" > .gitignore $ echo '!a.c' >> .gitignore $ touch a.c b.c $ git check-ignore a.c b.c a.c b.c $ git add *.c The following paths are ignored by one of your .gitignore files: b.c Use -f if you really want to add them. $ git check-ignore a.c b.c b.c $ git check-ignore --no-index a.c b.c a.c b.c $ git check-ignore --no-index --verbose a.c b.c .gitignore:2:!a.c a.c .gitignore:1:*.c b.c

In looking through check-ignore.c, it appears that we check that last_exclude_matching() returns an exclude object. It should be noted that we do not consider that exclude struct can be set with the EXC_FLAG_NEGATIVE flag. This flag says that the final matching rule should not be ignored. check_ignore needs to consider this condition in order to work properly.

Next: Duy Nguyen
Message 1 of 2 in “git check-ignore ignores negated entries”
  1. David AlphusSep 20, 2018
  2. Duy NguyenSep 21, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.