Introduzione al Version Control (SVN)

piffy 1,608 views 32 slides Jan 21, 2011
Slide 1
Slide 1 of 32
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32

About This Presentation

Una breve introduzione al version Control, con l'accento su Subversion,


Slide Content

Prof.Marcello Missiroli
Version Control Version Control
Introduzione, SVN e integrazione in NetBeansIntroduzione, SVN e integrazione in NetBeans
gennaio 2011gennaio 2011
aggiornato aprile 2012aggiornato aprile 2012

Prof.Marcello Missiroli
Di che si parla?Di che si parla?
Quando un progetto software diventa Quando un progetto software diventa
complesso, anche la sua gestione è complesso, anche la sua gestione è
complicatacomplicata
Il controllo revisioni permette di gestire Il controllo revisioni permette di gestire
tutte le modifiche apportate ai documenti tutte le modifiche apportate ai documenti
del progetto, archiviando tutte le versioni del progetto, archiviando tutte le versioni
del progetto sin dal suo iniziodel progetto sin dal suo inizio
Ecco cosa si può fare...Ecco cosa si può fare...

Prof.Marcello Missiroli
Metodologie di sviluppo...Metodologie di sviluppo...
Sviluppatore singoloSviluppatore singolo
Più sviluppatoriPiù sviluppatori
Sviluppo con copie multipleSviluppo con copie multiple
Sviluppo con copia unicaSviluppo con copia unica

Prof.Marcello Missiroli
Sviluppatore singoloSviluppatore singolo
#include<stdio.h>
Int main()
{
int a;
int b;
}
File.c
#include<stdio.h>
Int main()
{
int a;
}
File.c
Ieri
Oggi

Prof.Marcello Missiroli
Sviluppatore singoloSviluppatore singolo
(Problemi)(Problemi)
Difficile recuperare le versioni più vecchie Difficile recuperare le versioni più vecchie
basandosi sulla data.basandosi sulla data.
Difficile stabilire le differenze tra le versioni Difficile stabilire le differenze tra le versioni
di uno stesso file.di uno stesso file.

Prof.Marcello Missiroli
Sviluppatori multipliSviluppatori multipli
(Sviluppo con copia individuale)(Sviluppo con copia individuale)
Sviluppatore-1
Sviluppatore-2
Sviluppatore-3
PC-1
PC-2
PC-3

server

Prof.Marcello Missiroli
Sviluppatori multipliSviluppatori multipli
(Sviluppo con copia individuale)(Sviluppo con copia individuale)
ProblemiProblemi
Difficile riunire i vari file modificati Difficile riunire i vari file modificati
singolarmente.singolarmente.
Difficile recuperare le versioni precedenti Difficile recuperare le versioni precedenti
basandosi sull'utente o sulla data.basandosi sull'utente o sulla data.

Prof.Marcello Missiroli
Sviluppatori multipliSviluppatori multipli
(Sviluppo con copia unica)(Sviluppo con copia unica)
Sviluppatore-1
Sviluppatore-2
Sviluppatore-3
server

Prof.Marcello Missiroli
Sviluppatori multipliSviluppatori multipli
(Sviluppo con copia unica)(Sviluppo con copia unica)
ProblemiProblemi
Impatto sul server e traffico di rete.Impatto sul server e traffico di rete.
Tempi di sviluppo lenti.Tempi di sviluppo lenti.
Difficile recuperare le versioni precedenti, Difficile recuperare le versioni precedenti,
basanndosi sulla data o sull'utente.basanndosi sulla data o sull'utente.
Non si possono vedere le differenze tra la Non si possono vedere le differenze tra la
versione precedente e l'attuale.versione precedente e l'attuale.

