SVN & GIT: Il controllo di versione del codice sorgente

Se ti occupi di sviluppo software, specialmente in team con altri sviluppatori, ti sarai senz’altro occupato del cosiddetto versioning del codice sorgente e, sicuramente, avrai sentito parlare di SVN (acronimo di SubVersion) e di GIT i due più famosi strumenti open source per il controllo di versione del software. Ma vediamo nel dettaglio a cosa servono SVN e GIT e come utilizzarli al meglio per aumentare enormemente la produttività specialmente durante la fase di sviluppo collaborativa.

1. Le basi del versioning

Durante le fasi di sviluppo di un software è utile tenere traccia delle modifiche apportate al codice, in modo tale da poterci ritornare o ripristinare una versione precedente del file sorgente nel caso fosse necessario. Inoltre, nel caso in cui il software fosse gestito o scritto in team, è necessario mantenere sempre una versione aggiornata del codice, in un repository centrale (nella pratica una cartella), da cui tutto il team attingerà per mantenere aggiornate le relative copie locali dei file sorgenti.

SVN & GIT

In questa guida ti descriverò, nel dettaglio, come installare e utilizzare SVN e GIT, su computer con sistema operativo Windows, mostrandoti come sfruttare il versioning nei progetti in modo immediato e produttivo.

2. SVN

Mettere in piedi un sistema di controllo della versione dei sorgenti non è particolarmente complicato. Il sistema di versioning SVN è basato su architettura Client-Server, per cui, ci saranno dei client che comunicheranno in modo bidirezionale con un server, sul quale è configurato un repository centrale, in modo tale da mantenere aggiornati i sorgenti su tutti i client.

Le operazioni di mantenimento delle versioni aggiornate dei file sorgenti, non richiederanno l’esecuzione di comandi digitati manualmente dallo sviluppatore ma, il tutto verrà eseguito, lato client, selezionando le voci opportune da un menu contestuale.

2.1 Installare VisualSVN

Come primo passo occorre scaricare e installare, sul computer server, l’applicativo open source VisualSVN da questo indirizzo, facendo attenzione a cliccare sulla voce “download”, posizionata nel riquadro evidenziato dalla parte in rosso in figura. L’altro link, quello posizionato nel riquadro di sinistra, ti permette di scaricare il plugin di VisualSVN da integrare nel noto IDE della Microsoft per lo sviluppo in .NET, e cioè Visual Studio.

download VISUALSVN

2.2 Crea nuovo Repository in VisualSVN

Come accennato precedentemente nell’articolo, il repository non è altro che una sotto-cartella della cartella repositories, che fungerà da contenitore di tutte le versioni dei file sorgenti sul server. Questo ti permetterà di passare da una versione all’altra del codice sorgente, consentendoti di ripristinare ed eventualmente consultare vecchie porzioni di codice che, da una modifica all’altra, ne avevi ormai perso la tracciablità.

Quindi, dopo aver scaricato e installato la versione a 32 o a 64 bit di VisualSVN non ti resta che eseguire l’applicativo sul server, o sul pc che funge da server per il repository, e creare un nuovo repository cliccando con il tasto destro del mouse, sulla voce repositories, e successivamente sulla voce create new repository (vedi figura).

crea nuovo repository SVN

Pertanto continua nella fase di creazione del repository cliccando su Next, dando un nome al repository (solitamente il nome è uguale a quello del progetto del software in sviluppo), e proseguire nella creazione lasciando inalterate tutte le altre opzioni. Una volta terminata la fase di creazione del repository, prendi nota, su un foglio di carta, dell’URL evidenziato in figura e clicca sul pulsante Finish.

repository SVN creato con successo

La configurazione del repository, lato server termina qui, pertanto si intuisce che, per ogni progetto software da sviluppare e gestire con SVN devi necessariamente creare un nuovo repository, questa operazione va eseguita una sola volta ed è tutto quello che devi fare sul server.

