Version ControlIntroduzione, SVN e integrazione in NetBeans               gennaio 2011           aggiornato aprile 2012   ...
Di che si parla?Quando un progetto software diventa complesso, anche la sua gestione è complicataIl controllo revisioni pe...
Metodologie di sviluppo...Sviluppatore singoloPiù sviluppatoriSviluppo con copie multipleSviluppo con copia unica         ...
Sviluppatore singolo        Ieri                     #include<stdio.h>                                 Int main()         ...
Sviluppatore singolo              (Problemi)Difficile recuperare le versioni più vecchiebasandosi sulla data.Difficile sta...
Sviluppatori multipli                 (Sviluppo con copia individuale)Sviluppatore-1           PC-1Sviluppatore-2         ...
Sviluppatori multipli          (Sviluppo con copia individuale)                     ProblemiDifficile riunire i vari file ...
Sviluppatori multipli  (Sviluppo con copia unica)  Sviluppatore-1 Sviluppatore-2                                          ...
Sviluppatori multipli            (Sviluppo con copia unica)                    ProblemiImpatto sul server e traffico di re...
I problemi in sintesiNon cè modo di recuperare le versioniprecedenti, basandosi sulla data o lutente.Non cè modo di vedere...
Come risolverli?Utilizzando, ad esempio, un sistema di controllo revisione.Tra di essi:  Concurrent Version Control (CVS) ...
Sviluppatore singolo             Versione-1                  Versione-2         Versione-3             #include<stdio.h>  ...
Sviluppatori multipli                  (Sviluppo in copia individuale)                                                    ...
Gestione file nel Repository                     Versione- Versione-                                        Version-3     ...
Cosa otteniamo?o dove memorizzare le varie versioni del codice (e tutti i documenti co                    Possibilità di “...
CVSCVS è uno dei primi software di gestione disponibili.Basato su un software precedente (RCS) con informazioni addizional...
SVNSubversion, SVN per gli amici, è unevoluzione di CVS ed è attualmente il più diffuso sistema di versioning  E open sour...
SVN – LenciplopediaFrom Wikipedia, the free encyclopedia  Subversion (SVN) is a version control system initiated    in 199...
SVN – version controlRevision control (also known as version control,  source control or (source) code management  (SCM)) ...
SVN – terminologiaRepository – contenitore dei sorgentiRevision – versione del sorgenteTrunk – storia principaleBranch – s...
SVN – linea di comandoSVN si installa come server autonomo, indipendente da Java o Eclipse.  Per Ubuntu: apt-get install s...
Scenario tipico (client)Recupero sorgentiModificaDifferenza tra sorgentiFusione di sorgentiAggiunta/eliminazione di file  ...
Recupero sorgenti                (checkout)Copia la versione principale (trunk) del codice sul nostro computerSi può fare ...
AggiornamentoA intervalli regolari è opportuno aggiornare il vostro codice (per le modifiche altrui)svn updatePer vedere l...
Invio modifiche              (commit)Trasferite le vostre modifiche al servere in  modo che tutti possano lavorarciIl sist...
ConflittiIn certi casi gli aggiornamento sono in  conflitto.Si ricorre alla modifica manuale, quindi si ri-committasvn res...
Aggiungere/Togliere filePer inserire un nuovo filesvn add nome-del-filePer togliere un filesvn rm nome-del-fileIMPORTANTE:...
Il ServerPer i nostri scopi, non è necessario INSTALLARE un server SVN, ci limiteremo a usarne uno già esistente.Su intern...
AzioneCollegamento repositoryRecupero sorgentiInserimento sorgentiDifferenza tra sorgentiFusione di sorgentiStoria di un s...
Altri sistemiMicrosoft offre due sistemi si versioning, Visual Source Safe e Team Foundation, molto diffusi (e spesso crit...
SVN - LinksNetbeans: http://www.netbeans.orgSVN: http://en.wikipedia.org/wiki/Subversion_(software   )                  Pr...
GrazieCon il contributo diAnil Gupta (www.guptaanil.com) Questo documento è dotato di licenza CreativeCommon BY-SA 3.0http...
Upcoming SlideShare
Loading in …5
×

Introduzione al Version Control (SVN)

2,924 views

Published on

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

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,924
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
41
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Introduzione al Version Control (SVN)

  1. 1. Version ControlIntroduzione, SVN e integrazione in NetBeans gennaio 2011 aggiornato aprile 2012 Prof.Marcello Missiroli
  2. 2. Di che si parla?Quando un progetto software diventa complesso, anche la sua gestione è complicataIl controllo revisioni permette di gestire tutte le modifiche apportate ai documenti del progetto, archiviando tutte le versioni del progetto sin dal suo inizioEcco cosa si può fare... Prof.Marcello Missiroli
  3. 3. Metodologie di sviluppo...Sviluppatore singoloPiù sviluppatoriSviluppo con copie multipleSviluppo con copia unica Prof.Marcello Missiroli
  4. 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. 5. Sviluppatore singolo (Problemi)Difficile recuperare le versioni più vecchiebasandosi sulla data.Difficile stabilire le differenze tra le versionidi uno stesso file. Prof.Marcello Missiroli
  6. 6. Sviluppatori multipli (Sviluppo con copia individuale)Sviluppatore-1 PC-1Sviluppatore-2 PC-2 serverSviluppatore-3 PC-3 Prof.Marcello Missiroli
  7. 7. Sviluppatori multipli (Sviluppo con copia individuale) ProblemiDifficile riunire i vari file modificatisingolarmente.Difficile recuperare le versioni precedentibasandosi sullutente o sulla data. Prof.Marcello Missiroli
  8. 8. Sviluppatori multipli (Sviluppo con copia unica) Sviluppatore-1 Sviluppatore-2 server Sviluppatore-3 Prof.Marcello Missiroli
  9. 9. Sviluppatori multipli (Sviluppo con copia unica) ProblemiImpatto sul server e traffico di rete.Tempi di sviluppo lenti.Difficile recuperare le versioni precedenti,basanndosi sulla data o sullutente.Non si possono vedere le differenze tra laversione precedente e lattuale. Prof.Marcello Missiroli
  10. 10. I problemi in sintesiNon cè modo di recuperare le versioniprecedenti, basandosi sulla data o lutente.Non cè modo di vedere le differenze tra leversioni.Processo di fusione versioni manuale, lentoe di dubbio successo.Lunghi tempi di sviluppo. Prof.Marcello Missiroli
  11. 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. 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. 13. Sviluppatori multipli (Sviluppo in copia individuale) Commit (Consegna) Primo checkout (copia) dal repository del server Aggiornamentodal server Copia diSviluppatore-1 lavoro - 1 del Repository ServerSviluppatore-2 Copia di Repository lavoro - 2 del (deposito) Repository principaleSviluppatore-3 Copia di lavoro – 3 del Repository Prof.Marcello Missiroli
  14. 14. Gestione file nel Repository Versione- Versione- Version-3 Version-4 1 2User : user-1 User : user-3 User : user-2 User : user-1Date : 24-10- 2007 Date : 24-10- 2007 Date : 24-10- 2007 Date : 24-10- 2007Time :11:00:12 Time :1200:12 Time :11:00:12 Time :11:00:12User : user-2 User : user-2 User : user-3 User : user-2Date : 24-10- 2007 Date : 24-10- 2007 Date : 24-10- 2007 Date : 24-10- 2007Time :11:00:12 Time :12:00:12 Time :11:00:12 Time :11:00:12User : user-1 User : user-1 User : user-1 User : user-3Date : 24-10- 2007 Date : 24-10- 2007 Date : 24-10- 2007 Date : 24-10- 2007Time :11:00:12 Time :11:00:12 Time :11:00:12 Time :11:00:12 Prof.Marcello Missiroli
  15. 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. 16. CVSCVS è uno dei primi software di gestione disponibili.Basato su un software precedente (RCS) con informazioni addizionaliPresenta però alcune lacune, tra le quali: Supporta solo file di testo Numerazione separata per ogni file Impossibile rinominare i file Prof.Marcello Missiroli
  17. 17. SVNSubversion, SVN per gli amici, è unevoluzione 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. 18. SVN – LenciplopediaFrom 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. 19. SVN – version controlRevision 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. 20. SVN – terminologiaRepository – contenitore dei sorgentiRevision – versione del sorgenteTrunk – storia principaleBranch – storia parallelaHead – ultima versioneTag – versione etichettata Prof.Marcello Missiroli
  21. 21. SVN – linea di comandoSVN 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. 22. Scenario tipico (client)Recupero sorgentiModificaDifferenza tra sorgentiFusione di sorgentiAggiunta/eliminazione di file Prof.Marcello Missiroli
  23. 23. Recupero sorgenti (checkout)Copia la versione principale (trunk) del codice sul nostro computerSi può fare via rete o in localecheckout http://svn.intilinux.com/nomerepoOra potete lavorare! Prof.Marcello Missiroli
  24. 24. AggiornamentoA intervalli regolari è opportuno aggiornare il vostro codice (per le modifiche altrui)svn updatePer vedere le differenze tra il vostro codice e quello presente nel trunksvn diff Prof.Marcello Missiroli
  25. 25. Invio modifiche (commit)Trasferite le vostre modifiche al servere in modo che tutti possano lavorarciIl sistema fonderà le modifiche man mano che arrivanoIn ogni momento potete recuperare le versioni precedenti Prof.Marcello Missiroli
  26. 26. ConflittiIn certi casi gli aggiornamento sono in conflitto.Si ricorre alla modifica manuale, quindi si ri-committasvn resolved nome-del-file Prof.Marcello Missiroli
  27. 27. Aggiungere/Togliere filePer inserire un nuovo filesvn add nome-del-filePer togliere un filesvn rm nome-del-fileIMPORTANTE: dopo queste modifiche dare sempre un commit! Prof.Marcello Missiroli
  28. 28. Il ServerPer 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 softwareIl più noto è Sourceforge Prof.Marcello Missiroli
  29. 29. AzioneCollegamento repositoryRecupero sorgentiInserimento sorgentiDifferenza tra sorgentiFusione di sorgentiStoria di un sorgente Prof.Marcello Missiroli
  30. 30. Altri sistemiMicrosoft 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. Questultimo, sviluppato da Linus Torvarlds per lo sviluppo del kernel Linux, è quello attualmente in Prof.Marcello Missiroli maggior espansione
  31. 31. SVN - LinksNetbeans: http://www.netbeans.orgSVN: http://en.wikipedia.org/wiki/Subversion_(software ) Prof.Marcello Missiroli
  32. 32. GrazieCon il contributo diAnil Gupta (www.guptaanil.com) Questo documento è dotato di licenza CreativeCommon BY-SA 3.0http://creativecommons.org/licenses/by- sa/3.0/deed.it Prof.Marcello Missiroli

×