2. Di che si parla?
Quando un progetto software diventa
complesso, anche la sua gestione è
complicata
Il controllo revisioni permette di gestire
tutte le modifiche apportate ai documenti
del progetto, archiviando tutte le versioni
del progetto sin dal suo inizio
Ecco cosa si può fare...
Prof.Marcello Missiroli
4. Sviluppatore singolo
Ieri #include<stdio.h>
Int main()
{
int a;
}
File.c
Oggi #include<stdio.h>
Int main()
{
int a;
int b;
}
File.c
Prof.Marcello Missiroli
5. Sviluppatore singolo
(Problemi)
Difficile recuperare le versioni più vecchie
basandosi sulla data.
Difficile stabilire le differenze tra le versioni
di uno stesso file.
Prof.Marcello Missiroli
6. Sviluppatori multipli
(Sviluppo con copia individuale)
Sviluppatore-1 PC-1
Sviluppatore-2 PC-2 server
Sviluppatore-3
PC-3
Prof.Marcello Missiroli
7. Sviluppatori multipli
(Sviluppo con copia individuale)
Problemi
Difficile riunire i vari file modificati
singolarmente.
Difficile recuperare le versioni precedenti
basandosi sull'utente o sulla data.
Prof.Marcello Missiroli
8. Sviluppatori multipli
(Sviluppo con copia unica)
Sviluppatore-1
Sviluppatore-2
server
Sviluppatore-3
Prof.Marcello Missiroli
9. Sviluppatori multipli
(Sviluppo con copia unica)
Problemi
Impatto sul server e traffico di rete.
Tempi di sviluppo lenti.
Difficile recuperare le versioni precedenti,
basanndosi sulla data o sull'utente.
Non si possono vedere le differenze tra la
versione precedente e l'attuale.
Prof.Marcello Missiroli
10. I problemi in sintesi
Non c'è modo di recuperare le versioni
precedenti, basandosi sulla data o l'utente.
Non c'è modo di vedere le differenze tra le
versioni.
Processo di fusione versioni manuale, lento
e di dubbio successo.
Lunghi tempi di sviluppo.
Prof.Marcello Missiroli
11. Come risolverli?
Utilizzando, ad esempio, un sistema di
controllo revisione.
Tra di essi:
Concurrent Version Control (CVS)
Subversion (SVN)
Git
Mercurial
Prof.Marcello Missiroli
12. Sviluppatore singolo
Versione-1 Versione-2 Versione-3
#include<stdio.h>
Ieri Int main()
{
int a;
}
File.c
#include<stdio.h>
Int main()
{
Stamattina int a;
int b;
}
File.c
#include<stdio.h>
Int main()
{
Stasera int a;
int b;
}
File.c
Prof.Marcello Missiroli
13. Sviluppatori multipli
(Sviluppo in copia individuale)
Commit (Consegna)
Primo checkout
(copia) dal
repository del server
Aggiornamentodal
server
Copia di
Sviluppatore-1 lavoro - 1 del
Repository
Server
Sviluppatore-2 Copia di Repository
lavoro - 2 del (deposito)
Repository principale
Sviluppatore-3
Copia di
lavoro – 3 del
Repository
Prof.Marcello Missiroli
14. Gestione file nel Repository
Versione-
Versione- Version-3 Version-4
1 2
User : user-1 User : user-3 User : user-2 User : user-1
Date : 24-10- 2007 Date : 24-10- 2007 Date : 24-10- 2007 Date : 24-10- 2007
Time :11:00:12 Time :1200:12 Time :11:00:12 Time :11:00:12
User : user-2 User : user-2 User : user-3 User : user-2
Date : 24-10- 2007 Date : 24-10- 2007 Date : 24-10- 2007 Date : 24-10- 2007
Time :11:00:12 Time :12:00:12 Time :11:00:12 Time :11:00:12
User : user-1 User : user-1 User : user-1 User : user-3
Date : 24-10- 2007 Date : 24-10- 2007 Date : 24-10- 2007 Date : 24-10- 2007
Time :11:00:12 Time :11:00:12 Time :11:00:12 Time :11:00:12
Prof.Marcello Missiroli
15. Cosa otteniamo?
o dove memorizzare le varie versioni del codice (e tutti i documenti co
Possibilità di “tornare indietro” in
caso di errore
e tracciare le modifiche
Sviluppo parallelo
facilitato
Codice sempre aggiornato
Prof.Marcello Missiroli
16. CVS
CVS è uno dei primi software di gestione
disponibili.
Basato su un software precedente (RCS)
con informazioni addizionali
Presenta però alcune lacune, tra le quali:
Supporta solo file di testo
Numerazione separata per ogni file
Impossibile rinominare i file
Prof.Marcello Missiroli
17. SVN
Subversion, SVN per gli amici, è
un'evoluzione di CVS ed è attualmente il
più diffuso sistema di versioning
E' open source e gratuito (Apache Licence)
E' molto diffuso
E' multipiattaforma
E' integrato in NetBeans
Prof.Marcello Missiroli
18. SVN – L'enciplopedia
From Wikipedia, the free encyclopedia
Subversion (SVN) is a version control system initiated
in 1999 by CollabNet Inc. It is used to maintain
current and historical versions of files such as source
code, web pages, and documentation. Its goal is to
be a mostly-compatible successor to the widely used
Concurrent Versions System (CVS).
Subversion is released under the Apache License,
making it open source.
Prof.Marcello Missiroli
19. SVN – version control
Revision control (also known as version control,
source control or (source) code management
(SCM)) is the management of changes to
documents, programs, and other information
stored as computer files.
Comandi più usati:
Check-in : crea una nuova versione del sorgente.
Check-out : recupera una versione del sorgente.
Diff : mostra le differenze tra versioni del sorgente.
Merge: fonde due versioni di un sorgente.
History : mostra la storia delle versioni di un sorgente.
Prof.Marcello Missiroli
20. SVN – terminologia
Repository – contenitore dei sorgenti
Revision – versione del sorgente
Trunk – storia principale
Branch – storia parallela
Head – ultima versione
Tag – versione etichettata
Prof.Marcello Missiroli
21. SVN – linea di comando
SVN si installa come server autonomo,
indipendente da Java o Eclipse.
Per Ubuntu: apt-get install svn
Per Windows: consigliamo Tortoise SVN
Per Netbeans: integrato (Linux) o plugin
scaricabile (Windows)
SVN puo' essere amministrato ed usato
interamente da linea di comando
Prof.Marcello Missiroli
22. Scenario tipico (client)
Recupero sorgenti
Modifica
Differenza tra sorgenti
Fusione di sorgenti
Aggiunta/eliminazione di file
Prof.Marcello Missiroli
23. Recupero sorgenti
(checkout)
Copia la versione principale (trunk) del
codice sul nostro computer
Si può fare via rete o in locale
checkout
http://svn.intilinux.com/nomerepo
Ora potete lavorare!
Prof.Marcello Missiroli
24. Aggiornamento
A intervalli regolari è opportuno aggiornare
il vostro codice (per le modifiche altrui)
svn update
Per vedere le differenze tra il vostro codice
e quello presente nel trunk
svn diff
Prof.Marcello Missiroli
25. Invio modifiche
(commit)
Trasferite le vostre modifiche al servere in
modo che tutti possano lavorarci
Il sistema fonderà le modifiche man mano
che arrivano
In ogni momento potete recuperare le
versioni precedenti
Prof.Marcello Missiroli
26. Conflitti
In certi casi gli aggiornamento sono in
conflitto.
Si ricorre alla modifica manuale, quindi si
ri-committa
svn resolved nome-del-file
Prof.Marcello Missiroli
27. Aggiungere/Togliere file
Per inserire un nuovo file
svn add nome-del-file
Per togliere un file
svn rm nome-del-file
IMPORTANTE: dopo queste modifiche dare
sempre un commit!
Prof.Marcello Missiroli
28. Il Server
Per i nostri scopi, non è necessario
INSTALLARE un server SVN, ci limiteremo
a usarne uno già esistente.
Su internet esistono molti siti che offrono il
servizio di hosting gratuito per progetti
software
Il più noto è Sourceforge
Prof.Marcello Missiroli
30. Altri sistemi
Microsoft offre due sistemi si versioning,
Visual Source Safe e Team Foundation,
molto diffusi (e spesso criticati) in ambito
Microsoft.
In risposta alla necessità di sviluppo
condiviso e decentrato, si sono sviluppati
due ulteriori sistemi di versioning,
Mercurial e Git. Quest'ultimo, sviluppato
da Linus Torvarlds per lo sviluppo del
kernel Linux, è quello attualmente in
Prof.Marcello Missiroli
maggior espansione
32. Grazie
Con il contributo di
Anil Gupta (www.guptaanil.com)
Questo documento è dotato di licenza CreativeCommon
BY-SA 3.0
http://creativecommons.org/licenses/by-
sa/3.0/deed.it
Prof.Marcello Missiroli