0

Ignorirajte tester

Zalijepite svoja .gitignore pravila i popis putova datoteka kako biste vidjeli koje su datoteke točno zanemarene, po kojem točno pravilu i liniji te koja su pravila negacije tiho mrtva jer je roditeljski direktorij već zanemaren.

Buy Me a Coffee at ko-fi.com
Obrada... 0%
Raščlanjivanje .gitignore pravila
Odgovarajući putovi datoteka
Gotovo

Rezultat

"Zašto moja .gitignore negacija ne radi?" jedno je od najčešćih pitanja o git-u, a pošten odgovor je gotovo uvijek isti: `!uzorak` koji pokušava ponovno uključiti datoteku unutar direktorija koji je prethodno pravilo već isključilo nikada ne može uspjeti, jer git ne ulazi u zanemarene direktorije da ponovno provjeri bilo što unutar njih. Ovaj alat ponovno implementira git-ov stvarni .gitignore algoritam podudaranja — ne aproksimaciju — posebno kako bi mogao uhvatiti i objasniti tu točnu situaciju, zajedno sa svim drugim pravilima uzorka koje git podržava.

Zalijepite svoja .gitignore pravila u jedan okvir i popis putova datoteka (jedan po retku, kao što je `dist/index.js`, `node_modules/foo/bar.js` ili `.env`) u drugi, a alat procjenjuje svaki put točno onako kako bi git to učinio: komentari i prazni reci se preskaču, razmaci na kraju se uklanjaju osim ako nisu označeni, `!` negira pravilo, `/` na početku ga pričvršćuje za korijen umjesto da mu dopusti podudaranje na bilo kojoj dubini, `/` na kraju ga ograničava na direktorije, a `*`, `?`, `[abc]` klase znakova i `**` (podudaranje preko granica direktorija) rade prema dokumentiranim glob pravilima.

Ono što je kritično, staze se provjeravaju direktorij po direktorij od korijena prema dolje, na isti način na koji git-ov vlastiti mehanizam za ignoriranje radi — ne testiranjem cijele putanje protiv svakog pravila zasebno. To je ono što omogućuje ispravno otkrivanje slučaja mrtve negacije: ako je `dist/` zanemaren u retku 3, a kasnije `!dist/keep.js` pokuša spasiti jednu datoteku unutar nje, ovaj alat izvješćuje da je `dist/keep.js` i dalje zanemaren, imenuje pravilo retka 3 kao razlog i zasebno označava negaciju kao zasjenjenu umjesto da se tiho pretvara da radi.

Tablica rezultata daje svakoj testiranoj stazi vlastiti redak s jasnom presudom zanemareno da/ne, točnim tekstom pravila i brojem retka koji je odlučio, i — kad god je relevantno — bilješkom na jednostavnom jeziku koja objašnjava zasjenjenu negaciju ili naslijeđeno pravilo nadređenog direktorija. To je detalj koji zbunjujući .gitignore pretvara u onaj o kojem zapravo možete razmišljati prije nego što se obvežete.