Git e QtCreator
Oggi per la prima volta mi sono imbattuto nella creazione e gestione di un repository git. In questo articolo voglio solo raccogliere link utili e passaggi particolari.
Perchè git?
Questa è forse una delle domande che assillano i più. Ci sono mille motivi per usare altri sistemi per il controllo dei file di un progetto ma quello che personalmente mi ha colpito sono stati:
- possibiiltà di lavorare offline e creare dei commit personalizzati sulla propria macchina per poi solo alla fine inviare il tutto al server git.
- gestione dei tags o HEADs in base alla versione dell'ultimo commit, non c'è bisogno di copiare in una nuova struttura i sorgenti (come ad es: trunk, release, ecc...)
Ognuno è libero di scegliere quello che ritiene migliore ed i motivi sopra elencati sono solo pareri personali.
Git con QtCreator
Con l'avvento di QtCreator ho cambiato IDE di sviluppo da kdevelop al nuovo programma della QtSoftware. Trovo che per programmare utilizzando le librerie Qt l'ambiente QtCreator svolge tutte le operazioni comuni in modo molto semplice ed intuitivo, inoltre, integra degli strumenti veramente utili per facilitare la vita allo sviluppatore. Uno di questi è il plugin per interfacciarsi ad un respository git, SVN o Perforce.
QtCreator ha già tutto il neccessario per creare dei commits e inviare i dati al server (git push), l'unica utiliy che bisogna installare è il pacchetto ssh-askpass.
Il programma «ssh-askpass» può essere trovato nei seguenti pacchetti (linux):
* ssh-askpass-gnome (interfaccia per Gnome)
* ssh-askpass (interfaccia in tk)
* ksshaskpass (interfaccia per KDE)
Ho provato pure ad integrare con QtCreator un repository SVN ma sensa successo, sembra che il plugin allo stato attuale non sia ancora funzionante al 100%
Ignorare files da un respository git
Capita molto spesso di non voler inviare al server delle cartelle inserite nel progetto, ad es. QtCreator crea delle directory temporane durante la compilazione. Per ignorare questi file ci sono sostanzialmente quattro metodi:
- argomenti da linea di comando
- file .gitignore nella directory del repository
- $GIT_DIR/info/exclude
- un file specificato nella proprietà core.excludes
Il primo sistema andrebbe bene solo per saltuari aggiornamenti o per includerlo in uno script. Lasciando stare il terzo vorrei concentrarmi sulla differenza tra il secondo metodo e il quarto. Con la seconda soluzione si può condividere agli altri sviluppatori i file da ignorare mentre la quarta permette di inserire un file gitignore personale e non visibile dagli altri. Il file .gitignore viene posizionato normalmente nella radice del proprio progetto per il secondo metodo mentre per il quarto basta indicare il file modificando le preferenze di git in ./git/config ed inserire:
[core]
excludesfile = "/path/to/.gitexcludes"
Dopo aver creato/modificato il file dovete creare un commit per applicare le modifiche:
git add .gitignore
git commit -m "File ignorati"
Se i file da ignorare sono già presenti sul server dovete usare il comando (attenzione usando questo comando i file vengono cancellati anche dalla vostra copia in locale!!):
git-rm -r path/dir (per eliminare ricorsivamente le directory
git -rm file (per eliminare singoli file)
Infine se avete rimosso dei file create un'altro commit altrimenti procedete con il caricamento del tutto sul server con il comando:
git push
Allego la mia copia semplificata del file .gitexclude per QtCreator:
#Remove QtCreator files
debug
qtc-gdbmacros
release
*.txt~
Makefile*
*.pro.user
#Remove dolphin files
.directory
#Remove temp files
.*~
Link utili
Per completare le notizia lascio alcuni link che mi hanno aiutato nel capire i comandi ed il comportamento di git.
Home Page del progetto git
Documentazione completa git
Creare da 0 un repository con SourceForge
git vs SVN
git ignore files
Git cheat sheet (comodissimo, contiene tutte le istruzioni. Fonte)
Commenti recenti