Prof.Marcello Missiroli
I problemi in sintesiI problemi in sintesi
Non c'è modo di recuperare le versioni Non c'è modo di recuperare le versioni
precedenti, basandosi sulla data o l'utente.precedenti, basandosi sulla data o l'utente.
Non c'è modo di vedere le differenze tra le Non c'è modo di vedere le differenze tra le
versioni.versioni.
Processo di fusione versioni manuale, lento Processo di fusione versioni manuale, lento
e di dubbio successo.e di dubbio successo.
Lunghi tempi di sviluppo.Lunghi tempi di sviluppo.

Prof.Marcello Missiroli
Come risolverli?Come risolverli?
Utilizzando, ad esempio, un sistema di Utilizzando, ad esempio, un sistema di
controllo revisione. controllo revisione.
Tra di essi:Tra di essi:
Concurrent Version Control (CVS)Concurrent Version Control (CVS)
Subversion (SVN)Subversion (SVN)
GitGit
MercurialMercurial

Prof.Marcello Missiroli
Sviluppatore singoloSviluppatore singolo
#include<stdio.h>
Int main()
{
int a;
int b;
}
File.c
#include<stdio.h>
Int main()
{
int a;
}
File.c
Ieri
Stamattina
Versione-1 Versione-2 Versione-3
#include<stdio.h>
Int main()
{
int a;
int b;
}
File.c
Stasera

Prof.Marcello Missiroli
Sviluppatori multipliSviluppatori multipli
(Sviluppo in copia individuale)(Sviluppo in copia individuale)
Sviluppatore-1
Sviluppatore-2
Sviluppatore-3
Copia di
lavoro - 1 del
Repository
Server
Repository
(deposito)
principale
Copia di
lavoro - 2 del
Repository
Commit (Consegna)
Primo checkout
(copia) dal
repository del server
Aggiornamentodal
server
Copia di
lavoro – 3 del
Repository

Prof.Marcello Missiroli
Gestione file nel RepositoryGestione file nel Repository
Versione-
1
User : user-1
Date : 24-10- 2007
Time :11:00:12
User : user-2
Date : 24-10- 2007
Time :11:00:12
User : user-1
Date : 24-10- 2007
Time :11:00:12
User : user-3
Date : 24-10- 2007
Time :1200:12
User : user-2
Date : 24-10- 2007
Time :12:00:12
User : user-1
Date : 24-10- 2007
Time :11:00:12
User : user-2
Date : 24-10- 2007
Time :11:00:12
User : user-3
Date : 24-10- 2007
Time :11:00:12
User : user-1
Date : 24-10- 2007
Time :11:00:12
User : user-1
Date : 24-10- 2007
Time :11:00:12
User : user-2
Date : 24-10- 2007
Time :11:00:12
User : user-3
Date : 24-10- 2007
Time :11:00:12
Versione-
2
Version-3 Version-4

Prof.Marcello Missiroli
Cosa otteniamo?Cosa otteniamo?
Un posto dove memorizzare le varie versioni del codice (e tutti i documenti correlati)
Possibilità di “tornare indietro” in
caso di errore
e tracciare le modifiche
Codice sempre aggiornato
Sviluppo parallelo
facilitato

Prof.Marcello Missiroli
CVSCVS
CVS è uno dei primi software di gestione CVS è uno dei primi software di gestione
disponibili.disponibili.
Basato su un software precedente (RCS) Basato su un software precedente (RCS)
con informazioni addizionalicon informazioni addizionali
Presenta però alcune lacune, tra le quali:Presenta però alcune lacune, tra le quali:
Supporta solo file di testoSupporta solo file di testo
Numerazione separata per ogni fileNumerazione separata per ogni file
Impossibile rinominare i fileImpossibile rinominare i file

Prof.Marcello Missiroli
SVNSVN
Subversion, SVN per gli amici, è Subversion, SVN per gli amici, è
un'evoluzione di CVS ed è attualmente il un'evoluzione di CVS ed è attualmente il
più diffuso sistema di versioningpiù diffuso sistema di versioning
E' open source e gratuito (Apache Licence)E' open source e gratuito (Apache Licence)
E' molto diffusoE' molto diffuso
E' multipiattaformaE' multipiattaforma
E' integrato in NetBeansE' integrato in NetBeans

