Gitignore’i testija
Kleebi oma .gitignore’i reeglid ja failiteede loend, et näha täpselt, millised failid ignoreeritakse, millise täpse reegli ja rea tõttu ning millised eitusreeglid on vaikivalt surnud, sest ülemkataloog on juba ignoreeritud.
🔒 Töödeldud täielikult teie brauseris – midagi, mida siia sisestate, ei laadita kunagi üles.
Tulemus
„Miks minu .gitignore’i eitus ei tööta?“ on üks levinumaid git’i küsimusi ja aus vastus on peaaegu alati sama: `!muster`, mis üritab uuesti kaasata faili kataloogis, mille varasem reegel juba välistab, ei saa kunagi töötada, sest git ei lasku ignoreeritud kataloogidesse, et sealseid asju üle kontrollida. See tööriist rakendab git’i tegelikku .gitignore’i sobitusalgoritmi – mitte ligikaudset – just selleks, et seda konkreetset olukorda tuvastada ja selgitada, koos kõigi teiste mustrirežiimidega, mida git toetab.
Kleebi oma .gitignore’i reeglid ühte kasti ja failiteede loend (üks rea kohta, näiteks `dist/index.js`, `node_modules/foo/bar.js` või `.env`) teise kasti ning tööriist hindab iga teed täpselt nii, nagu git teeks: kommentaarid ja tühjad read jäetakse vahele, lõpus olevad tühikud eemaldatakse, välja arvatud juhul, kui need on paomärgistatud, eesliide `!` eitab reeglit, eesliide `/` ankurdab selle juurele, mitte ei lase tal sobituda mis tahes sügavusel, lõpus olev `/` piirab selle kataloogidele ning `*`, `?`, `[abc]` märgiklassid ja `**` (sobitub üle kataloogipiiride) töötavad kõik vastavalt dokumenteeritud glob-reeglitele.
Kriitiline on see, et teid kontrollitakse kataloog kataloogi haaval juurest allapoole – täpselt nii, nagu git’i enda ignoreerimismootor töötab –, mitte ei testita täielikku teed iga reegli vastu eraldi. See teebki võimalikuks surnud eituse juhtumi õige tuvastamise: kui `dist/` on ignoreeritud 3. real ja hilisem `!dist/keep.js` üritab seest ühte faili päästa, teatab see tööriist, et `dist/keep.js` on endiselt ignoreeritud, nimetab 3. rea reegli põhjusena ja märgistab eituse eraldi kui varjutatud, selle asemel et vaikimisi teeselda, nagu see oleks toiminud.
Tulemitabel annab igale testitud teele oma rea selge jah/ei ignoreerimisotsusega, täpse reegli teksti ja reanumbri, mis selle langetas, ning – kui asjakohane – selgesõnalise märkuse, mis selgitab varjutatud eitust või päritud ülemkataloogi reeglit. See ongi see detail, mis muudab segase .gitignore’i millekski, mille üle saad enne commit’imist tegelikult arutleda.