Sebbene .gitignore
possa essere sovrautilizzato, è ancora uno strumento assolutamente necessario. Ho visto repository che includevano tutto, compresi i file temporanei di build, perché qualcuno ciecamente ha fatto un git add --all
. Quindi, in che modo i vari meccanismi di esclusione del git rientrano in un processo di sviluppo?
-
.gitignore
è per esclusioni specifiche del progetto generate dal processo di generazione. Per un progetto basato su CMake, si tratta in genere di una directory build
e non di molto altro. Per un progetto con build in-source, si tratterebbe di qualsiasi file di output del processo di compilazione, ad es. *.o
e alcuni file eseguibili denominati.
-
.git/info/exclude
è per esclusioni specifiche del progetto che derivano dal tuo flusso di lavoro personale. Per esempio. File di configurazione IDE. I file di configurazione OTOH IDE dovrebbero a volte essere sotto il controllo del codice sorgente, specialmente se hai standardizzato il tuo IDE all'interno del tuo team.
-
~/.gitignore
è per esclusioni globali che derivano dal tuo flusso di lavoro personale, ad es. editor di swapfiles.
A volte vuoi ignorare la maggior parte dei file di un certo tipo mentre commetti altri. Non c'è una sola soluzione migliore qui.
-
È possibile ignorare questi file per impostazione predefinita. Se è necessario il controllo della versione di uno di questi file, è ancora possibile aggiungerlo in modo esplicito. Il pericolo è che ti dimentichi di aggiungerlo, perché git status
non lo mostrerà.
es. un progetto su cui lavoro genera file di copertura *.gcda
durante i suoi casi di test. In genere voglio ignorare quelli. Ma il progetto è uno strumento di copertura. Quindi, se un test case dipende da un particolare file .gcda, commetto tale file come eccezione.
-
È possibile ignorare solo modelli di file di output specifici se si conosce un nome sufficientemente specifico. Per esempio. Lo faccio spesso per ignorare pacchetti e archivi, come /My-Project-v*.tar.gz
.
-
Se possibile, utilizzare una directory di compilazione separata è probabilmente la migliore, perché puoi quindi ignorare la directory di build anziché i file concreti.
Il problema "non si costruisce su una macchina diversa" non può essere risolto proibendo l'uso di un .gitignore - si dovrebbe anche mettere fuori legge altri meccanismi di esclusione. L'unico modo per risolverlo è eseguire test automatici ogni volta che si preme. Configurare un server CI Jenkins non è molto difficile, quindi vai e fallo.