#!/bin/bash set -eu -o pipefail git init -q git config core.autocrlf false git config core.ignorecase false while read -r pattern value; do echo "$pattern" "$value" echo "$pattern" > .gitignore echo "$value" | git check-ignore -vn --stdin 2>&1 || : done <git-baseline.nmatch /*foo bam/barfoo/baz/bam /*foo bar/bam/barfoo/baz/bam foo foobaz */\' XXX/\' /*foo bar/foo /*foo bar/bazfoo foo*bar foo/baz/bar /*foo.txt hello/foo.txt bar/foo baz/bar/foo *hello.txt hello.txt-and-then-some *hello.txt goodbye.txt *some/path/to/hello.txt some/path/to/hello.txt-and-then-some *some/path/to/hello.txt some/other/path/to/hello.txt *some/path/to/hello.txt a/bigger/some/path/to/hello.txt abc?def abc/def a*b*c abcd abc*abc*abc abcabcabcabcabcabcabca a[0-9]b a_b a[!0-9]b a0b a[!0-9]b a9b [!-] - a[^0-9]b a0b a[^0-9]b a9b [^-] - {a,b} a {a,b} b {[}],foo} } {foo} foo {*.foo,*.bar,*.wat} test.foo {*.foo,*.bar,*.wat} test.bar {*.foo,*.bar,*.wat} test.wat abc*def abc/def aBcDeFg abcdefg aBcDeFg ABCDEFG aBcDeFg AbCdEfG some/**/needle.txt some/other/notthis.txt some/**/**/needle.txt some/other/notthis.txt /**/test one/notthis /**/test notthis **/.* ab.c **/.* abc/ab.c .*/** a.bc .*/** abc/a.bc ./foo foo **/foo foofoo **/foo/bar foofoo/bar /*.c mozilla-sha1/sha1.c **/m4/ltoptions.m4 csharp/src/packages/repositories.config some/*/needle.txt some/needle.txt some/*/needle.txt some/one/two/needle.txt some/*/needle.txt some/one/two/three/needle.txt .*/** .abc foo/** foo {**/src/**,foo} abc/src/bar {**/src/**,foo} foo abc[/]def abc/def EOF while read -r pattern value; do echo "$pattern" "$value" echo "$pattern" > .gitignore echo "$value" | git check-ignore -vn --stdin 2>&1 || : done <git-baseline.match */' XXX/' \a a \\\[a-z] \a \\\? \a \\\* \\ /*foo.txt barfoo.txt *foo.txt bar/foo.txt *.c mozilla-sha1/sha1.c *.rs .rs *hello.txt hello.txt *hello.txt gareth_says_hello.txt *hello.txt some/path/to/hello.txt /*foo.txt foo.txt *hello.txt some\path\to\hello.txt *hello.txt an/absolute/path/to/hello.txt *some/path/to/hello.txt some/path/to/hello.txt a foo/a a a a*b a_b a*b*c abc a*b*c a_b_c a*b*c a___b___c abc*abc*abc abcabcabcabcabcabcabc a*a*a*a*a*a*a*a*a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a*b[xyz]c*d abxcdbxcddd ☃ ☃ ** abcde ** .asdf ** x/.asdf a[0-9]b a0b a[0-9]b a9b a[!0-9]b a_b [a-z123] 1 [1a-z23] 1 [123a-z] 1 [abc-] - [-abc] - [-a-c] b [a-c-] b [-] - a[^0-9]b a_b _[[]_[]]_[?]_[*]_!_ _[_]_?_*_!_ a,b a,b \[ [ \? ? \* * aBcDeFg aBcDeFg some/**/needle.txt some/needle.txt some/**/needle.txt some/one/needle.txt some/**/needle.txt some/one/two/needle.txt some/**/needle.txt some/other/needle.txt some/**/**/needle.txt some/needle.txt some/**/**/needle.txt some/one/needle.txt some/**/**/needle.txt some/one/two/needle.txt some/**/**/needle.txt some/other/needle.txt **/test one/two/test **/test one/test **/test test /**/test one/two/test /**/test one/test /**/test test **/.* .abc **/.* abc/.abc **/foo/bar foo/bar .*/** .abc/abc test/** test/ test/** test/one test/** test/one/two some/*/needle.txt some/one/needle.txt abc/def abc/def EOF git config core.ignorecase true while read -r pattern value; do echo "$pattern" "$value" echo "$pattern" > .gitignore echo "$value" | git check-ignore -vn --stdin 2>&1 || : done <git-baseline.match-icase aBcDeFg aBcDeFg aBcDeFg abcdefg aBcDeFg ABCDEFG aBcDeFg AbCdEfG EOF