Brook Preloader

Creazione di un nuovo ramo di sviluppo con Git, la “branch”

Il processo di sviluppo di un software di grandi dimensioni non segue mai un solo filone di sviluppo ma si preferisce un approccio divide et impera. Immaginiamo di dover creare un sistema di gestione universitaria i cui requisiti saranno ad esempio:

 

  • Gestione degli studenti
  • Gestione del personale interno
  • Gestione degli esami universitari
  • Gestione delle iscrizioni

Come possiamo notare alcuni di questi elementi sono totalmente dissociati da altri se non addirittura indipendenti. Ad esempio la gestione del personale interno sarà totalmente disgiunta dagli altri tre elementi.

Più il sistema che stiamo creando è partizionabile (ovvero è divisibile in moduli indipendenti) e più sarà facile ricomporre il puzzle contenente tutte le funzionalità.

In questo semplice esempio possiamo immaginare di avere due sviluppatori, uno si occuperà dei primi due punti e l’altro dei secondi due. Entrambi i colleghi svilupperanno una base comune (come ad esempio il sistema di autenticazione, il sottosistema di gestione del database, ecc…) per poi spostarsi su due filoni di sviluppo indipendenti che si riuniranno al completamento di ogni singolo modulo.

Questi processi di sviluppo separati si chiamano branch (ramo). L’obiettivo del branch è quello di lasciare intatto il trunk principale ovvero il master poiché lo sviluppo di un branch potrebbe non essere volontariamente completato, ad esempio quando si decide di sperimentare una funzionalità che si basa sull’espansione delle feature del master ma ci si rende conto che la strada intrapresa è troppo complicata. In questo caso il branch non viene più portato avanti e non farà parte del progetto finale, lo si lascia morire.

Il comando di creazione di un nuovo filone di sviluppo è git branch <nome_branch>, ogni nome del branch dovrà essere univoco.

 

 PS C:\Users\gpace\Desktop\test_git> git branch sviluppo_secondario

Il nuovo branch chiamato “sviluppo_secondario” conterrà una copia conforme del branch master, ricordate che per convenzione il branch master conterrà il codice pulito e funzionante.

Una volta creato il branch dobbiamo spostarci sul nuovo ramo di sviluppo, per effettuare l’operazione utilizziamo il comando git checkout <nome_branch>.

 

 PS C:\Users\gpace\Desktop\test_git> git checkout sviluppo_secondario
 ​
 Switched to branch 'sviluppo_secondario'

Una conferma da parte di Git ci avvertirà che tutte le modifiche di cui effettueremo il commit da adesso verranno immagazzinate all’interno del branch chiamato “sviluppo_secondario”.

Facciamo una modifica all’interno di questo branch, creiamo un nuovo file chiamato testTre.txt e popoliamolo con una stringa qualsiasi. Ricordate che nella filosofia del risparmio di risorse, Git non effettuerà il tracking di file che hanno dimensione pari a 0 KB.

Utilizziamo il comando add e commit riversiamo le modifiche all’interno del nuovo branch.

 

 PS C:\Users\gpace\Desktop\test_git> git commit "Aggiunto terzo file"
 PS C:\Users\gpace\Desktop\test_git> git commit -m "Aggiunto terzo file"
 ​
 [sviluppo_secondario 83f8c9b] Aggiunto terzo file       // O.o
  1 file changed, 1 insertion(+)
  create mode 100644 testTre.txt

Come indicato dalla riga su cui è posizionato il commento, il commit è stato effettuato sul branch chiamato sviluppo_secondario e non sul master.

Per rendere permanenti le modifiche all’interno del branch master utilizzeremo il comando git merge facendo attenzione su quale filone di sviluppo ci troviamo. La procedura infatti comporta che il branch master prende le modifiche del branch sviluppo_secondario, per fare ciò ci posizioniamo prima sul master effettuando un git checkout master e poi richiamiamo il git merge <nome_branch>.

 

 PS C:\Users\gpace\Desktop\test_git> git checkout master
 Switched to branch 'master'
 PS C:\Users\gpace\Desktop\test_git> git merge sviluppo_secondario
 Updating d483807..83f8c9b
 Fast-forward
  testTre.txt | 1 +
  1 file changed, 1 insertion(+)
  create mode 100644 testTre.txt

Grazie a questa operazione è stato creato un nuovo checkpoint ovvero un commit automatico con identificativo 83f8c9b, l’aggiornamento dei file (in questo caso la sola reazione) è stata effettuata tramite tecnica Fast-forward le cui caratteristiche vi consiglio di approfondire.

Leave A Comment

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *