Tester Gitignore
Prilepte svoje pravidlá .gitignore a zoznam ciest k súborom, aby ste presne videli, ktoré súbory sú ignorované, ktorým presným pravidlom a riadkom a ktoré pravidlá negácie sú ticho mŕtve, pretože nadradený adresár je už ignorovaný.
Výsledok
"Prečo nefunguje moja negácia .gitignore?" je jedna z najbežnejších otázok týkajúcich sa git a úprimná odpoveď je takmer vždy rovnaká: `!vzor`, ktorý sa pokúša znovu zahrnúť súbor do adresára, ktorý predchádzajúce pravidlo už vylučuje, nemôže nikdy fungovať, pretože git nezostupuje do ignorovaných adresárov, aby znova skontroloval čokoľvek v nich. Tento nástroj reimplementuje skutočný algoritmus zhody git .gitignore – nie aproximáciu – špecificky tak, aby mohol zachytiť a vysvetliť túto presnú situáciu spolu s každým ďalším vzorovým pravidlom, ktoré git podporuje.
Prilepte svoje pravidlá .gitignore do jedného poľa a zoznam ciest k súborom (jednu na riadok, napríklad `dist/index.js`, `node_modules/foo/bar.js` alebo `.env`) do druhého a nástroj vyhodnotí každú cestu presne tak, ako by to urobil git: komentáre a prázdne riadky sú preskočené, na začiatku nie sú medzery na konci, medzery na konci a nie sú odstránené `` ukotví ho ku koreňu namiesto toho, aby sa zhodoval v akejkoľvek hĺbke, koncový znak `/` ho obmedzuje na adresáre a triedy znakov `*`, `?`, `[abc]` a `**` (zhodujúce sa cez hranice adresára) všetky fungujú podľa zdokumentovaných pravidiel glob.
Dôležité je, že cesty sú kontrolované adresár po adresári od koreňového nadol, rovnakým spôsobom ako funguje vlastný ignorovací mechanizmus git – nie testovaním úplnej cesty proti každému pravidlu izolovane. To umožňuje správne rozpoznať prípad mŕtvej negácie: ak sa `dist/` ignoruje na riadku 3 a neskorší `!dist/keep.js` sa v ňom pokúsi zachrániť jeden súbor, tento nástroj nahlási `dist/keep.js` ako stále ignorovaný, ako dôvod pomenuje pravidlo 3. riadku a samostatne označí negáciu skôr ako zatienenú.
Tabuľka výsledkov poskytuje každej testovanej ceste vlastný riadok s jasným ignorovaným verdiktom áno/nie, presným textom pravidla a číslom riadku, ktoré rozhodlo, a – vždy, keď je to relevantné – poznámku v obyčajnom jazyku vysvetľujúcu tieňovanú negáciu alebo zdedené pravidlo nadradeného adresára. To je detail, ktorý premení mätúci .gitignore na taký, o ktorom môžete uvažovať ešte predtým, než sa zaviažete.