Prof.Marcello Missiroli
SVN – L'enciplopediaSVN – L'enciplopedia
From Wikipedia, the free encyclopediaFrom Wikipedia, the free encyclopedia
Subversion (SVN) is a version control system initiated Subversion (SVN) is a version control system initiated
in 1999 by CollabNet Inc. It is used to maintain in 1999 by CollabNet Inc. It is used to maintain
current and historical versions of files such as source current and historical versions of files such as source
code, web pages, and documentation. Its goal is to code, web pages, and documentation. Its goal is to
be a mostly-compatible successor to the widely used be a mostly-compatible successor to the widely used
Concurrent Versions System (CVS).Concurrent Versions System (CVS).
Subversion is released under the Apache License, Subversion is released under the Apache License,
making it open source.making it open source.

Prof.Marcello Missiroli
SVN – version controlSVN – version control
Revision control (also known as version control, Revision control (also known as version control,
source control or (source) code management source control or (source) code management
(SCM)) is the management of changes to (SCM)) is the management of changes to
documents, programs, and other information documents, programs, and other information
stored as computer files. stored as computer files.
Comandi più usati:Comandi più usati:
Check-in : crea una nuova versione del sorgente.Check-in : crea una nuova versione del sorgente.
Check-out : recupera una versione del sorgente.Check-out : recupera una versione del sorgente.
Diff : mostra le differenze tra versioni del sorgente.Diff : mostra le differenze tra versioni del sorgente.
Merge: fonde due versioni di un sorgente.Merge: fonde due versioni di un sorgente.
History : mostra la storia delle versioni di un sorgente.History : mostra la storia delle versioni di un sorgente.

Prof.Marcello Missiroli
SVN – terminologiaSVN – terminologia
Repository – contenitore dei sorgentiRepository – contenitore dei sorgenti
Revision – versione del sorgenteRevision – versione del sorgente
Trunk – storia principaleTrunk – storia principale
Branch – storia parallelaBranch – storia parallela
Head – ultima versioneHead – ultima versione
Tag – versione etichettataTag – versione etichettata

Prof.Marcello Missiroli
SVN – linea di comandoSVN – linea di comando
SVN si installa come server autonomo, SVN si installa come server autonomo,
indipendente da Java o Eclipse.indipendente da Java o Eclipse.
Per Ubuntu: apt-get install svnPer Ubuntu: apt-get install svn
Per Windows: consigliamo Tortoise SVNPer Windows: consigliamo Tortoise SVN
Per Netbeans: integrato (Linux) o plugin Per Netbeans: integrato (Linux) o plugin
scaricabile (Windows)scaricabile (Windows)
SVN puo' essere amministrato ed usato SVN puo' essere amministrato ed usato
interamente da linea di comandointeramente da linea di comando

Prof.Marcello Missiroli
Scenario tipico (client)Scenario tipico (client)
Recupero sorgentiRecupero sorgenti
ModificaModifica
Differenza tra sorgentiDifferenza tra sorgenti
Fusione di sorgentiFusione di sorgenti
Aggiunta/eliminazione di fileAggiunta/eliminazione di file

Prof.Marcello Missiroli
Recupero sorgentiRecupero sorgenti
(checkout)(checkout)
Copia la versione principale (trunk) del Copia la versione principale (trunk) del
codice sul nostro computercodice sul nostro computer
Si può fare via rete o in localeSi può fare via rete o in locale
checkout checkout
http://svn.intilinux.com/nomerepo http://svn.intilinux.com/nomerepo
Ora potete lavorare!Ora potete lavorare!

Prof.Marcello Missiroli
AggiornamentoAggiornamento
A intervalli regolari è opportuno aggiornare A intervalli regolari è opportuno aggiornare
il vostro codice (per le modifiche altrui) il vostro codice (per le modifiche altrui)
svn updatesvn update
Per vedere le differenze tra il vostro codice Per vedere le differenze tra il vostro codice
e quello presente nel trunke quello presente nel trunk
svn diffsvn diff

