SlideShare a Scribd company logo
1 of 32
Version Control
Introduzione, SVN e integrazione in NetBeans
               gennaio 2011
           aggiornato aprile 2012




                 Prof.Marcello Missiroli
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
Metodologie di sviluppo...
Sviluppatore singolo
Più sviluppatori
Sviluppo con copie multiple
Sviluppo con copia unica




                    Prof.Marcello Missiroli
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
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
Sviluppatori multipli
                 (Sviluppo con copia individuale)




Sviluppatore-1           PC-1




Sviluppatore-2            PC-2                        server




Sviluppatore-3
                          PC-3

                            Prof.Marcello Missiroli
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
Sviluppatori multipli
  (Sviluppo con copia unica)




  Sviluppatore-1




 Sviluppatore-2
                                             server




 Sviluppatore-3


                   Prof.Marcello Missiroli
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
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
Come risolverli?
Utilizzando, ad esempio, un sistema di
 controllo revisione.
Tra di essi:
  Concurrent Version Control (CVS)
  Subversion (SVN)
  Git
  Mercurial


                  Prof.Marcello Missiroli
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
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
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
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
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
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
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
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
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
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
Scenario tipico (client)
Recupero sorgenti
Modifica
Differenza tra sorgenti
Fusione di sorgenti
Aggiunta/eliminazione di file




                 Prof.Marcello Missiroli
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
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
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
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
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
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
Azione
Collegamento repository
Recupero sorgenti
Inserimento sorgenti
Differenza tra sorgenti
Fusione di sorgenti
Storia di un sorgente


                 Prof.Marcello Missiroli
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
SVN - Links
Netbeans:
 http://www.netbeans.org
SVN:
 http://en.wikipedia.org/wiki/Subversion_(software
   )




                  Prof.Marcello Missiroli
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

More Related Content

Similar to Introduzione al Version Control (SVN)

Similar to Introduzione al Version Control (SVN) (20)

Introduzione DevOps con Ansible
Introduzione DevOps con AnsibleIntroduzione DevOps con Ansible
Introduzione DevOps con Ansible
 
Apache Maven - Gestione di progetti Java e build automation
Apache Maven - Gestione di progetti Java e build automationApache Maven - Gestione di progetti Java e build automation
Apache Maven - Gestione di progetti Java e build automation
 
Presentazione Zorzin
Presentazione ZorzinPresentazione Zorzin
Presentazione Zorzin
 
Quick intro sul Source Control su SQL Server
Quick intro sul Source Control su SQL ServerQuick intro sul Source Control su SQL Server
Quick intro sul Source Control su SQL Server
 
Database under source control
Database under source controlDatabase under source control
Database under source control
 
Maven - Aprile 2010
Maven - Aprile 2010Maven - Aprile 2010
Maven - Aprile 2010
 
La Unix Way vista da un DevOps
La Unix Way vista da un DevOpsLa Unix Way vista da un DevOps
La Unix Way vista da un DevOps
 
Lezione 4 - Pratica - Lavorare in azienda: il teamwork
Lezione 4 - Pratica - Lavorare in azienda: il teamworkLezione 4 - Pratica - Lavorare in azienda: il teamwork
Lezione 4 - Pratica - Lavorare in azienda: il teamwork
 
LinuxDay2013 - Web2py: make the web easier
LinuxDay2013 - Web2py: make the web easierLinuxDay2013 - Web2py: make the web easier
LinuxDay2013 - Web2py: make the web easier
 
Infrastructure as Data
Infrastructure as DataInfrastructure as Data
Infrastructure as Data
 
2006 Py01 intro
2006 Py01 intro2006 Py01 intro
2006 Py01 intro
 
Docker & DevOps
Docker  & DevOpsDocker  & DevOps
Docker & DevOps
 
Shell unix
Shell unixShell unix
Shell unix
 
Battaglia Navale
Battaglia NavaleBattaglia Navale
Battaglia Navale
 
Corso linux base
Corso linux baseCorso linux base
Corso linux base
 
Amministrazione base dei sistemi Linux
Amministrazione base dei sistemi LinuxAmministrazione base dei sistemi Linux
Amministrazione base dei sistemi Linux
 
