If you can't read please download the document
Upload
marcello-missiroli
View
2.914
Download
2
Embed Size (px)
Citation preview
Version Control
Introduzione, SVN e integrazione in NetBeans
gennaio 2011
aggiornato aprile 2012
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...
Metodologie di sviluppo...
Sviluppatore singolo
Pi sviluppatoriSviluppo con copie multiple
Sviluppo con copia unica
Sviluppatore singolo
#includeInt main(){ int a; int b;}File.c#includeInt main(){ int a;}File.cIeri
Oggi
Sviluppatore singolo
(Problemi)
Difficile recuperare le versioni pi vecchie basandosi sulla data.
Difficile stabilire le differenze tra le versioni di uno stesso file.
Sviluppatori multipli
(Sviluppo con copia individuale)
Sviluppatore-1Sviluppatore-2
Sviluppatore-3
PC-1PC-2PC-3 server
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.
Sviluppatori multipli
(Sviluppo con copia unica)
Sviluppatore-1Sviluppatore-2
Sviluppatore-3
server
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.
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.
Come risolverli?
Utilizzando, ad esempio, un sistema di controllo revisione.
Tra di essi:Concurrent Version Control (CVS)
Subversion (SVN)
Git
Mercurial
Sviluppatore singolo
#includeInt main(){ int a; int b;}File.c#includeInt main(){ int a;}File.cIeriStamattinaVersione-1Versione-2Versione-3
#includeInt main(){ int a; int b;}File.cStasera
Sviluppatori multipli
(Sviluppo in copia individuale)
Sviluppatore-1Sviluppatore-2
Sviluppatore-3
Copia di lavoro - 1 del RepositoryServerRepository (deposito) principale
Copia di lavoro - 2 del Repository
Commit (Consegna)Primo checkout (copia) dal repository del serverAggiornamentodal server
Copia di lavoro 3 delRepository
Gestione file nel Repository
Versione-1User : user-1Date : 24-10- 2007 Time :11:00:12
User : user-2Date : 24-10- 2007 Time :11:00:12User : user-1Date : 24-10- 2007 Time :11:00:12User : user-3Date : 24-10- 2007 Time :1200:12
User : user-2Date : 24-10- 2007 Time :12:00:12User : user-1Date : 24-10- 2007 Time :11:00:12User : user-2Date : 24-10- 2007 Time :11:00:12
User : user-3Date : 24-10- 2007 Time :11:00:12User : user-1Date : 24-10- 2007 Time :11:00:12User : user-1Date : 24-10- 2007 Time :11:00:12
User : user-2Date : 24-10- 2007 Time :11:00:12User : user-3Date : 24-10- 2007 Time :11:00:12Versione-2Version-3Version-4
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 modificheCodice sempre aggiornatoSviluppo parallelo facilitato
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
SVN
Subversion, SVN per gli amici, un'evoluzione di CVS ed attualmente il pi diffuso sistema di versioningE' open source e gratuito (Apache Licence)
E' molto diffuso
E' multipiattaforma
E' integrato in NetBeans
SVN L'enciplopedia
From Wikipedia, the free encyclopediaSubversion (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.
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.
SVN terminologia
Repository contenitore dei sorgenti
Revision versione del sorgente
Trunk storia principale
Branch storia parallela
Head ultima versione
Tag versione etichettata
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
Scenario tipico (client)
Recupero sorgenti
Modifica
Differenza tra sorgenti
Fusione di sorgenti
Aggiunta/eliminazione di file
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!
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
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
Conflitti
In certi casi gli aggiornamento sono in conflitto.
Si ricorre alla modifica manuale, quindi si ri-committa
svn resolved nome-del-file
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!
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
Azione
Collegamento repository
Recupero sorgenti
Inserimento sorgenti
Differenza tra sorgenti
Fusione di sorgenti
Storia di un sorgente
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 maggior espansione
SVN - Links
Netbeans:http://www.netbeans.org
SVN:http://en.wikipedia.org/wiki/Subversion_(software)
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