Da questo momento in poi tutte le operazioni di gestione delle versioni dei file sorgenti avverranno solo dal computer client, cioè dal computer deputato allo sviluppo del progetto software e di conseguenza sul computer dove risiedono fisicamente tutti i file sorgenti.

Pertanto, non sarà più necessario accedere a VisualSVN e comunque al computer server. La gestione lato client di SVN è affidata ad uno strumento, anch’esso gratuito, che prende il nome di TortoiseSVN.

2.3 Installare TortoiseSVN

Come accennato nel paragrafo precedente, La gestione lato client di SVN è affidata completamente a TortoiseSVN, uno strumento ad interfaccia grafica, che ti permetterà di mantenere aggiornati i file sorgenti sul client, accedendo alle funzionalità di SVN da menu contestuale.

Quindi, come primo step, scarica e installa TortoiseSVN da questo indirizzo. Pertanto clicca sul link downloads e procedi con il download di TortoiseSVN sul client.

download tortoisesvn

LEGGI ANCHE: Come creare la tua prima Web Application con Microsoft Visual Studio


2.4 Sincronizza la cartella locale con il repository centrale

A questo punto, essendo più di uno i computer impegnati nello sviluppo (requisito non strettamente necessario, in quanto SVN e GIT potrebbero essere usati per mantenere traccia di tutte le versioni dei sorgenti di un software, anche quando il PC deputato allo sviluppo è solo uno), dobbiamo necessariamente versare nel repository, creato con VisualSVN, tutti i file sorgenti del progetto, scegliendo per l’operazione uno dei client con i file sorgenti più aggiornati.

Pertanto, apri esplora risorse e naviga fino a raggiungere, all’interno del file system, la cartella contenente i file sorgenti. Clicca con il tasto destro del mouse sulla cartella in questione e seleziona la voce TortoiseSVN e successivamente Import.

Digita nel campo “URL of Repository” l’URL annotato sul foglio di carta quando hai creato il repository in VisualSVN, clicca sul pulsante “Ok” e al termine della procedura di importazione tutti i file sorgenti verranno copiati nel repository sul server.

importa file sorgenti in visualsvn

Da questo momento in poi una eventuale perdita dei file sorgenti sul client, non pregiudicherà in alcun modo il recupero dell’intero progetto software. Operazione sempre attuabile in quanto, i file sorgenti, possono essere recuperati dal server.

Adesso, svuota la cartella sul client contenente tutti i file sorgenti (sì hai capito bene devi cancellare tutti i file sorgenti…), e successivamente recuperali dal server, con tasto destro sulla cartella che conteneva i file sorgenti, selezionando la voce SVN Checkout…

checkout file sorgenti del progeto software

I dati da inserire nella finestra mostrata da TortoiseSVN non devono disorientarti più di tanto, ad ogni modo devi indicare il solito URL e specificare la cartella locale dove copiare i file sorgenti recuperati dal server con la procedura di checkout.

Una volta terminata la fase di Checkout, i file sorgenti presenti nella cartella locale sul client, saranno sincronizzati perfettamente con i file contenuti nel repository centrale di VisualSVN.

È da tenere in considerazione che:

a) L’importazione dei file sorgenti nel repository di VisualSVN, ottenuta attraverso la selezione della voce Import da menu contestuale, deve essere effettuata una sola volta da uno dei computer deputati allo sviluppo.

b) L’operazione di checkout, deve essere effettuata solo la prima volta, su un computer deputato allo sviluppo, allo scopo di prelevare i file sorgenti dal repository e iniziare lo sviluppo collaborativo su un nuovo PC. Questa operazione è ripetibile ogniqualvolta, per recuperare i file sorgenti a seguito di crash, di un computer deputato allo sviluppo, per ripristinare la cartella contenente l’intero progetto software.

2.5 Mantenimento delle versioni dei sorgenti ad ogni modifica apportata al progetto