Prof.Marcello Missiroli
Invio modificheInvio modifiche
(commit)(commit)
Trasferite le vostre modifiche al servere in Trasferite le vostre modifiche al servere in
modo che tutti possano lavorarcimodo che tutti possano lavorarci
Il sistema fonderà le modifiche man mano Il sistema fonderà le modifiche man mano
che arrivanoche arrivano
In ogni momento potete recuperare le In ogni momento potete recuperare le
versioni precedentiversioni precedenti

Prof.Marcello Missiroli
ConflittiConflitti
In certi casi gli aggiornamento sono in In certi casi gli aggiornamento sono in
conflitto.conflitto.
Si ricorre alla modifica manuale, quindi si Si ricorre alla modifica manuale, quindi si
ri-committa ri-committa
svn resolved nome-del-filesvn resolved nome-del-file

Prof.Marcello Missiroli
Aggiungere/Togliere fileAggiungere/Togliere file
Per inserire un nuovo file Per inserire un nuovo file
svn add nome-del-filesvn add nome-del-file
Per togliere un filePer togliere un file
svn rm nome-del-filesvn rm nome-del-file
IMPORTANTE: dopo queste modifiche dare IMPORTANTE: dopo queste modifiche dare
sempre un commit!sempre un commit!

Prof.Marcello Missiroli
Il ServerIl Server
Per i nostri scopi, non è necessario Per i nostri scopi, non è necessario
INSTALLARE un server SVN, ci limiteremo INSTALLARE un server SVN, ci limiteremo
a usarne uno già esistente.a usarne uno già esistente.
Su internet esistono molti siti che offrono il Su internet esistono molti siti che offrono il
servizio di hosting gratuito per progetti servizio di hosting gratuito per progetti
softwaresoftware
Il più noto è SourceforgeIl più noto è Sourceforge

Prof.Marcello Missiroli
AzioneAzione
Collegamento repositoryCollegamento repository
Recupero sorgentiRecupero sorgenti
Inserimento sorgentiInserimento sorgenti
Differenza tra sorgentiDifferenza tra sorgenti
Fusione di sorgentiFusione di sorgenti
Storia di un sorgenteStoria di un sorgente

Prof.Marcello Missiroli
Altri sistemiAltri sistemi
Microsoft offre due sistemi si versioning, Microsoft offre due sistemi si versioning,
Visual Source Safe e Team Foundation, Visual Source Safe e Team Foundation,
molto diffusi (e spesso criticati) in ambito molto diffusi (e spesso criticati) in ambito
Microsoft.Microsoft.
In risposta alla necessità di sviluppo In risposta alla necessità di sviluppo
condiviso e decentrato, si sono sviluppati condiviso e decentrato, si sono sviluppati
due ulteriori sistemi di versioning, due ulteriori sistemi di versioning,
Mercurial e Git. Quest'ultimo, sviluppato Mercurial e Git. Quest'ultimo, sviluppato
da Linus Torvarlds per lo sviluppo del da Linus Torvarlds per lo sviluppo del
kernel Linux, è quello attualmente in kernel Linux, è quello attualmente in
maggior espansionemaggior espansione

Prof.Marcello Missiroli
SVN - LinksSVN - Links
Netbeans:Netbeans:
http://www.netbeans.orghttp://www.netbeans.org
SVN:SVN:
http://en.wikipedia.org/wiki/Subversion_(softwarehttp://en.wikipedia.org/wiki/Subversion_(software
))

Prof.Marcello Missiroli
GrazieGrazie
Con il contributo di Con il contributo di
Anil GuptaAnil Gupta (www.guptaanil.com)
Questo documento è dotato di licenza CreativeCommon Questo documento è dotato di licenza CreativeCommon
BY-SA 3.0 BY-SA 3.0
http://creativecommons.org/licenses/by-http://creativecommons.org/licenses/by-
sa/3.0/deed.itsa/3.0/deed.it