Tanti "piccoli rilasci" con Symfony2
Tanti "piccoli rilasci" con Symfony2Tanti "piccoli rilasci" con Symfony2
Tanti "piccoli rilasci" con Symfony2
 
Linux per la Computer Forensics: i motivi di una scelta
Linux per la Computer Forensics: i motivi di una sceltaLinux per la Computer Forensics: i motivi di una scelta
Linux per la Computer Forensics: i motivi di una scelta
 
Revisionare, tracciare, collaborare. Version control con git
Revisionare, tracciare, collaborare. Version control con gitRevisionare, tracciare, collaborare. Version control con git
Revisionare, tracciare, collaborare. Version control con git
 
GNU Linux Programming introduction
GNU Linux Programming introductionGNU Linux Programming introduction
GNU Linux Programming introduction
 

More from Marcello Missiroli

More from Marcello Missiroli (20)

Algorithmist guide II
Algorithmist guide IIAlgorithmist guide II
Algorithmist guide II
 
Guida del perfetto Algoritmista I
Guida del perfetto Algoritmista IGuida del perfetto Algoritmista I
Guida del perfetto Algoritmista I
 
Workshop: Introduzione ad TDD
Workshop: Introduzione ad TDDWorkshop: Introduzione ad TDD
Workshop: Introduzione ad TDD
 
Dal c a Java (3/3)
Dal c a Java (3/3)Dal c a Java (3/3)
Dal c a Java (3/3)
 
Dal C a Java (2/3)
Dal C a Java (2/3)Dal C a Java (2/3)
Dal C a Java (2/3)
 
Dal C a Java (1/3)
Dal C a Java (1/3)Dal C a Java (1/3)
Dal C a Java (1/3)
 
Variabili
VariabiliVariabili
Variabili
 
Sviluppo degli algoritmi
Sviluppo degli algoritmiSviluppo degli algoritmi
Sviluppo degli algoritmi
 
5 stadi dello sviluppo di un gruppo
5 stadi dello sviluppo di un gruppo5 stadi dello sviluppo di un gruppo
5 stadi dello sviluppo di un gruppo
 
Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!
 
Big O Notation
Big O NotationBig O Notation
Big O Notation
 
Insegnare Agile
Insegnare AgileInsegnare Agile
Insegnare Agile
 
The Sequel to sql
The Sequel to sqlThe Sequel to sql
The Sequel to sql
 
L'avvento del programmatore sociale
L'avvento del programmatore socialeL'avvento del programmatore sociale
L'avvento del programmatore sociale
 
Il ciclo for
Il ciclo forIl ciclo for
Il ciclo for
 
Lo stack: tipo di dato astratto e implementazione in Java
Lo stack: tipo di dato astratto e implementazione in JavaLo stack: tipo di dato astratto e implementazione in Java
Lo stack: tipo di dato astratto e implementazione in Java
 
Programmazione a oggetti tramite la macchina del caffé (pt. 3)
Programmazione a oggetti tramite la macchina del caffé (pt. 3)Programmazione a oggetti tramite la macchina del caffé (pt. 3)
Programmazione a oggetti tramite la macchina del caffé (pt. 3)
 
Ruby in 25 minuti
Ruby in 25 minutiRuby in 25 minuti
Ruby in 25 minuti
 
Moodle: i compiti (homework)
Moodle: i compiti (homework)Moodle: i compiti (homework)
Moodle: i compiti (homework)
 
Uefi: l'eterna lotta tra il bene e il male
Uefi: l'eterna lotta tra il bene e il maleUefi: l'eterna lotta tra il bene e il male
Uefi: l'eterna lotta tra il bene e il male
 

Introduzione al Version Control (SVN)

  • 1. Version Control Introduzione, SVN e integrazione in NetBeans gennaio 2011 aggiornato aprile 2012 Prof.Marcello Missiroli
  • 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
  • 3. Metodologie di sviluppo... Sviluppatore singolo Più sviluppatori Sviluppo con copie multiple Sviluppo con copia unica 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
  • 29. Azione Collegamento repository Recupero sorgenti Inserimento sorgenti Differenza tra sorgenti Fusione di sorgenti Storia di un sorgente 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
  • 31. SVN - Links Netbeans: http://www.netbeans.org SVN: http://en.wikipedia.org/wiki/Subversion_(software ) Prof.Marcello Missiroli
  • 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