Le operazioni effettuate al paragrafo 2.4, come menzionato precedentemente, vanno effettuate solo una volta e nei casi previsti al paragrafo precedentemente. Successivamente lo sviluppatore dovrà effettuare, un update, prima di mettere mano al progetto, e un commit, dopo aver concluso le operazioni di modifica ai file sorgenti.

Quindi, una volta concluse le operazioni discusse al paragrafo 2.4, lo sviluppatore, dovrà eseguire di volta in volta un update a inizio lavori e un commit a termine lavori sul progetto software.

Le due operazioni, precedentemente menzionate, possono essere richiamate, sempre da tasto destro sulla cartella contenente i file sorgenti, cliccando sulle rispettive voci di menu, e cioè, update e commit.

Un segno di spunta bianco su sfondo verde, a fianco all’icona che raffigura la cartella, indica che i file sul computer locale sono sincronizzati con i file contenuti nel repository, mentre, un segno di spunta bianco su sfondo rosso, indicherà che i file sul computer locale o quelli presenti nel repository non sono sincronizzati. Pertanto, quando è presente il segno di spunta bianco su sfondo rosso è sempre necessaria un’operazione di update o di commit. Nulla vieta di eseguire tutte e due le operazioni, l’importante è eseguire sempre prima l’update e poi successivamente il commit.

indicazione per update o commit

2.6 Risolvere i conflitti manuali ai file sorgenti

Durante le operazioni di commit o update, e possibile che vengano sollevate delle eccezioni. Cioè è possibile che due o più sviluppatori abbiano modificato lo stesso file sorgente nello stesso punto. Si intuisce che, SVN non potrà mai risalire a quale modifica dare la precedenza, cioè quale delle modifiche è quella attendibile.

A tal proposito SVN, tramite TortoiseSVN, mette a disposizione un ausilio, richiamabile con tasto destro sul file sorgente selezionando la voce Diff with previous version, capace di mostrarti la porzione del file sorgente, interessata dal conflitto, contenuta nel repository e la porzione di file sorgente presente sul computer locale.

Pertanto, lo sviluppatore, per risolvere il conflitto dovrà necessariamente modificare a mano il codice locale e salvare il contenuto sul server, cliccando sull’icona raffigurante un floppy disk e presente nell’editor di testo offerto da TortoiseSVN (vedi figura).

risoluzione conflitto svn

2.7 Ripristino dei sorgenti a seguito anomalia

È possibile che, a seguito delle innumerevoli modifiche effettuate ai sorgenti, si verifichi un mancato allineamento tra il repository e i file locali. A tal proposito è possibile avvalersi di altre funzionalità presenti in SVN e richiamabili sempre da menu contestuale di TortoiseSVN. In tal caso, richiamando la funzionalità Resolve, è possibile demandare a SVN la risoluzione di qualsiasi conflitto ai file sorgenti.

Dopo l’esecuzione di Resolve, è auspicabile eseguire sempre un update e successivamente un commit. Nel 99% dei casi, ogni conflitto sollevato da SVN verrà risolto immediatamente.

In questo video tutorial, avrai modo di vedere all’opera tutto quanto esposto in questa guida, circa SVN e TortoiseSVN.

Tutorial TortoiseSVN

3. GIT

Tutto quello che abbiamo trattato in questa guida circa SVN e da considerare anche per quanto riguarda GIT. Infatti anche GIT, come SVN, ha il suo strumento dedicato che indovina un po’ come si chiama? TortoiseGIT, scaricabile a questo indirizzo. Ad ogni modo, per non ripetere tutto quanto esposto con SVN anche per GIT, rischiando di annoiarti nella lettura, puoi seguire questo video tutorial, che espone in pochi minuti, in modo dettagliato, tutti i concetti descritti per SVN anche per GIT.

Come funziona TortiseGIT

LEGGI ANCHE: Power Automate: Automatizzare compiti ripetitivi in Windows 10


Antonio Lamorgese

Amministratore di rete e sviluppatore. Dopo anni di esperienza nel settore, ho ideato un sistema di gestione dati MYSQL in PHP senza scrivere una sola riga di codice. Scopri di più....