Come impostare .gitignore come whitelist

0
136

Il file .gitignore è una parte cruciale di qualsiasi repository Git; impedisce che i file indesiderati vengano tracciati e condivisi nel controllo del codice sorgente. Di solito, vuoi ignorare determinati file e cartelle, ma a volte è più facile farlo al contrario.

Utilizzare .gitignore come una whitelist

L'utilizzo regolare di .gitignore è semplice—dagli un nome file o un carattere jolly corrispondente e quel file verrà bloccato. Quando lo usi come whitelist, però, diventa un po' più complicato.

Innanzitutto, avrai bisogno delle due seguenti direttive nella parte superiore del file, che bloccano tutto per impostazione predefinita con un carattere jolly onnicomprensivo *:

* !*/

La seconda riga è necessaria perché la whitelist non è semplice come bloccare. A causa del modo in cui Git gestisce questi file, se vede che una directory è bloccata, non proverà nemmeno a controllare qualcosa nella directory per vedere se è stata sbloccata in seguito. Semplicemente lo salta e ignora tutte le regole all'interno di quella directory.

Quindi, la seconda riga qui dice a Git di controllare specificamente le sottocartelle. Il punto esclamativo! viene utilizzato per trasformare la regola in una whitelist. Corrisponde a tutte le directory, ma poiché non corrisponde a nulla all'interno di quelle directory, Git non terrà ancora traccia di alcun file solo con queste due righe.

Questo consente configurazioni come le seguenti:

* !*/# traccia questo file !.gitignore # whitelist tutto in ./config/!config/Advertisement

Il file .gitignore si trova nella directory principale, quindi può essere inserito nella whitelist normalmente. La whitelist delle directory richiede semplicemente una barra finale e Git tornerà alla normalità in quella directory, sovrascrivendo il precedente carattere jolly di blocco.

Se vuoi inserire esplicitamente nella whitelist una directory e tutti i suoi contenuti, devi usare il doppio carattere jolly, !config/**. Un singolo carattere jolly non si propagherebbe ricorsivamente nelle sottodirectory. Questo sovrascriverà tutte le altre regole di blocco.

Debug di .gitignore

Se hai problemi con la tua configurazione, può eseguire il debug con il comando Git check-ignore:

git check-ignore -v testfile.json