Da SVN a GIT

Nelle scorse settimane abbiamo cambiato il software di versioning dal “vecchio” SVN al “nuovo” GIT.

Per chi non lo sapesse, un “version control system” è un software che consente a più sviluppatori di collaborare insieme sullo stesso progetto. Il sistema si occupa di gestire (o facilitare) il “merge”: l’operazione con cui le modifiche fatte allo stesso file, da persone diverse, vengono unite nella versione definitiva. Inoltre il versioning tiene la cronologia di ogni modifica, consentendo di tornare indietro e ricostruire i cambiamenti.

SVN lo introducemmo nel 2001 circa. Anche in un piccolo team è facile fare confusione con il codice sorgente e ben presto SVN divenne uno strumento indispensabile.

Aggiornare un software con oltre 15 anni di modifiche non è cosa semplice, motivo per cui la scelta di cambiare è sempre stata posticipata anno dopo anno. Tuttavia SVN è ormai fermo alla versione 1.9 da quasi 2 anni ed il supporto inizia a scarseggiare.

La principale differenza tra SVN e gli altri sistemi di versioning nati dopo è la possibilità di effettuare dei commit distribuiti. Con SVN lo sviluppatore, dopo aver lavorato in locale sul proprio PC, effettua un commit sul server centrale che si occupa di sincronizzare i files. SVN ha un solo repository centrale.

GIT invece, consente a ciascun sviluppatore di avere il proprio repository locale che, istantaneamente oppure in modo differito, può essere replicato su un repository centrale. GIT consente al codice di prendere la propria strada (c.d. “branch”) e poi di ricondurre le modifiche sullo stream principale, con una operazione di “merge request”. Insomma GIT facilita scenari distribuiti in cui più fonti confluiscono nel medesimo progetto, smontando il concetto di un’unica versione centrale.

Non a caso il numero di versione di SVN è un contatore numerico (perché attribuito dal server); in GIT è un hash SHA sempre diverso (perché generato localmente dallo sviluppatore).

GitLab

GIT è diventato famoso con GitHub, il popolare sito gratuito che ospita i progetti di oltre 23 milioni di sviluppatori. Ma GIT è un protocollo di versioning nato nel 2005 e sviluppato da un certo Linus Torvalds (!)

Dovendo necessariamente ospitare il codice on-premises abbiamo scelto GitLab, un’implementazione di GIT che può essere installata su propri server. GitLab è disponibile pre-compilato per le principali distribuzioni Linux (Ubuntu, Debian, CentOS, OpenSUSE…)

Omnibus package installation

Tra le funzionalità più interessanti:

  • Completa gestione via web di gruppi, progetti, utenti
  • Facile impostazione dei permessi per ogni progetto
  • Ricerca e diff del codice via web
  • Integrazione con LDAP (per Active Directory)
  • Wiki integrato con i progetti
  • Gestione delle segnalazioni per progetto (con ticket, assegnazione e stato di avanzamento)
  • Merge requests

La migrazione dello storico SVN su GIT è stata trasparente, anche se ha richiesto diverse ore di elaborazione e di controllo manuale delle operazioni. Il software “svn2git” si occupa della conversione: Cut over migration with svn2git

 

Chiama subito per maggiori informazioni +39 0113473770
oppure lasciaci i tuoi recapiti e sarai contattato il prima possibile:



 

Lascia un commento