Home > General Info > Strumenti di Sviluppo e Versioning dei Progetti: SVN
Mar
01

Subversion (noto anche come svn) è un sistema di controllo versione progettato da CollabNet Inc. utile per gestire il lavoro collaborativo di più persone in contemporanea sullo stesso progetto.

Anche se Subversion è utilizzato prevalentemente da programmatori, le sue caratteristiche lo rendono utile anche per gestire file di tipo diverso come documentazione e persino file binari.

Il più importante concetto di SVN è quello del repository che rappresenta l’archivio di dati centralizzato gestito direttamente da Subversion. Questo non è altro che la copia centralizzata alla quale inviare i file modificati e dalla quale scaricare le versioni più aggiornate dei file.

Per lavorare sui file si utilizza il client SVN per creare una working copy locale. Tale copia è quella su cui vengono effettuate le vere e proprie modifiche, che poi verranno caricate sul server.

La creazione di una nuova copia di lavoro locale è detta checkout. E’ importante sottolineare che tale operazione non blocca nessun file sul server. L’operazione inversa, e cioè il caricamento delle modifiche sul server è detta invece commit ed è proprio durante questa operazione che viene effettuato il controllo di versione da parte di Subversion indicando quali file sono stati modificati e se vi sono eventuali conflitti su questi file.

Ogni aggiornamento inviato al repository genera una nuova revisione incrementando di 1 il numero di versione.

Infine, per aggiornare una copia locale già esistente deve essere eseguita l’operazione di update.

Molti sistemi di controllo dei sorgenti adottano la tecnica Lock-Modify-Unlock: ogni volta che qualcuno vuole modificare un file deve prelevarlo e gli altri programmatori non hanno più alcuna possibilità di accesso al file finchè il primo utente completi le modifiche e riconsegni il file.

Subversion adottare invece la soluzione Copy-Modify-Merge: i file non vengono bloccati dal primo che li apre, ma rimangono disponibili per chiunque e al momento del commit tenta di unire le diverse modifiche, controllando la presenza di eventuali conflitti.

Detto ciò è importante sottolineare che Subversion non è un semplice sistema di archiviazione e distribuzione. Il suo obiettivo principale è quello di gestire i cambiamenti nel tempo, conservando una copia di ciascuna versione e dandoci la possibilità di tracciare chi e quando ha introdotto certe modifiche.

Passiamo adesso ad esaminare le varie Componenti di Subversion:

sul SERVER devono risiedere i moduli che garantiscono l’accesso al repository, nonché gli eseguibili di gestione.

In particolare i componenti significativi sono:

  • svnadmin, il programma che permette la creazione e gestione del repository;
  • mod_dav_svn, il modulo per Apache che rende disponbile il repository tramite protocollo HTTP – richiede ovviamente una installazione funzionante del server httpd;
  • svnserve, il server svn standalone che può – opzionalmente – essere usato al posto del modulo per Apache;
  • svn, il client da linea di comando.

Sul CLIENT risiedono invece i programmi grafici o da linea di comando per accedere alle funzioni di un server Subversion.

Tra i principali client grafici ricordiamo:

  • TortoiseSVN, il client “ufficiale” di Subversion per Windows. È gratuito e nella homepage del progetto SubVersion è elencato per primo tra i client.
  • SmartSVN, un client multipiattaforma basato su Java, che da altrettante soddisfazioni a chi ha avuto modo di provarlo.
  • Oltre ai client citati, esistono anche estensioni per i più noti IDE, quali Eclipse e VisualStudio. In particolare per Visual Studio esiste VisualSVN, prodotto dalla stessa compagnia che produce VisualSVN Server.

    Spero che questo articolo sia riuscito a darvi una breve panoramica sui principi di funzionamento di Subversion.

    Per approfondimenti è possibile visitare il sito di Subversion, la pagina su Wikipedia o il libro guida gratuito.

    , ,

    One Response to “Strumenti di Sviluppo e Versioning dei Progetti: SVN”

    1. guccishoes
      May 29th, 2010 at 14:29 | #1

      Thanks for making such a valuable blog, sincerely Kobos Mathers.

      [url=http://guccidiscountshoes.blogspot.com/2010/05/how-gucci-came-to-be-best-italian-brand.html]Gucci Shoes[/url]

    Add reply