Keď sa pohybujete v niečom cudzom klonovanom repozitári s množstvom rôznych súborov a tu a tam niečo poupravujete, oplatí sa používať dobré nástroje na zrýchlenie práce.

Keďže ide o repozitár, pre správu verzií prirodzene siahnem po git. Na hľadanie súborov sa mi osvedčil nástroj fd, jedna z moderných alternatív k GNU find. Jadrom veci však zostáva prehľadávanie obsahu súborov, aby ste pochopili ich záludnosti — zvlášť keď škriabete v kóde napísanom v neznámom jazyku alebo frameworku.

Na rýchle hľadanie a výpis súborov obsahujúcich reťazec alebo regulárny výraz prvý napadne GNU grep. Aj ten však dostal množstvo moderných náhrad. Pre väčšinu vyhľadávaní v obsahu súborov používam rg.

Ignorovanie určitých súborov #

Moderné alternatívy štandardných GNU nástrojov prinášajú mnoho vylepšení. Okrem potenciálneho zrýchlenia, ktoré môže byť v každodennom použití zanedbateľné, ich funkcionalita zahŕňa aj ignorovanie určitých súborov. O vylúčení ignorovaných súborov som už písal. Tento príspevok sa však na tú tému pozerá z úplne iného uhla.

Potreboval som vylúčiť súbory zo zložky content/ z výsledkov vyhľadávania. Najjednoduchšie by bolo vložiť tú zložku do .gitignore a rg by to zachytil, keďže štandardne vylučuje súbory ignorované správou verzií. Nechcel som však tú zložku z verzionovania vyradiť.

Takže som tú zložku vložil nie do .gitignore, ale do .rgignore. Výsledky vyhľadávania sa vyčistili a chvíľu som bol spokojný. O chvíľu neskôr, pri commitovaní, sa .rgignore zobrazoval ako nesledovaný súbor. Nesledované súbory môžu byť náhodne zahrnuté do repozitára, ak nie je dostatočná pozornosť. Tento súbor s repozitárom nemal nič spoločné — pomáhal mi len pochopiť kód — takže som ho nechcel commitovať.

Len o jednu vrstvu viac #

Preto som vložil .rgignore do čerstvo vytvoreného .gitignore. Situácia sa mi zdala vtipná, lebo .rgignore sa síce prestal zobrazovať ako nesledovaný, ale .gitignore sa tak zobrazovať začal. V podstate som len pridal ďalšiu vrstvu odkladajúcu problém s nechceným commitovaním nepotrebného súboru, najmä náhodným.

Aby som uzavrel kruh, vložil som .gitignore do neho samého spolu s .fdignore. Použiť .gitignore na ignorovanie seba samého. To sa asi stalo aj iným ľuďom, ale pre mňa to bola prvýkrát. Vyriešilo to ale problémy:

  1. Zúženie výsledkov rg len na skutočný kód
  2. Zabránenie náhodnému commitnutiu nastavení
  3. Skrytie celého tohto bordelu

Stalo sa vám niekedy, že ste museli gitignore-ovať samotný .gitignore?

Toto je 77. príspevok #100daystooffload.