bug:git-check-ignore exit status is wrong for negative patterns when -v option used
- From
- Jeremy Faith <jeremy.faith@jci.com>
- Date
- Apr 27, 2021, 16:30 UTC
- Message-ID
- <CY4P132MB00885C970ACF5A277F06E40385419@CY4P132MB0088.NAMP132.PROD.OUTLOOK.COM>
Hi,
git version 2.31.1.362.g311531c9de git-check-ignore When a negative pattern is the last .gitignore match the -v option causes the exit status to be 0 rather than the expected 1. e.g say .gitignore contains one line: !hello git check-ignore hello #outputs nothing echo $? #shows correct exit status=1 i.e None of the provided paths are ignored. but git check-ignore -v hello #output is next line .gitignore:4:!hello hello echo $? #shows wrong exit status=0 i.e. One or more of the provided paths is ignored
Following change seems to fix it for me
--- a/builtin/check-ignore.c +++ b/builtin/check-ignore.c @@ -114,7 +114,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); Regards, Jeremy Faith