Re: [PATCH 5/7] t0060: test obscured .gitattributes and .gitignore matching
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Oct 5, 2020, 21:20 UTC
- Message-ID
- <nycvar.QRO.7.76.6.2010052306470.50@tvgsbejvaqbjf.bet>
- In-Reply-To
- <20201005084051.GD2862927@coredump.intra.peff.net>
Hi Peff & Jonathan N,
On Mon, 5 Oct 2020, Jeff King wrote:
Show 12 quoted lines
> On Mon, Oct 05, 2020 at 01:03:53AM -0700, Jonathan Nieder wrote: > > > > Note that the ntfs magic prefix names in the tests come from the > > > algorithm described in e7cb0b4455 (and are different for each file). > > > > Doesn't block this patch, but I'm curious: how hard would it be to make > > a test with an NTFS prerequisite that makes sure we got the magic prefix > > right? > > I suspect hard since Dscho punted on it in the original series. :) If I > understand correctly, it would require having an NTFS filesystem, and > generating 10,000+ files with a clashing prefix.
It's not quite _as_ bad: you only need to generate 4 files with a clashing prefix and then the real one:
-- snip -- me@work MINGW64 ~/repros/ntfs-short-names $ touch .gitattributes1
me@work MINGW64 ~/repros/ntfs-short-names $ touch .gitattributes2
me@work MINGW64 ~/repros/ntfs-short-names $ touch .gitattributes3
me@work MINGW64 ~/repros/ntfs-short-names $ touch .gitattributes4
me@work MINGW64 ~/repros/ntfs-short-names $ touch .gitattributes
me@work MINGW64 ~/repros/ntfs-short-names $ touch .gitignore1
me@work MINGW64 ~/repros/ntfs-short-names $ touch .gitignore2
me@work MINGW64 ~/repros/ntfs-short-names $ touch .gitignore3
me@work MINGW64 ~/repros/ntfs-short-names $ touch .gitignore4
me@work MINGW64 ~/repros/ntfs-short-names $ touch .gitignore
me@work MINGW64 ~/repros/ntfs-short-names $ cmd //c dir //x Volume in drive C is OSDisk Volume Serial Number is 5E6B-4E77
Directory of C:\Users\me\repros\ntfs-short-names
10/05/2020 11:11 PM <DIR> .
10/05/2020 11:11 PM <DIR> ..
10/05/2020 11:08 PM 0 GI7D29~1 .gitattributes
10/05/2020 11:08 PM 0 GITATT~1 .gitattributes1
10/05/2020 11:08 PM 0 GITATT~2 .gitattributes2
10/05/2020 11:08 PM 0 GITATT~3 .gitattributes3
10/05/2020 11:08 PM 0 GITATT~4 .gitattributes4
10/05/2020 11:11 PM 0 GI250A~1 .gitignore
10/05/2020 11:11 PM 0 GITIGN~1 .gitignore1
10/05/2020 11:11 PM 0 GITIGN~2 .gitignore2
10/05/2020 11:11 PM 0 GITIGN~3 .gitignore3
10/05/2020 11:11 PM 0 GITIGN~4 .gitignore4
10 File(s) 0 bytes
2 Dir(s) 314,658,705,408 bytes free
-- snap --But I don't necessarily think that it would make sense to add that test: it adds churn _every_ time the regression test is run, and by deity, it sure takes way too long on Windows _already_, and the test would be for a regression _in the NTFS driver_.
At this stage, I also highly doubt that the algorithm will change ever again (the last time it changed was several Windows versions ago, I want to say in Windows XP, but it could have been all the way back to NT).
In light of that, I'd say that the bang is rather small and the buck would be not small at all, and would have to be paid by developers on Windows who already pay a disproportionately high price when running the test suite, so...
Ciao, Dscho