TRASLOCO
Sempre mosso dalla voglia di allontanarmi da Google e dai suoi servizi, ho finalmente deciso che dopo diversi anni la piattaforma di questo piccolo spazio andava cambiata. Finalmente il blo cambia casa. Se volete trovarmi potete recarvi al nuovo indirizzo

domenica 27 marzo 2011

GIT - Ignorare file dai commit


Quando si usa un IDE, come nel mio caso quello di Gambas, per sviluppare un software, può accadere di avere a che fare con dei file particolarmente fastidiosi che possono rendere l'uso di un VCS molto meno pratico del normale. Questi file, nella maggior parte dei casi, sono fondamentali per il corretto funzionamento dell'ambiente di sviluppo che si sta usando e solitamente essi vengono ricreati automaticamente ogni qual volta proviamo ad eliminarli. Proprio per tale motivo un semplice

git rm -f nome_file

non basta poiché alle successive modifiche, e relativo commit, ci si ritrova questi fastidiosi file tra i cambiamenti non tracciati.

Un'ottima soluzione è quella di utilizzare il file locale exclude per indicare la lista di pacchetti da tener fuori dai rilevamenti di git. Il suo uso basilare è molto semplice e risulta un ottimo strumento anche per usi più professionali. Immaginiamo di voler escludere dai nostri commits un file di nome configurazione, uno chiamato setting.info e tutti i file di testo di backup (ad esempio file tipo main~, info~ o parameter~).


Apriamo un terminale e digitiamo:

$ gedit /home/NOME_UTENTE/PATH_PROGETTO/.git/info

sostituendo a gedit il nostro editor di testo preferito. Ci troveremo davanti ad un file contenente un testo simile al seguente:


# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~

Le suddette righe sono commenti che spiegano brevemente il funzionamento del sistema in esame. Il file è molto semplice da gestire poiché i file che non vogliamo tracciare vanno inseriti uno per riga in una vera e propria blacklist. La lista dei file va posto esattamente al seguito del testo appena visualizzato. Il file nel caso in esame avrà il seguente aspetto:


# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
configurazione
setting.info
*~

Come possiamo vedere i primi due file sono stati indicati in maniera completa con il nome preciso mentre per quanto riguarda i file di backup è stati usato il carattere jolly * che indica un qualsiasi testo seguito dal simbolo che segue questo tipo di file.

Ovviamente il file accetta le regexp in modo da poter gestire facilmente anche progetti con tanti file molto più complessi da tracciare.