Git: una breve introduzione

Il versioning del codice è un aspetto fondamentale da tenere in considerazione quando si sviluppano progetti software complessi. E, ormai da qualche anno, la parola versioning fa sempre più rima con Git.

Ma cos’è Git e perché è così famoso tra gli sviluppatori?

Cerchiamo di scoprirlo in questo post.

Cos’è un Version Control System

Per chi non lo sapesse, vi dico subito che Git è un Version Control System (VCS), ovvero un sistema per la gestione delle revisioni. Prima di entrare nello specifico, però, cerchiamo di capire meglio che cos’è un Version Control System.

Un VCS è essenzialmente un sistema software che ci permette di gestire lo storico delle versioni di un documento o progetto. Nel caso specifico di progetti software, questi strumenti sono anche definiti Source Control Systems, ovvero sistemi per il controllo del codice sorgente.

Lavorando con un VCS possiamo “congelare” lo stato di avanzamento del nostro progetto in una versione (o revisione), che verrà archiviata e “marchiata” con un identificativo univoco. Questo ci permette, in qualunque momento, di recuperare ed eventualmente ripristinare lo stato del nostro progetto in un determinato istante.

Nota In realtà, questo è un ritratto piuttosto semplificato di quello che un moderno VCS mette a disposizione. In sintesi però un sistema di versioning è a tutti gli effetti un diario, un album di fotografie scattate al nostro codice in momenti significativi.

L’evoluzione dei sistemi per la gestione delle revisioni è passata, negli anni, attraverso diverse generazioni di strumenti, ognuna concepita con l’obiettivo di superare i limiti di quella precedente.

Il sistema SVN (Subversion) che per molto tempo ha rappresentato uno standard de facto per chiunque volesse gestire il versioning dei propri progetti, da qualche anno sembra aver trovato un degno erede.

E indovinate come si chiama questo erede…

Cos’è Git

Git è un progetto open source nato nel 2005 ad opera di Linus Torvalds, lo stesso Torvalds inventore di Linux. Il progetto, infatti, nasce proprio con l’obiettivo di rendere agevole lo sviluppo condiviso e distribuito del kernel Linux.

Git

Ad oggi, Git è uno dei VCS più gettonati, soprattutto per la gestione di progetti open source, ma non solo… Anche in ambito aziendale, dove Subversion rimane ancora molto utilizzato, si sta assistendo ad una progressiva migrazione dei progetti dal vecchio sistema al nuovo.

A questo punto però vi starete chiedendo cos’ha di tanto speciale questo Git

La sua particolarità sta nell’architettura distribuita, caratteristica che condivide con la maggior parte dei moderni VCS.

In termini pratici, chiunque effettui il checkout di un ipotetico progetto dal suo repository principale, possiede, a tutti gli effetti, una copia completa dello stesso repository (clone) sulla propria macchina.

A differenza di quanto succede per VCS centralizzati (come SVN), sarà dunque possibile svolgere la maggior parte delle attività sul repository senza contattare il server centrale.

Ne conseguono due vantaggi immediati:

  • la possibilità di lavorare offline ai nostri progetti: potremo, in ogni momento, navigare il nostro repository locale, effettuare commit e checkout di revisioni, tutto come se fossimo costantemente connessi al repository principale;

  • un’estrema efficienza del sistema: poiché molti dei comandi sono eseguiti localmente, essi non risentiranno di latenze di rete.

Perché usare Git

La domanda che sorge a questo punto è: dovrei usare Git? Git è migliore di SVN (o di sistemi analoghi)?

Come al solito, la risposta è: dipende…

La scelta del sistema più adatto al nostro progetto è legata alla complessità dello stesso e al numero di collaboratori.

Git è stato pensato per consentire a team con un numero potenzialmente infinito di sviluppatori di lavorare in modo concorrente e diffuso sullo stesso progetto (date un’occhiata a quanti contributors ha il progetto Linux).

Questo scenario è tipico di molti progetti open source, di conseguenza Git è sicuramente indicato nel caso stiate pensando di realizzare un progetto libero e condiviso.

In ambito aziendale, ovviamente le valutazioni da fare sono differenti e l’eventuale migrazione di progetti su VCS distribuiti potrebbe non essere una priorità.

Allo stesso tempo, però, ritengo che in uno scenario professionale che si muove sempre più verso il lavoro remoto e il nomadismo digitale, aziende e professionisti che si occupano di sviluppo software potrebbero trarre grande vantaggio dall’utilizzo di Git.

In conclusione

Git è cresciuto molto negli ultimi anni e continua a farlo, guadagnando consenso soprattutto tra gli sviluppatori; basti pensare alle numerose piattaforme/community nate attorno a questa tecnologia: GitHub, BitBucket o GitLab, per citare le principali.

Se state cominciando a lavorare su un nuovo progetto e non avete mai preso in considerazione Git, forse è il momento di dargli una possibilità.

Se invece avete già esperienza con questo VCS, mi piacerebbe sapere cosa ne pensate.

Se vi va, raccontatemi il vostro punto di vista nei commenti. ;-)

Alla prossima,

David