Mauro Mandalari

Lavoro nel campo della comunicazione web da più di 15 anni, sviluppo strategie di comunicazione web efficaci, mi occupo di WebDesign, WebDeveloping, UserExperience, DigitalStrategy.

Una efficiente gestione di un progetto si ripercuote sulla bontà del progetto stesso. Tienilo sempre a mente.
Se sei un web developer avrai a che fare tutti i giorni con qualcosa che è già online (e funzionante) a cui devi aggiungere delle funzionalità. Ti capiterà inoltre di affrontare un nuovo progetto e di dover provare alcune soluzioni migliorando i risultati in più step consecutivi, senza però perdere i risultati già acquisiti. Da questo comune scenario nasce un’esigenza: tenere traccia delle versioni di un progetto.

Molti fino ad oggi, e ancora oggi, assolvono questa esigenza tramite un backup di tutta la cartella www del proprio server locale (non ne hai ancora uno? Ecco quanto è importante questo strumento per un web developer). Il backup poi finisce in una chiavetta USB o in uno spazio cloud. La scarsa efficienza di un sistema del genere è palese.

[Tweet “#WebDevelopment: è fondamentale tener traccia delle versioni di un progetto”]

I vantaggi di un version control system

Elenchiamo brevemente cosa si può fare con un sistema di versioning:

  • puoi tornare alle versioni precedenti di un file con pochi click;
  • puoi tornare alle versioni precedenti di un intero progetto con pochi click;
  • puoi confrontare due versioni di uno stesso file per capire quali modifiche sono state apportate;
  • puoi lavorare in team su uno stesso progetto senza doverti scambiare nessun file e senza il rischio di collisioni o sovrascritture.

Dimentica di dover immagazzinare in una cartella ogni modifica per poterne tenere traccia, o di riempire il codice di commenti inutili solo per non dimenticare alcune modifiche fatte. Ora tutto ciò che dovrai fare è programmare e utilizzare i semplici comandi di questo version control system.

E’ l’ora di GIT

Ci sono molti sistemi per il versioning, tuttavia il più famoso ed il più utilizzato oggigiorno è GIT. E’ gratuito, open source ed è il più utilizzato da grandi aziende di livello mondiale. Come funziona GIT?
Il funzionamento di GIT si basa su tre stati, che sono quelli in cui si può trovare un file:

  • Modified: il file è stato modificato ma non hai tracciato in alcun modo questa modifica;
  • Staged: il file modificato è stato contrassegnato in modo da essere inserito nel database;
  • Committed: il file modificato è stato registrato nel database locale.

Quando tutto è “committato” nel db locale si può fare un push per mettere tutto in una repository online.

Usare GIT per version system control

Passiamo all’installazione.
Qua puoi trovare le differenti versioni a seconda del sistema operativo che utilizzi. Una volta installato, GIT può essere utilizzato tramite linea di comando oppure tramite delle GUI (che ti consiglio) grazie alle quali tutto può essere fatto con pochi click. Io, ad esempio, utilizzo eclipse come editor e con un add-on, faccio tutto a livello di interfaccia grafica senza scrivere alcun comando. Ad ogni modo per entrare nella logica di GIT faremo degli esempi di linee di comando. E’ evidente che sarà ancor più facile utilizzarlo tramite GUI.

Facciamo pratica

Creare o clonare un progetto

cd www
mkdir unprogettocongit
cd unprogettocongit
git init

Entriamo nella nostra www creiamo la cartella del nostro progetto, e una volta dentro inizializziamo tutto. Risultato: verrà creata una cartella “.git”.

Puoi creare un progetto da nuovo o puoi dover importare (“clonare”) un progetto esistente. In questo caso basta fare così:

git clone https://virginiocaparvi@bitbucket.org/virginiocaparvi/unnuovoprogetto.git

Dal mio bitbucket prendo un progetto esistente e lo clono nella mia nuova cartella “unprogettocongit”. Così facendo l’ultima versione del mio progetto verrà scaricata all’interno della cartella, insieme alle cartelle di sistema di GIT. E siamo pronti per lavorare.

Aggiungere e rimuovere file

git add file.txt
git rm file.txt

Con questi due semplici comandi si aggiungono file e si rimuovono.
Prima di vedere come “committare”, ovvero passare al database locale le modifiche fatte, vediamo come verificare lo status di un progetto, per capire quali file sono in stato “modified”.

git status
# On branch master
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#   new file:   file.txt

Avendo aggiunto “file.txt” ma non avendolo ancora posto in stato committed, ci viene segnalato che il file è stato aggiunto ma non è ancora “in versione”. Allora committiamo l’intero progetto per rilasciare una nuova versione dello stesso.

git commit -m "Ho aggiunto un file di testo"

Anche il file “file.txt” è in versione e abbiamo associato al commit una nota per descrivere ciò che è stato modificato rispetto la versione precedente.

Quindi

git status
#On branch master
#nothing to commit, working directory clean

rilanciando il comando status, il sistema ci dice che non ci sono novità.

I comandi principali, molto semplici a dire il vero, saranno ancor più immediati qualora deciderai di utilizzare delle interfacce grafiche.

Lavorare in team con il version control system

Un altro vantaggio del poter utilizzare strumenti di version control system è quello di poter lavorare in team su uno stesso progetto, senza muovere un solo file. Di fatto utilizzando uno strumento come GIT, oltre al server online in cui è contenuto tutto il tracking di tutte le modifiche, ogni database locale di ogni componente del team rappresenta un backup completo del progetto. Dunque ognuno può lavorare su una parte del progetto e sincronizzare la propria versione locale con le ultime modifiche apportate dagli altri componenti del team.

E se due componenti modificano la stessa parte di uno stesso file? Nessun problema, nel momento della sincronizzazione il sistema prevede delle possibili soluzioni di “merge” (fusione) o nel caso di una vera e propria collisione viene segnalata all’utente la presenza di versioni discordanti e fornisce la possibilità di scegliere quali delle due versioni far prevalere.

Insomma, con GIT nulla andrà più perso.

Lavoro nel campo della comunicazione web da più di 15 anni, sviluppo strategie di comunicazione web efficaci, mi occupo di WebDesign, WebDeveloping, UserExperience, DigitalStrategy.