Hi, Johannes Schindelin wrote: > On Fri, 12 May 2017, Jonathan Nieder wrote: >> Would something like >> >> test PIPE_IN_FILENAME ' >> >"a|b" && >> test -f "a|b" >> ' >> >> work? [...] > Back to the subject: The MSYS2 emulation layer inherits a neat trick from > Cygwin, where it *can* create file names containing pipe symbols. They > will be quietly mapped into a private UTF-8 page, and when Cygwin or MSYS2 > read the file back, the file name maps from this page back to ASCII > transparently. > > That strategy is all good and dandy, as long as you stay within the POSIX > emulation layer. > > Git for Windows avoids the POSIX emulation layer as much as possible, for > speed, and also for robustness. > > Which means that Git does *not* map the file names using said private > UTF-8 code page. And therefore, your test would succeed (because the shell > script would stay within the POSIX emulation layer, which creates that > file using above-mentioned strategy), but Git (being a regular Win32 > program) *still* would fail to create said file. Wow. Thanks for a clear explaination. I'll be keeping a copy of this message handy for the next time I'm confused about filename handling in the testsuite on Windows. Sincerely, Jonathan