SlideShare a Scribd company logo
Corso di
Version, Configuration &
Document Management
Salvatore Cordiano
@parallelit
Master in Sviluppo di Applicazioni Web, Mobile e Social Media
Agenda
• Version management
• Configuration management
• Document management
Versioning
Che cos’è il versioning?
Il termine è l’abbreviazione del controllo di versione o
version control.
Version control
Un programma che tiene traccia delle modifiche ai
file ed alle cartelle.
!
!
Il controllo di versione è anche noto come:
• Source Control Manager (SCM)
• Revision Control System (RCS)
• Version Control System (VCS)
Perché usare il controllo di
versione?
Perché questo fa schifo!
Alcuni esempio di software
per il controllo di versione
• CVS
• SVN!
• Git!
• Mercurial
• Bazaar Darcs
• Perforce
• Fossil
• BitKeeper
!
Nel corso della lezione faremo principalmente riferimento ad SVN http://subversion.apache.org/
Quali sono i vantaggi dell’uso di un
sistema di controllo delle versioni?
• Fornisce supporto alla memorizzazione dei codici
sorgenti.
• Fornisce uno storico di ciò che è stato fatto.
• Può fornire un modo per lavorare in parallelo su
diversi aspetti dell’applicazione in sviluppo.
• Può fornire un modo per lavorare in parallelo senza
intralciarsi a vicenda.
Il numero di versione (1)
• Le modifiche su file e cartelle
sono identificate incrementando
un numero o un codice associato,
denominato “numero di
versione”, “etichetta di versione”,
o semplicemente “versione”.
• Ad ogni versione è associato
un’etichetta che identifica il nome
della persona che ha apportato la
modifica.
Il numero di versione (2)
• Head: identifica l’ultima revisione del repository.
• Base: identifica l’ultimo aggiornatamento della
copia di lavoro.
• Committed: identifica l’ultima revisione in cui un
elemento ha subito modifiche.
Che tipo di file?
• Testo
• Grafica
• Binario
• Qualunque
Glossario (1)
• Repository: Il repository è dove i file sono memorizzati,
spesso su un server.
• Commit: un commit si effettua quando si copiano le
modifiche fatte su file locali nel repository (il software di
controllo versione controlla quali file sono stati modificati
dall'ultima sincronizzazione).
• Change: una modifica (change) rappresenta una specifica
modifica ad un documento sottoposto al controllo di
versione. La granularità delle modifiche considerate come
cambiamenti varia tra i sistemi di controllo versione.
• Change list: su molti sistemi di controllo versione con
commit di modifiche multiple atomiche, una changelist
identifica un insieme di changes fatti in un singolo commit.
Glossario (2)
• Check-out: un check-out effettua una copia di
lavoro dal repository (può essere visto come
l’operazione inversa dell’importazione).
• Update: un update copia le modifiche fatte sul
repository nella propria directory di lavoro (può
essere visto come l’operazione inversa del commit).
• Merge: un merge o integrazione unisce modifiche
concorrenti in una revisione unificata.
• Revision (o versione): è una versione in una catena
di modifiche.
• Revert: annulla ogni modifica locale a file e cartelle.
Glossario (3)
• Conflict: un conflitto si presenta quando diversi
soggetti fanno modifiche in contemporanea alla
stessa porzione di un documento.
• Resolve conflict: l’intervento di un utente per la
risoluzione di un conflitto tra modifiche differenti di
uno stesso documento.
Concetti di base
Repository!
• Un posto dove memorizzare i sorgenti.
• Tipicamente si trova su una macchina remota affidabile
e sicura.
• Tutti gli sviluppatori condividono lo stesso repository.
!
Working folder!
• Cartella di lavoro.
• Ogni sviluppatore ne ha una collocata sulla propria
macchina.
• Contiene una copia del codice sorgente relativo al
progetto.
Repository = Time machine
• Il Repository è un archivio di ogni versione di ogni
file di codice sorgente.
• Contiene la storia del progetto.
• Rende possibile navigare indietro nel tempo e
recuperare versioni vecchie dei file
• Capire perché sono state fatte certe scelte e chi le
ha fatte.
• Capire perché sono stati introdotti nuovi bug e chi li
ha introdotti.
Quando viene rilevato un
conflitto?
• Sui sorgenti quando: due sviluppatori modificano la
stessa linea di codice; il primo fa un commit, il
secondo un update e rileva il conflitto.
• Sulla struttura dei file/direttori quando: due
sviluppatori rinominano/spostano lo stesso file/
direttorio.
SVN WorkFlow
Trunk, branch, tag (1)
Trunk, branch, tag (2)
Un modo ragionevole per organizzare un repository è
fare in modo che contenga:
• Un tronco principale di sviluppo: Trunk
• Un luogo dove memorizzare le linee di sviluppo
alternative: Branch, Branches
• Un luogo dove memorizzare le release stabili: Tag,
Tags
Branch (1)
• Relativamente ad un progetto, un branch è una
linea di sviluppo indipendente dalle altre.
• Viene inizialmente generato come copia completa
e condivide parte della storia.
Branch (2)
• I Branch, ad esempio, consentono di iniziare lo
sviluppo di una nuova release quando la
precedente è ancora in fase di consolidamento.
• Una volta terminato il consolidamento è possibile
effettuare il merge fra il branch ed il trunk.
• Il bug risolti in fase di consolidamento saranno fusi
insieme alle modifiche apportate per incorporare le
funzionalità della nuova release.
Tag
• Tag = Release
• Viene memorizzato separatamente in modo da
avere a portata di mano tutti i sorgenti relativi ad
una certa release.
• In questo modo non è necessario andare a
ripescare dal main trunk i sorgenti andando indietro
con le versioni dei file.
Configuration
management
A cosa serve il CM?
• Ma il sistema funzionava ieri, cosa è accaduto?
• Non riesco a riprodurre il problema (bug) sulla mia
copia di sistema
Tre problemi “classici” di CM
• Doppia manutenzione
Impedire l’esistenza di copie multiple dello stesso
file da aggiornare in modo indipendente
• Dati condivisi
Permettere a due o più sviluppatori di accedere
agli stessi file/dati
• Aggiornamento simultaneo
Impedire il “clobbering” quando due o più
sviluppatori modificano lo stesso file
Configuration management
(1)
• Identifica e tiene traccia di tutti gli elementi rilevanti
della configurazione del sistema, affinché tutti gli
errori possibili vengano individuati e vengano
trovate le possibili soluzioni.
Configuration management
(2)
CM is the practice of handling changes
systematically so that a system maintains its integrity
over time.
Configuration management
• La configurazione è definita come l’insieme delle
caratteristiche funzionali e fisiche di un prodotto
stabilite nei documenti tecnici e realizzate nel
prodotto stesso.
• Il configuration management si occupa di gestire e
controllare la variazione di tali caratteristiche.
• Non costituisce un’attività opzionale.
Configuration item
Il configuration item (CI) è un unità di configurazione
che può essere gestita individualmente.
Ad esempio in riferimento ad un’infrastruttura IT un CI
può essere un server, un software, un router, etc.
Configuration management
database
• E’ un elemento chiave del processo di CM
• Viene utilizzato per tracciare tutte le CI e le relazioni
tra di loro (Ad esempio: sul server X è disponibile il
sistema operativo Y, etc.).
Principali processi del
configuration management
• Pianificazione: include le strategie, policy, obiettivi, ruoli e
responsabilità nel processo di Configuration Management. Altro
elemento da tenere presente nella pianficazione è la struttura del
CMDB.
• Identificazione: include la selezione, identificazione e “labeling”
delle CI.
• Controllo: include il processo di assicurare che solo le CI
autorizzate siano presenti nel CMDB. Tutto le CI possono essere
modificate solo attraverso il processo di change management.
• Status Accounting: la gestione del ciclo di vita delle CI. Si
occupa del tracciamento e del reporting delle informazioni sullo
stato dei CI.
• Verifica: include gli audit effettuati con lo scopo di verificare
l’accuratezza del CMDB.
I tool di CM (1)
• Sono tool di IT automation che fanno un sacco di
lavoro.
• I tool di Configuration Management leggono le
configurazioni a partire da un file sorgente ed
applicano le stesse su uno o più server, in modo
automatico, prevedibile e idempotente.
!
Idempotente: posso applicare la stessa operazione più volte senza avere effetti
“collaterali”.
I tool di CM (2)
inizio configurazione
1. assicurati che apache2 sia installato
2. assicurati che php5 sia installato
3. assicurati che mysql sia installato
fine configurazione
Alcuni esempi di tool di CM
• Puppet
• Chef
• CFEngine
• Bcfg2
• BMCBladelogic
Document
management
Cosa intendiamo per
document management?
• Generalmente si fa riferimento al sistema di
gestione di documenti o document management
system (DMS).
• E’ una categoria di sistemi software che serve a
organizzare e facilitare la creazione collaborativa di
documenti e di altri contenuti.
• Tecnicamente il DMS è un’applicazione che si
occupa di eseguire operazioni massive sui
documenti, catalogandoli ed indicizzandoli
secondo determinati algoritmi.
Document management
system
Dietro un
termine
apparentemente
semplice si cela
un ambito
complesso:
!
!
!
• metadata
• integration
• capture
• validation
• indexing
• storage
• retrieval
• distribution
• security
• signature
• workflow
• collaboration
• versioning
• publishing
• reproduction
Corso di Versioning, Configuration & Document Management
Corso di Versioning, Configuration & Document Management
Alcuni esempi di DMS
• Alfresco
• LogicalDOC
Bibliografia
• Wikipedia
• http://svnbook.red-bean.com/
• http://subversion.apache.org/
• http://www.di.unipi.it/~cardillo/labso/files/docs/svn-
book.pdf

More Related Content

What's hot (20)

PDF
가상화 환경에서 배포 방법과 컨테이너 환경에서 CICD 차이점
Opennaru, inc.
 
PDF
MuleSoft Anypoint Platform and Three Tier Architecture
Harish Kumar
 
PDF
Open Services for Lifecycle Collaboration (OSLC) - Extending REST APIs to Con...
Axel Reichwein
 
PPTX
Automating SAP HANA System Replication
Dirk Oppenkowski
 
PPTX
CI/CD with Rancher CLI + Jenkins
Go Chiba
 
PPTX
MuleSoft Architecture Presentation
Rupesh Sinha
 
PDF
SharePoint as an Intranet Portal for Business
RashminPopat2
 
PPT
WebSphere Portal Technical Overview
Vincent Perrin
 
PDF
Introducing Microsoft Forms - A New App for your Business Process Toolbox
Haniel Croitoru
 
PPTX
Tìm hiểu và triển khai ứng dụng Web với Kubernetes
GMO-Z.com Vietnam Lab Center
 
PDF
MuleSoft Event Driven Architecture (EDA Patterns in MuleSoft) - VirtualMuleys63
Angel Alberici
 
PDF
Virtual Meetup - MuleSoft Catalyst and Accelerator for Banking
Jimmy Attia
 
PDF
API Governance and GitOps in Hybrid Integration Platform (MuleSoft)
Sumanth Donthi
 
PPTX
Introduction to Microsoft Syntex
Drew Madelung
 
PPTX
Implementing CloudHub 2.0 CI/CD Pipeline with Bitbucket Integration
sandeepmenon62
 
PDF
Application Architecture: The Next Wave | MuleSoft
MuleSoft
 
PPTX
Azure AD Presentation - @ BITPro - Ajay
Anoop Nair
 
PPTX
Building an Analytic Extension to MySQL with ClickHouse and Open Source
Altinity Ltd
 
PPTX
Exchange Server 2013 Architecture Deep Dive, Part 1
Microsoft TechNet - Belgium and Luxembourg
 
PDF
Thiet lap nhieu domain chay song song trien khai he thong dfs
laonap166
 
가상화 환경에서 배포 방법과 컨테이너 환경에서 CICD 차이점
Opennaru, inc.
 
MuleSoft Anypoint Platform and Three Tier Architecture
Harish Kumar
 
Open Services for Lifecycle Collaboration (OSLC) - Extending REST APIs to Con...
Axel Reichwein
 
Automating SAP HANA System Replication
Dirk Oppenkowski
 
CI/CD with Rancher CLI + Jenkins
Go Chiba
 
MuleSoft Architecture Presentation
Rupesh Sinha
 
SharePoint as an Intranet Portal for Business
RashminPopat2
 
WebSphere Portal Technical Overview
Vincent Perrin
 
Introducing Microsoft Forms - A New App for your Business Process Toolbox
Haniel Croitoru
 
Tìm hiểu và triển khai ứng dụng Web với Kubernetes
GMO-Z.com Vietnam Lab Center
 
MuleSoft Event Driven Architecture (EDA Patterns in MuleSoft) - VirtualMuleys63
Angel Alberici
 
Virtual Meetup - MuleSoft Catalyst and Accelerator for Banking
Jimmy Attia
 
API Governance and GitOps in Hybrid Integration Platform (MuleSoft)
Sumanth Donthi
 
Introduction to Microsoft Syntex
Drew Madelung
 
Implementing CloudHub 2.0 CI/CD Pipeline with Bitbucket Integration
sandeepmenon62
 
Application Architecture: The Next Wave | MuleSoft
MuleSoft
 
Azure AD Presentation - @ BITPro - Ajay
Anoop Nair
 
Building an Analytic Extension to MySQL with ClickHouse and Open Source
Altinity Ltd
 
Exchange Server 2013 Architecture Deep Dive, Part 1
Microsoft TechNet - Belgium and Luxembourg
 
Thiet lap nhieu domain chay song song trien khai he thong dfs
laonap166
 

Viewers also liked (13)

PPTX
Versioning aziendale con SVN
Andrea Colleoni
 
PPTX
10 ottime ragioni per usare svn in azienda
Andrea Colleoni
 
ODP
Introduzione al Version Control (SVN)
Marcello Missiroli
 
PPSX
Regole e princìpi e tecniche di programmazione
Andrea Colleoni
 
PDF
Corso HTML5. Una pagina base
Terrelibere Org Edizioni
 
PDF
Prevedere il futuro con twitter?
Salvatore Cordiano
 
PPT
Algoritmi e strumenti per la Terapia Anticoagulante Orale
Salvatore Cordiano
 
PPTX
Introduzione ai Social Media
Salvatore Cordiano
 
PDF
Corso di Concetti base di programmazione
Salvatore Cordiano
 
PPT
Landing Page Testing To Increase Conversions
Affiliate Summit
 
PDF
Corso di HTML5 e CSS
Salvatore Cordiano
 
PPTX
Landingpage - Concetti base per la realizzazione di landingpage efficaci
Massimo Petrucci
 
PDF
Snapchat - Funzionalità e utilizzo per le Aziende Case Study & Best Practice
Giuliano Ambrosio
 
Versioning aziendale con SVN
Andrea Colleoni
 
10 ottime ragioni per usare svn in azienda
Andrea Colleoni
 
Introduzione al Version Control (SVN)
Marcello Missiroli
 
Regole e princìpi e tecniche di programmazione
Andrea Colleoni
 
Corso HTML5. Una pagina base
Terrelibere Org Edizioni
 
Prevedere il futuro con twitter?
Salvatore Cordiano
 
Algoritmi e strumenti per la Terapia Anticoagulante Orale
Salvatore Cordiano
 
Introduzione ai Social Media
Salvatore Cordiano
 
Corso di Concetti base di programmazione
Salvatore Cordiano
 
Landing Page Testing To Increase Conversions
Affiliate Summit
 
Corso di HTML5 e CSS
Salvatore Cordiano
 
Landingpage - Concetti base per la realizzazione di landingpage efficaci
Massimo Petrucci
 
Snapchat - Funzionalità e utilizzo per le Aziende Case Study & Best Practice
Giuliano Ambrosio
 
Ad

Similar to Corso di Versioning, Configuration & Document Management (20)

PPTX
Configuration management
Francesco Garofalo
 
PPT
CruiseControl.net in un progetto reale
DotNetMarche
 
PPTX
Dot netcampus2015 green-template
DotNetCampus
 
PPTX
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DotNetCampus
 
ODP
Controllo di versione e Git
Marcello Missiroli
 
PPSX
Produzione software - La configurazione
Gemax Consulting
 
PPTX
CONTINUOUS INTEGRATION CON SQL SERVER
DotNetCampus
 
PPTX
DotNetCampus - Continuous Integration con Sql Server
Alessandro Alpi
 
PDF
OCS in un’ora - Introduzione a Open Conference Systems
AmmLibera AL
 
PDF
Docker & DevOps
Gerardo Di Iorio
 
PPTX
Progettato per specialisti del web
Eugenio Uccheddu
 
PPTX
Web Api – The HTTP Way
Luca Milan
 
PPTX
Alm pills - Sessione community tour Dot Net Umbria 2011
Gian Maria Ricci
 
PPTX
DbUp - A real case of database migration
Andrea Cirioni
 
PDF
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Mattia Milleri
 
PPTX
PASS Virtual Chapter - SQL Server Continuous Integration
Alessandro Alpi
 
PPT
Continuous Deployment - Agile Day 2010
migratore
 
PPTX
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
Alessandro Alpi
 
PPTX
Database Project in Visual Studio 2010
Gian Maria Ricci
 
PPTX
Webinar: "Il database: l’equipaggiamento su cui fare affidamento"
Emerasoft, solutions to collaborate
 
Configuration management
Francesco Garofalo
 
CruiseControl.net in un progetto reale
DotNetMarche
 
Dot netcampus2015 green-template
DotNetCampus
 
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DotNetCampus
 
Controllo di versione e Git
Marcello Missiroli
 
Produzione software - La configurazione
Gemax Consulting
 
CONTINUOUS INTEGRATION CON SQL SERVER
DotNetCampus
 
DotNetCampus - Continuous Integration con Sql Server
Alessandro Alpi
 
OCS in un’ora - Introduzione a Open Conference Systems
AmmLibera AL
 
Docker & DevOps
Gerardo Di Iorio
 
Progettato per specialisti del web
Eugenio Uccheddu
 
Web Api – The HTTP Way
Luca Milan
 
Alm pills - Sessione community tour Dot Net Umbria 2011
Gian Maria Ricci
 
DbUp - A real case of database migration
Andrea Cirioni
 
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Mattia Milleri
 
PASS Virtual Chapter - SQL Server Continuous Integration
Alessandro Alpi
 
Continuous Deployment - Agile Day 2010
migratore
 
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
Alessandro Alpi
 
Database Project in Visual Studio 2010
Gian Maria Ricci
 
Webinar: "Il database: l’equipaggiamento su cui fare affidamento"
Emerasoft, solutions to collaborate
 
Ad

More from Salvatore Cordiano (20)

PDF
McKinsey.org Forward Program - Salvatore Cordiano
Salvatore Cordiano
 
PDF
The McKinsey Approach to Problem Solving
Salvatore Cordiano
 
PDF
Human bugs - Why is thinking hard - Tech Talk
Salvatore Cordiano
 
PDF
Attestato Masterclass Kaospilot - The Art & Craft of Designing & Facilitating...
Salvatore Cordiano
 
PDF
Transformed: Moving to the Product Operating Model
Salvatore Cordiano
 
PDF
Executive Master in Business Administration
Salvatore Cordiano
 
PDF
Facile.it Partner 🚀 Hackathon 2023 - What we learned
Salvatore Cordiano
 
PDF
Accrescere la motivazione per raggiungere gli obiettivi
Salvatore Cordiano
 
PDF
Il potere delle domande
Salvatore Cordiano
 
PDF
Impara a delegare
Salvatore Cordiano
 
PDF
Migliora il tuo ascolto
Salvatore Cordiano
 
PDF
Negoziazione organizzativa
Salvatore Cordiano
 
PDF
Migliora le prestazioni dei tuoi collaboratori
Salvatore Cordiano
 
PDF
Charles Péguy - Il denaro
Salvatore Cordiano
 
PDF
Delivering Effective Feedback - FP Talks
Salvatore Cordiano
 
PDF
No Silver Bullet - Essence and Accident in Software Engineering
Salvatore Cordiano
 
PDF
Facile.it Partner Hackathon - What we learned
Salvatore Cordiano
 
PDF
FP Hackathon - Closing, remarks and awards ceremony
Salvatore Cordiano
 
PDF
Facile.it Partner Hackathon 2022
Salvatore Cordiano
 
PDF
Remarks about Ownership
Salvatore Cordiano
 
McKinsey.org Forward Program - Salvatore Cordiano
Salvatore Cordiano
 
The McKinsey Approach to Problem Solving
Salvatore Cordiano
 
Human bugs - Why is thinking hard - Tech Talk
Salvatore Cordiano
 
Attestato Masterclass Kaospilot - The Art & Craft of Designing & Facilitating...
Salvatore Cordiano
 
Transformed: Moving to the Product Operating Model
Salvatore Cordiano
 
Executive Master in Business Administration
Salvatore Cordiano
 
Facile.it Partner 🚀 Hackathon 2023 - What we learned
Salvatore Cordiano
 
Accrescere la motivazione per raggiungere gli obiettivi
Salvatore Cordiano
 
Il potere delle domande
Salvatore Cordiano
 
Impara a delegare
Salvatore Cordiano
 
Migliora il tuo ascolto
Salvatore Cordiano
 
Negoziazione organizzativa
Salvatore Cordiano
 
Migliora le prestazioni dei tuoi collaboratori
Salvatore Cordiano
 
Charles Péguy - Il denaro
Salvatore Cordiano
 
Delivering Effective Feedback - FP Talks
Salvatore Cordiano
 
No Silver Bullet - Essence and Accident in Software Engineering
Salvatore Cordiano
 
Facile.it Partner Hackathon - What we learned
Salvatore Cordiano
 
FP Hackathon - Closing, remarks and awards ceremony
Salvatore Cordiano
 
Facile.it Partner Hackathon 2022
Salvatore Cordiano
 
Remarks about Ownership
Salvatore Cordiano
 

Corso di Versioning, Configuration & Document Management

  • 1. Corso di Version, Configuration & Document Management Salvatore Cordiano @parallelit Master in Sviluppo di Applicazioni Web, Mobile e Social Media
  • 2. Agenda • Version management • Configuration management • Document management
  • 4. Che cos’è il versioning? Il termine è l’abbreviazione del controllo di versione o version control.
  • 5. Version control Un programma che tiene traccia delle modifiche ai file ed alle cartelle. ! ! Il controllo di versione è anche noto come: • Source Control Manager (SCM) • Revision Control System (RCS) • Version Control System (VCS)
  • 6. Perché usare il controllo di versione? Perché questo fa schifo!
  • 7. Alcuni esempio di software per il controllo di versione • CVS • SVN! • Git! • Mercurial • Bazaar Darcs • Perforce • Fossil • BitKeeper ! Nel corso della lezione faremo principalmente riferimento ad SVN http://subversion.apache.org/
  • 8. Quali sono i vantaggi dell’uso di un sistema di controllo delle versioni? • Fornisce supporto alla memorizzazione dei codici sorgenti. • Fornisce uno storico di ciò che è stato fatto. • Può fornire un modo per lavorare in parallelo su diversi aspetti dell’applicazione in sviluppo. • Può fornire un modo per lavorare in parallelo senza intralciarsi a vicenda.
  • 9. Il numero di versione (1) • Le modifiche su file e cartelle sono identificate incrementando un numero o un codice associato, denominato “numero di versione”, “etichetta di versione”, o semplicemente “versione”. • Ad ogni versione è associato un’etichetta che identifica il nome della persona che ha apportato la modifica.
  • 10. Il numero di versione (2) • Head: identifica l’ultima revisione del repository. • Base: identifica l’ultimo aggiornatamento della copia di lavoro. • Committed: identifica l’ultima revisione in cui un elemento ha subito modifiche.
  • 11. Che tipo di file? • Testo • Grafica • Binario • Qualunque
  • 12. Glossario (1) • Repository: Il repository è dove i file sono memorizzati, spesso su un server. • Commit: un commit si effettua quando si copiano le modifiche fatte su file locali nel repository (il software di controllo versione controlla quali file sono stati modificati dall'ultima sincronizzazione). • Change: una modifica (change) rappresenta una specifica modifica ad un documento sottoposto al controllo di versione. La granularità delle modifiche considerate come cambiamenti varia tra i sistemi di controllo versione. • Change list: su molti sistemi di controllo versione con commit di modifiche multiple atomiche, una changelist identifica un insieme di changes fatti in un singolo commit.
  • 13. Glossario (2) • Check-out: un check-out effettua una copia di lavoro dal repository (può essere visto come l’operazione inversa dell’importazione). • Update: un update copia le modifiche fatte sul repository nella propria directory di lavoro (può essere visto come l’operazione inversa del commit). • Merge: un merge o integrazione unisce modifiche concorrenti in una revisione unificata. • Revision (o versione): è una versione in una catena di modifiche. • Revert: annulla ogni modifica locale a file e cartelle.
  • 14. Glossario (3) • Conflict: un conflitto si presenta quando diversi soggetti fanno modifiche in contemporanea alla stessa porzione di un documento. • Resolve conflict: l’intervento di un utente per la risoluzione di un conflitto tra modifiche differenti di uno stesso documento.
  • 15. Concetti di base Repository! • Un posto dove memorizzare i sorgenti. • Tipicamente si trova su una macchina remota affidabile e sicura. • Tutti gli sviluppatori condividono lo stesso repository. ! Working folder! • Cartella di lavoro. • Ogni sviluppatore ne ha una collocata sulla propria macchina. • Contiene una copia del codice sorgente relativo al progetto.
  • 16. Repository = Time machine • Il Repository è un archivio di ogni versione di ogni file di codice sorgente. • Contiene la storia del progetto. • Rende possibile navigare indietro nel tempo e recuperare versioni vecchie dei file • Capire perché sono state fatte certe scelte e chi le ha fatte. • Capire perché sono stati introdotti nuovi bug e chi li ha introdotti.
  • 17. Quando viene rilevato un conflitto? • Sui sorgenti quando: due sviluppatori modificano la stessa linea di codice; il primo fa un commit, il secondo un update e rileva il conflitto. • Sulla struttura dei file/direttori quando: due sviluppatori rinominano/spostano lo stesso file/ direttorio.
  • 20. Trunk, branch, tag (2) Un modo ragionevole per organizzare un repository è fare in modo che contenga: • Un tronco principale di sviluppo: Trunk • Un luogo dove memorizzare le linee di sviluppo alternative: Branch, Branches • Un luogo dove memorizzare le release stabili: Tag, Tags
  • 21. Branch (1) • Relativamente ad un progetto, un branch è una linea di sviluppo indipendente dalle altre. • Viene inizialmente generato come copia completa e condivide parte della storia.
  • 22. Branch (2) • I Branch, ad esempio, consentono di iniziare lo sviluppo di una nuova release quando la precedente è ancora in fase di consolidamento. • Una volta terminato il consolidamento è possibile effettuare il merge fra il branch ed il trunk. • Il bug risolti in fase di consolidamento saranno fusi insieme alle modifiche apportate per incorporare le funzionalità della nuova release.
  • 23. Tag • Tag = Release • Viene memorizzato separatamente in modo da avere a portata di mano tutti i sorgenti relativi ad una certa release. • In questo modo non è necessario andare a ripescare dal main trunk i sorgenti andando indietro con le versioni dei file.
  • 25. A cosa serve il CM? • Ma il sistema funzionava ieri, cosa è accaduto? • Non riesco a riprodurre il problema (bug) sulla mia copia di sistema
  • 26. Tre problemi “classici” di CM • Doppia manutenzione Impedire l’esistenza di copie multiple dello stesso file da aggiornare in modo indipendente • Dati condivisi Permettere a due o più sviluppatori di accedere agli stessi file/dati • Aggiornamento simultaneo Impedire il “clobbering” quando due o più sviluppatori modificano lo stesso file
  • 27. Configuration management (1) • Identifica e tiene traccia di tutti gli elementi rilevanti della configurazione del sistema, affinché tutti gli errori possibili vengano individuati e vengano trovate le possibili soluzioni.
  • 28. Configuration management (2) CM is the practice of handling changes systematically so that a system maintains its integrity over time.
  • 29. Configuration management • La configurazione è definita come l’insieme delle caratteristiche funzionali e fisiche di un prodotto stabilite nei documenti tecnici e realizzate nel prodotto stesso. • Il configuration management si occupa di gestire e controllare la variazione di tali caratteristiche. • Non costituisce un’attività opzionale.
  • 30. Configuration item Il configuration item (CI) è un unità di configurazione che può essere gestita individualmente. Ad esempio in riferimento ad un’infrastruttura IT un CI può essere un server, un software, un router, etc.
  • 31. Configuration management database • E’ un elemento chiave del processo di CM • Viene utilizzato per tracciare tutte le CI e le relazioni tra di loro (Ad esempio: sul server X è disponibile il sistema operativo Y, etc.).
  • 32. Principali processi del configuration management • Pianificazione: include le strategie, policy, obiettivi, ruoli e responsabilità nel processo di Configuration Management. Altro elemento da tenere presente nella pianficazione è la struttura del CMDB. • Identificazione: include la selezione, identificazione e “labeling” delle CI. • Controllo: include il processo di assicurare che solo le CI autorizzate siano presenti nel CMDB. Tutto le CI possono essere modificate solo attraverso il processo di change management. • Status Accounting: la gestione del ciclo di vita delle CI. Si occupa del tracciamento e del reporting delle informazioni sullo stato dei CI. • Verifica: include gli audit effettuati con lo scopo di verificare l’accuratezza del CMDB.
  • 33. I tool di CM (1) • Sono tool di IT automation che fanno un sacco di lavoro. • I tool di Configuration Management leggono le configurazioni a partire da un file sorgente ed applicano le stesse su uno o più server, in modo automatico, prevedibile e idempotente. ! Idempotente: posso applicare la stessa operazione più volte senza avere effetti “collaterali”.
  • 34. I tool di CM (2) inizio configurazione 1. assicurati che apache2 sia installato 2. assicurati che php5 sia installato 3. assicurati che mysql sia installato fine configurazione
  • 35. Alcuni esempi di tool di CM • Puppet • Chef • CFEngine • Bcfg2 • BMCBladelogic
  • 37. Cosa intendiamo per document management? • Generalmente si fa riferimento al sistema di gestione di documenti o document management system (DMS). • E’ una categoria di sistemi software che serve a organizzare e facilitare la creazione collaborativa di documenti e di altri contenuti. • Tecnicamente il DMS è un’applicazione che si occupa di eseguire operazioni massive sui documenti, catalogandoli ed indicizzandoli secondo determinati algoritmi.
  • 38. Document management system Dietro un termine apparentemente semplice si cela un ambito complesso: ! ! ! • metadata • integration • capture • validation • indexing • storage • retrieval • distribution • security • signature • workflow • collaboration • versioning • publishing • reproduction
  • 41. Alcuni esempi di DMS • Alfresco • LogicalDOC
  • 42. Bibliografia • Wikipedia • http://svnbook.red-bean.com/ • http://subversion.apache.org/ • http://www.di.unipi.it/~cardillo/labso/files/docs/svn- book.pdf