Gitignore tesztelő
Illessze be a .gitignore szabályokat és a fájl elérési útjainak listáját, hogy pontosan megtekinthesse, mely fájlokat hagyja figyelmen kívül a rendszer, melyik szabály és sor határozza meg, és mely tagadási szabályok halottak meg, mert egy szülőkönyvtár már figyelmen kívül van hagyva.
Eredmény
"Miért nem működik a .gitignore tagadásom?" Az egyik leggyakoribb git-kérdés, és az őszinte válasz szinte mindig ugyanaz: egy `!minta`, amely megpróbál újra beilleszteni egy fájlt egy olyan könyvtárba, amelyet egy korábbi szabály már kizár, soha nem működhet, mert a git nem ereszkedik le figyelmen kívül hagyott könyvtárakba, hogy újra ellenőrizze a bennük lévő dolgokat. Ez az eszköz újraimplementálja a git tényleges .gitignore illesztő algoritmusát – nem egy közelítést –, kifejezetten azért, hogy elkapja és megmagyarázza a pontos helyzetet, valamint minden más, a git által támogatott mintaszabályt.
Illessze be a .gitignore szabályokat az egyik mezőbe, a másikba pedig a fájl útvonalak listáját (soronként egyet, például `dist/index.js`, `node_modules/foo/bar.js` vagy `.env`) a másikba, és az eszköz pontosan úgy értékeli ki az egyes útvonalakat, ahogyan a git tenné: a megjegyzések és az üres sorok kimaradnak, a bevezető szóközök pedig a bevezető szóközt jelentik. A `/` a gyökérhez rögzíti, ahelyett, hogy bármilyen mélységben egyezést hagyna, a záró `/` pedig könyvtárakra korlátozza, a `*`, `?`, `[abc]` karakterosztályokra és `**` (a könyvtárhatárokon átívelő egyezés) pedig a dokumentált glob-szabályok szerint működik.
Lényeges, hogy az elérési utakat könyvtáronként ellenőrzik a gyökértől lefelé, ugyanúgy, ahogy a git saját figyelmen kívül hagyó motorja működik – nem úgy, hogy a teljes elérési utat minden szabály ellen külön-külön tesztelik. Ez az, ami lehetővé teszi a holt tagadás esetének helyes észlelését: ha a dist/ figyelmen kívül hagyja a 3. sorban, és egy későbbi `!dist/keep.js` megpróbál megmenteni egy fájlt benne, akkor ez az eszköz a dist/keep.js fájlt továbbra is figyelmen kívül hagyva jelenti, a 3. sor szabályát nevezi meg okként, és külön megjelöli a tagadást, mint az árnyékolást, nem pedig csendben.
Az eredménytáblázat minden tesztelt útvonalnak megadja a saját sorát, egyértelmű igen/nem figyelmen kívül hagyott ítélettel, a pontos szabályszöveggel és sorszámmal, amely eldöntötte, valamint – ha releváns – egy egyszerű nyelvű megjegyzést, amely elmagyarázza az árnyékolt tagadást vagy az örökölt szülőkönyvtár-szabályt. Ez az a részlet, amely egy zavarba ejtő .gitignore-t olyanná változtat, amelyen valóban meggondolhatja magát, mielőtt elkötelezi magát.