Introduzione al Version Control (SVN)

download Introduzione al Version Control (SVN)

If you can't read please download the document

Transcript of Introduzione al Version Control (SVN)

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