git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

Previous: Jeff KingNext: Jeff King
Message 20 of 55 in “forbidding symlinked .gitattributes and .gitignore”
  1. 0/7 forbidding symlinked .gitattributes and .gitignoreJeff King, Oct 5, 2020
  2. 1/7 fsck_tree(): fix shadowed variableJeff King, Oct 5, 2020
  3. Jonathan NiederOct 5, 2020
  4. Jeff KingOct 5, 2020
  5. Jonathan NiederOct 5, 2020
  6. 2/7 fsck_tree(): wrap some long linesJeff King, Oct 5, 2020
  7. Jonathan NiederOct 5, 2020
  8. 3/7 t7415: rename to expand scopeJeff King, Oct 5, 2020
  9. Jonathan NiederOct 5, 2020
  10. Jeff KingOct 5, 2020
  11. Jonathan NiederOct 5, 2020
  12. Jeff KingOct 5, 2020
  13. 4/7 t7450: test verify_path() handling of gitmodulesJeff King, Oct 5, 2020
  14. Jonathan NiederOct 5, 2020
  15. Jeff KingOct 5, 2020
  16. Jonathan NiederOct 5, 2020
  17. 5/7 t0060: test obscured .gitattributes and .gitignore matchingJeff King, Oct 5, 2020
  18. Jonathan NiederOct 5, 2020
  19. Jeff KingOct 5, 2020
  20. Johannes SchindelinOct 5, 2020
  21. Jeff KingOct 6, 2020
  22. 6/7 verify_path(): disallow symlinks in .gitattributes and .gitignoreJeff King, Oct 5, 2020
  23. Jonathan NiederOct 5, 2020
  24. Jeff KingOct 5, 2020
  25. 7/7 fsck: complain when .gitattributes or .gitignore is a symlinkJeff King, Oct 5, 2020
  26. Jonathan NiederOct 5, 2020
  27. Jeff KingOct 5, 2020
  28. Jonathan NiederOct 5, 2020
  29. Jeff KingOct 5, 2020
  30. 0/8 forbidding symlinked .gitattributes and .gitignoreJeff King, Oct 5, 2020
  31. 1/8 fsck_tree(): fix shadowed variableJeff King, Oct 5, 2020
  32. 2/8 fsck_tree(): wrap some long linesJeff King, Oct 5, 2020
  33. 3/8 t7415: rename to expand scopeJeff King, Oct 5, 2020
  34. 4/8 t7450: test verify_path() handling of gitmodulesJeff King, Oct 5, 2020
  35. 5/8 t7450: test .gitmodules symlink matching against obscured namesJeff King, Oct 5, 2020
  36. 7/8 verify_path(): disallow symlinks in .gitattributes and .gitignoreJeff King, Oct 5, 2020
  37. Jonathan NiederOct 27, 2020
  38. Jeff KingOct 27, 2020
  39. Junio C HamanoOct 27, 2020
  40. Jeff KingOct 28, 2020
  41. Jonathan NiederOct 27, 2020
  42. Junio C HamanoOct 28, 2020
  43. 6/8 t0060: test obscured .gitattributes and .gitignore matchingJeff King, Oct 5, 2020
  44. 8/8 fsck: complain when .gitattributes or .gitignore is a symlinkJeff King, Oct 5, 2020
  45. Junio C HamanoOct 6, 2020
  46. Philip OakleyOct 20, 2020
  47. documentation symlink restrictions for .git* filesJeff King, Oct 23, 2020
  48. Jeff KingOct 23, 2020
  49. Philip OakleyOct 26, 2020
  50. Jeff KingOct 26, 2020
  51. Junio C HamanoOct 26, 2020
  52. Jeff KingOct 27, 2020
  53. Junio C HamanoOct 27, 2020
  54. Philip OakleyOct 27, 2020
  55. Junio C HamanoOct 28, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.