Archivi tag: repository

Da SVN a GIT

Git-Icon-1788C

Oggi ho trasferito l’ultimo repository SVN su GIT.
E’ arrivato quindi il momento di salutare SVN! Quando passai da CVS a SVN fu un salto di qualità, tutto appariva più semplice ma “meccanicamente” i due funzionavano allo stesso modo. Grazie quindi SVN!

Il passaggio a GIT invece all’inizio è stato davvero duro, è completamente diverso. Tutte le certezze acquisite negli anni su SVN crollarono, senza considerare poi che con qualche operazione “azzardata” cancellai anche i primi commit! Più volte ho pensato di tornare indietro. Entrare nei meccanismi di GIT non è facile e soprattutto tocca tornare a studiare. Però poi, quando entri “nella testa” di GIT (o meglio, di Linus Torvalds che l’ha creato nel 2005), entri in un altro mondo e non torneresti più indietro!

Su SVN prima di fare un commit ci pensi giorni, controlli e verifichi ogni cosa più volte perchè un commit non è cosa da poco. Su GIT ne fai uno ogni 2 ore. Lo stesso vale per i branch: crearne uno su SVN vuol dire che si sta iniziando qualcosa di grosso, una nuova release strutturalmente diversa. In GIT un branch lo apri anche solo per fixare un bug.

In GIT il repository è sempre con te, c’è tutta la storia. Ogni commit, tag, branch è lì con te, in locale. Ovviamente però anche GIT offre la possibilità di gestire un repo in remoto ma è soltanto una copia di ciò che hai in locale. Semplicemente un altro repo GIT che ti permette di lavorare su un progetto insieme ad altri.

Poi con GIT ti avvicini a GitHub e scopri un mondo nuovo, inizi a gestire le varie librerie come sub-moduli. Crei forks personali dei vari moduli sul tuo GitHub e li tieni allineati con l’origine. Quando impari ad usare i moduli ti rendi conto che GIT ha una marcia in più.

Ovviamente han pensato anche ad una procedura di importazione da SVN a GIT che funziona una meraviglia!

Migrare Repository SVN


Metto qui insieme alcune risorse utili a migrare repository SVN. La soluzione migliore a mio avviso è quella di creare il dump di un repository per poi importarlo nel nuovo. Per creare un dump (se sono disponibili i comandi da riga di comando) lanciare da shell:

# svn dump my_repo_path > myRepo.SVNdump

Dove my_repo_path è il percorso in cui si trova il repository e myRepo.SVNdump è il file di output che andiamo a creare.

Dopo aver effettuato il dump e dopo averlo caricato nel nuovo Repo si blocca se non ha lo stesso UUID. E’ possibile modificare l’UUID di un Repository successivamente alla creazione del dump. E’ possibile inoltre forzare l’UUID quando si carica il Dump nel nuovo repo col comando:

# svnadmin load --force-uuid ...

Altre risorse utili: