Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> writes: > The current wildmatch() call for includeIf's gitdir pattern does not > pass the WM_PATHNAME flag. Without this flag, '*' is treated _almost_ > the same as '**' (because '*' also matches slashes) with one exception: > > '/**/' can match a single slash. The pattern 'foo/**/bar' matches > 'foo/bar'. > > But '/*/', which is essentially what wildmatch engine sees without > WM_PATHNAME, has to match two slashes (and '*' matches nothing). Which > means 'foo/*/bar' cannot match 'foo/bar'. It can only match 'foo//bar'. > > The result of this is the current wildmatch() call works most of the > time until the user depends on '/**/' matching no path component. And > also '*' matches slashes while it should not, but people probably > haven't noticed this yet. The fix is straightforward. > +test_expect_success 'conditional include with /**/' ' > + mkdir foo/bar && > + git init foo/bar/repo && > + ( > + cd foo/bar/repo && > + echo "[includeIf \"gitdir:**/foo/**/bar/**\"]path=bar7" >>.git/config && > + echo "[test]seven=7" >.git/bar7 && > + echo 7 >expect && > + git config test.seven >actual && > + test_cmp expect actual > + ) > +' That's cute ;-) Thanks for quickly working on the fix with an incredibly short turnaround time since the initial report. P.S. I expect to be offline for most of the week (packing, moving and unpacking. Even though the places packing and unpacking happens are within 1 kilometer radius, that does not make it less hassle X-<). See you guys next month.