Jump to: navigation, search

Difference between revisions of "Uso SVN"

(Commit)
Line 29: Line 29:
  
  
===='''[[Commit|Commit]]'''====
+
'''[[Commit|Commit]]'''
 
+
'''[[Update|Update]]'''
'''Update''': è
+
l’operazione inversa al commit e consiste nel recupare le modifiche apportateda altri ad un artefatto. In pratica, l’update comporta l’applicazione dellemodifiche alla propria copia locale del deliverable così da poter operare suuna copia aggiornata. Solitamente si ricorre a questa operazione con una certafrequenza, in quanto permette di visionare l’operato degli altri e diverificare la risoluzione di un bug nel caso se ne individuasse uno. E’buona norma effettuare un update prima di iniziare le modifiche ad un qualunquefile presente nel repository.
+
Repository: è il database nel quale vengono memorizzate le modifiche e
+
vengono generate tutte le informazioni di revisione degli artefatti. I databasepossono essere sia centralizzati che distribuiti. Nel primo caso tutti gliutilizzatori fanno capo ad un unico repository che provvederà a memorizzaretutte le informazioni sulle revisioni; nel secondo caso, ogni utilizzatore hail proprio repository che il software di versioning provvederà a fondere con quellidegli altri utilizzatori seguendo delle regole di dipendenza tra le modifiche.Come sempre, la scelta del repository centralizzato o distribuito dipendefortemente dal contesto del suo utilizzo e non determina la qualità delsoftware utilizzato.
+
  
 
'''Checkout''' o '''Working Copy''': è l’operazione con la quale si recupera il materiale presente in
 
'''Checkout''' o '''Working Copy''': è l’operazione con la quale si recupera il materiale presente in

Revision as of 14:40, 8 April 2013

Un sistema di controllo di versione (version control system) è una combinazione di tecnologie e procedure per tenere traccia e controllare i cambiamenti dei file di un progetto, in particolare del codice sorgente, della documentazione e delle pagine web.

Viene usato prevalentemente nello sviluppo di progetti ingegneristici o informatici per gestire la continua evoluzione dei documenti digitali come il codice sorgente del software, i disegni tecnici, la documentazione testuale e altre informazioni importanti su cui può lavorare una squadra di persone.

I programmi di versioning sono software che funzionano secondo un'architettura client/server: il server è un repository centralizzato, in cui chiunque può mettere o prendere le risorse tramite il client. Le modifiche concorrenti (la modifica simultanea di un documento) vengono gestite dal server, che conserva lo storico, il nome degli autori e i loro commenti, effettuando una numerazione progressiva del documento.

Esistono numerosi software che permettono il versioning. SP7 ha scelto di utilizzare Subversion (SVN), un software di versioning open source gratuito.

L’accesso al repository (server) di SP7 è possibile dall’indirizzo http://sp7.irea.cnr.it/svn/, attraverso inserimento di credenziali. Le credenziali consentono ai partecipati di SP7 e ad eventuali utenti esterni di fruire del materiale contenuto nel repository con permessi di lettura e scrittura differenziati. La struttura del repository è qui di seguito rappresentata.

xxx.xxx

Tale struttura iniziali potrà subire ampliamenti e modifiche, per adattarsi alle esigenze che nasceranno nel corso del lavoro di SP7.

Informazioni specifiche per l’utilizzo di Subversion si trovano in molti siti. Si segnala in particolare il libro dedicato Version Control with Subversion La scelta del client indispensabile per l’iterazione con il repository è invece personale, e dipende, tra le altre cose, dal sistema operativo attivo sulla macchina su cui si lavora. Di seguito si riporta un elenco dei più diffusi client di versioning.

  • Kdesvn è un client GUI per Linux.
  • RapidSVN è un client GUI per Microsoft Windows o Linux, scritto in C++ usando il framework wxWidgets.
  • eSvn è un client basato su Qt.
  • JSVN è un client basato su Java Swing.
  • TortoiseSVN è un'estensione della shell di Microsoft Windows.
  • RabbitVCS è un'estensione della shell di Linux.
  • svnX è un client GUI per Mac OS X.
  • Versions è un nuovo client per Mac OS X, dotato di un'interfaccia coerente con il Sistema Operativo Apple.

Si riporta anche un glossario pratico dei principali meccanismi di funzionamento di un programma di versioning


Commit Update

Checkout o Working Copy: è l’operazione con la quale si recupera il materiale presente in un repository. In pratica, equivale a creare una “copia di lavoro” locale di unprogetto sottoposto a controllo di versione. La copia di lavoro locale rientraa tutti gli effetti nel meccanismo di controllo di versione e può essere a suavolta soggetta a “commit” perregistrare nuove versioni. Il materiale locale recuperato da un’operazione dicheckout contiene la struttura di file prodotta fino a quel momento ed imetadati necessari per le attività di controllo. Questa copia di lavoro delrepository viene creta in locale e ciascun utente può vederla nel propriocomputer e utilizzarla come qualsiasi altra cartella di lavoro.

Revisione: è la concretizzazione (o istanza) di un artefatto in un determinato istante nello storico che rappresenta la sua evoluzione. Adesempio, eseguendo un commit suldocumento X a questo verrà assegnata la versione 1. Il documento X potrà essererecuperato da un altro utente mediante update,che potrà successivamente rieseguire un commitsullo stesso documento, generando la versione 2. Così facendo il documento Xavrà “n” versioni, ognuna delle quali recuperabili tramite il sistema diversioning.

Diff: è la rappresentazione delle modifiche effettuate su un artefatto. In pratica è ilrisultato di un confronto fra due versioni; ad esempio in un documento mostraquali righe sono state cambiate ed in che modo.

Tag: è l’identificativo di un insieme di file ad una specifica revisione. I tag sonomolto utili per identificare la parte di progetto che presenta delle modifiche“interessanti”. Ad esempio, nel caso di rilascio di una versione, un tag puòrappresentare l’insieme dei file che hanno subito variazioni.

Branch: è una copia indipendente (o ramo) del progetto originario che segue unadifferente linea di sviluppo. Scopo principale di un branch è quello di evitareche le modifiche applicate alla nuova linea di sviluppo possano interferire conquelle del progetto originario. Solitamente lo stesso progetto originario è unbranch chiamato “master” o “linea principale”. L’utilizzo dei rami di sviluppoè utilizzato per lo più per sviluppi che prevedono delle variazioni funzionalirispetto alla linea principale (ad esempio, per implementazioni sperimentali).

Merge: è l’operazione attraverso la quale si fanno confluire due branch in un unico ramodi sviluppo. Praticamente equivale a riportare in un altro le modificheapplicate ad un altro ramo .

Merge di file: è l’operazione che comporta l’unione delle modifiche apportate allo stesso file da due operatori differenti. Tutti i moderni sistemi dicontrollo versione sono in grado di valutare le differenze tra due file e, inassenza di conflitti, di effettuare l’unione automatica con la creazione di ununico file.

Conflitto: è l’effetto che si produce quando due modifiche riguardano la stessa parte di codice. I conflitti sono molto comuni in un ambito di lavoro digruppo e possono essere risolti solo manualmente da un operatore che è in gradodi sciogliere le ambiguità emerse.

Blocco: è l’operazione che vincola le modifiche ad un file finchè non viene chiusa da chil’ha avviata. Non tutti i sistemi di versioning la utilizzano perché talepratica vincola lo sviluppo parallelo e pertanto risulta scarsamenteutilizzata. In alcuni casi il concetto di blocco è utilizzato solo in contestiparticolari, come quello del commit, per garantirel’atomicità delle azioni.