SlideShare une entreprise Scribd logo
1  sur  14
INTRODUZIONE A
         MERCURIAL
                      Lezione 3
          Paolo Ferretti per Deltapromo
URL corso: http://corso-deltapromo.paoloferretti.net/

            http://www.paoloferretti.net
              paolo@paoloferretti.net
MERCURIAL


• Software    distribuito per la gestione del codice

• Scritto   in Python e C

• Opensource

• Scaricabile   da http://mercurial.selenic.com/
UN PO’ DI STORIA


•I   suoi antenati sono CVS e SVN

• Sistemi   centralizzati

• Merge     poco efficiente
PERCHÈ MERCURIAL


• Quando     si lavora in team, spesso di lavora sullo stesso file

• Si   creano conflitti

• Si   introducono bug

• C’è   la necessità di versionare il codice
VANTAGGI DI MERCURIAL


• Col   codice versionato abbiamo una macchina del tempo

 • possiamo    fare rollback delle modifiche

 • abbiamo    tutta la storia delle modifiche di ogni file
VANTAGGI DI MERCURIAL

• Ilcodice non è in un luogo centralizzato, ma è distribuito su
  più macchine

• Più    elasticità nella gestione dei permessi nel team di lavoro

• Il   codice è facilmente copiabile/trasferibile/aggiornabile

• Il   processo di sviluppo e deploy può essere automatizzato
PER INIZIARE

• hg   init

  • crea      un repository nella cartella corrente

• definire      subito il file .hgignore

  • permette       di indicare da subito i file che non devono essere
   versionati

       • ad   esempio: file di progetto del nostro IDE preferito
REPOSITORY



• Ogni repository è contenuto nella cartella .hg, posizionata
 nella root del progetto

• In   .hg c’è il file hgrc con le impostazioni del repository
COMMIT


• hg   ci -m “messaggio del commit”

  • effettua   il commit dei file modificati / aggiunti

• Ogni   commit viene registrato con un id alfanumerico unico
VERIFICA STATO

• hg   status

  • verifica     lo stato dei file

       • modificato

       • aggiunto

       • rimosso
PUSH


• hg   push

  • effettua   il push dei commit locali su un repository remoto

• E’ unodei due step importanti per sincronizzare il proprio
 lavoro con gli altri membri del team
PULL


• hg   pull

  • scarica   le modifiche da un repository remoto

• L’operazione in sè non modifica alcun file, ma si limita a
 scaricare nel repository locale le modifiche
UPDATE

• hg      up

   • effettua   l’update dei file dal repository locale

• In   caso di conflitti, va seguito da un

   • hg    merge

   • il   quale effettua il merge automatico dei file che confliggono

• Il   plugin fetch effettua pull, update e merge automaticamente
IN CASO DI CONFLITTI

• Seci sono conflitti che non si possono risolvere in
 automatico, si interviene manualmente

• hg   resolve -l

  • restituisce     la lista dei file che confliggono

• hg   resolve -m /path/to/file

  • indica   a mercurial che abbiamo risolto il conflitto

Contenu connexe

Tendances

CruiseControl.net in un progetto reale
CruiseControl.net in un progetto realeCruiseControl.net in un progetto reale
CruiseControl.net in un progetto realeDotNetMarche
 
Agileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaAgileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaXPeppers
 
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8DrupalDay
 
Tanti "piccoli rilasci" con Symfony2
Tanti "piccoli rilasci" con Symfony2Tanti "piccoli rilasci" con Symfony2
Tanti "piccoli rilasci" con Symfony2Fabio Mora
 
Branching & Merging strategies (with TFS)
Branching & Merging strategies (with TFS)Branching & Merging strategies (with TFS)
Branching & Merging strategies (with TFS)Klab
 

Tendances (8)

CruiseControl.net in un progetto reale
CruiseControl.net in un progetto realeCruiseControl.net in un progetto reale
CruiseControl.net in un progetto reale
 
Agileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaAgileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastruttura
 
introduzione a symfony 2
introduzione a symfony 2 introduzione a symfony 2
introduzione a symfony 2
 
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
 
Git e Git Flow
Git e Git Flow Git e Git Flow
Git e Git Flow
 
Git e GitHub
Git e GitHubGit e GitHub
Git e GitHub
 
Tanti "piccoli rilasci" con Symfony2
Tanti "piccoli rilasci" con Symfony2Tanti "piccoli rilasci" con Symfony2
Tanti "piccoli rilasci" con Symfony2
 
Branching & Merging strategies (with TFS)
Branching & Merging strategies (with TFS)Branching & Merging strategies (with TFS)
Branching & Merging strategies (with TFS)
 

En vedette

Corso Python Deltapromo - Lezione 2
Corso Python Deltapromo - Lezione 2Corso Python Deltapromo - Lezione 2
Corso Python Deltapromo - Lezione 2Paolo Ferretti
 
Corso Python Deltapromo - Lezione 4
Corso Python Deltapromo - Lezione 4Corso Python Deltapromo - Lezione 4
Corso Python Deltapromo - Lezione 4Paolo Ferretti
 
Corso Python Deltapromo - Lezione 5
Corso Python Deltapromo - Lezione 5Corso Python Deltapromo - Lezione 5
Corso Python Deltapromo - Lezione 5Paolo Ferretti
 
Tavolo territoriale del servizio ferroviario nel Quadrante Sud
Tavolo territoriale del servizio ferroviario nel Quadrante SudTavolo territoriale del servizio ferroviario nel Quadrante Sud
Tavolo territoriale del servizio ferroviario nel Quadrante SudPaolo Ferretti
 
Corso Python Deltapromo lezione 1
Corso Python Deltapromo   lezione 1Corso Python Deltapromo   lezione 1
Corso Python Deltapromo lezione 1Paolo Ferretti
 
DESKTOP GUI APP DEVELOPMENT USING PYTHON!
DESKTOP GUI APP DEVELOPMENT USING PYTHON!DESKTOP GUI APP DEVELOPMENT USING PYTHON!
DESKTOP GUI APP DEVELOPMENT USING PYTHON!Umar Yusuf
 
Django CMS & Integrating it with django shop
Django CMS & Integrating it with django shopDjango CMS & Integrating it with django shop
Django CMS & Integrating it with django shopMindfire Solutions
 
wxFormBuilder - Tutorial on “A GUI for making GUIs” for Python
wxFormBuilder - Tutorial on “A GUI for making GUIs” for PythonwxFormBuilder - Tutorial on “A GUI for making GUIs” for Python
wxFormBuilder - Tutorial on “A GUI for making GUIs” for PythonUmar Yusuf
 
Python base 07-classioggetti
Python base 07-classioggettiPython base 07-classioggetti
Python base 07-classioggettiStudiabo
 

En vedette (10)

Corso Python Deltapromo - Lezione 2
Corso Python Deltapromo - Lezione 2Corso Python Deltapromo - Lezione 2
Corso Python Deltapromo - Lezione 2
 
Corso Python Deltapromo - Lezione 4
Corso Python Deltapromo - Lezione 4Corso Python Deltapromo - Lezione 4
Corso Python Deltapromo - Lezione 4
 
Corso Python Deltapromo - Lezione 5
Corso Python Deltapromo - Lezione 5Corso Python Deltapromo - Lezione 5
Corso Python Deltapromo - Lezione 5
 
Tavolo territoriale del servizio ferroviario nel Quadrante Sud
Tavolo territoriale del servizio ferroviario nel Quadrante SudTavolo territoriale del servizio ferroviario nel Quadrante Sud
Tavolo territoriale del servizio ferroviario nel Quadrante Sud
 
OpenStreetMap
OpenStreetMapOpenStreetMap
OpenStreetMap
 
Corso Python Deltapromo lezione 1
Corso Python Deltapromo   lezione 1Corso Python Deltapromo   lezione 1
Corso Python Deltapromo lezione 1
 
DESKTOP GUI APP DEVELOPMENT USING PYTHON!
DESKTOP GUI APP DEVELOPMENT USING PYTHON!DESKTOP GUI APP DEVELOPMENT USING PYTHON!
DESKTOP GUI APP DEVELOPMENT USING PYTHON!
 
Django CMS & Integrating it with django shop
Django CMS & Integrating it with django shopDjango CMS & Integrating it with django shop
Django CMS & Integrating it with django shop
 
wxFormBuilder - Tutorial on “A GUI for making GUIs” for Python
wxFormBuilder - Tutorial on “A GUI for making GUIs” for PythonwxFormBuilder - Tutorial on “A GUI for making GUIs” for Python
wxFormBuilder - Tutorial on “A GUI for making GUIs” for Python
 
Python base 07-classioggetti
Python base 07-classioggettiPython base 07-classioggetti
Python base 07-classioggetti
 

Similaire à Corso Python Deltapromo - Lezione 3

Corso di Versioning, Configuration & Document Management
Corso di Versioning, Configuration & Document ManagementCorso di Versioning, Configuration & Document Management
Corso di Versioning, Configuration & Document ManagementSalvatore Cordiano
 
Introduzione a Git e GitLab
Introduzione a Git e GitLabIntroduzione a Git e GitLab
Introduzione a Git e GitLabYefry Figueroa
 
Il "rilascio" con Octopus Deploy (visto dagli occhi di un dev)
Il "rilascio" con Octopus Deploy (visto dagli occhi di un dev)Il "rilascio" con Octopus Deploy (visto dagli occhi di un dev)
Il "rilascio" con Octopus Deploy (visto dagli occhi di un dev)Carlo Fedeli
 
Linux & Tools: per la piccola azienda e i freelance
Linux & Tools: per la piccola azienda e i freelanceLinux & Tools: per la piccola azienda e i freelance
Linux & Tools: per la piccola azienda e i freelanceFabio Mora
 
Continuous Deployment - Agile Day 2010
Continuous Deployment - Agile Day 2010Continuous Deployment - Agile Day 2010
Continuous Deployment - Agile Day 2010migratore
 
Introduzione a Drupal 7 - 14/03/2013
Introduzione a Drupal 7 - 14/03/2013Introduzione a Drupal 7 - 14/03/2013
Introduzione a Drupal 7 - 14/03/2013Alessandro del Gobbo
 
Seminario team working - 21-1-2015
Seminario team working - 21-1-2015Seminario team working - 21-1-2015
Seminario team working - 21-1-2015Alessandro Loffredo
 
Dall'idea al deploy un lungo viaggio che passa per git flow e semver
Dall'idea al deploy   un lungo viaggio che passa per git flow e semverDall'idea al deploy   un lungo viaggio che passa per git flow e semver
Dall'idea al deploy un lungo viaggio che passa per git flow e semverMauro Servienti
 
Wordpress Boilerplate Plugin Powered
Wordpress Boilerplate Plugin PoweredWordpress Boilerplate Plugin Powered
Wordpress Boilerplate Plugin PoweredDaniele Scasciafratte
 
Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...MariaDB plc
 
Universal app ma universal per davvero
Universal app ma universal per davveroUniversal app ma universal per davvero
Universal app ma universal per davveroKlab
 
Smau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del ceroSmau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del ceroSMAU
 

Similaire à Corso Python Deltapromo - Lezione 3 (20)

Corso di Versioning, Configuration & Document Management
Corso di Versioning, Configuration & Document ManagementCorso di Versioning, Configuration & Document Management
Corso di Versioning, Configuration & Document Management
 
Introduzione a Git e GitLab
Introduzione a Git e GitLabIntroduzione a Git e GitLab
Introduzione a Git e GitLab
 
Docker & DevOps
Docker  & DevOpsDocker  & DevOps
Docker & DevOps
 
Emerasoft Git quickstart
Emerasoft Git quickstartEmerasoft Git quickstart
Emerasoft Git quickstart
 
Il "rilascio" con Octopus Deploy (visto dagli occhi di un dev)
Il "rilascio" con Octopus Deploy (visto dagli occhi di un dev)Il "rilascio" con Octopus Deploy (visto dagli occhi di un dev)
Il "rilascio" con Octopus Deploy (visto dagli occhi di un dev)
 
Linux & Tools: per la piccola azienda e i freelance
Linux & Tools: per la piccola azienda e i freelanceLinux & Tools: per la piccola azienda e i freelance
Linux & Tools: per la piccola azienda e i freelance
 
Continuous Deployment - Agile Day 2010
Continuous Deployment - Agile Day 2010Continuous Deployment - Agile Day 2010
Continuous Deployment - Agile Day 2010
 
Introduzione a Drupal 7 - 14/03/2013
Introduzione a Drupal 7 - 14/03/2013Introduzione a Drupal 7 - 14/03/2013
Introduzione a Drupal 7 - 14/03/2013
 
Seminario team working - 21-1-2015
Seminario team working - 21-1-2015Seminario team working - 21-1-2015
Seminario team working - 21-1-2015
 
Dall'idea al deploy un lungo viaggio che passa per git flow e semver
Dall'idea al deploy   un lungo viaggio che passa per git flow e semverDall'idea al deploy   un lungo viaggio che passa per git flow e semver
Dall'idea al deploy un lungo viaggio che passa per git flow e semver
 
Infrastructure as Data
Infrastructure as DataInfrastructure as Data
Infrastructure as Data
 
Containerized Liferay
Containerized LiferayContainerized Liferay
Containerized Liferay
 
Xamarin DevOps
Xamarin DevOpsXamarin DevOps
Xamarin DevOps
 
Wordpress Boilerplate Plugin Powered
Wordpress Boilerplate Plugin PoweredWordpress Boilerplate Plugin Powered
Wordpress Boilerplate Plugin Powered
 
Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...
 
Anatomia di un progetto open-source
Anatomia di un progetto open-sourceAnatomia di un progetto open-source
Anatomia di un progetto open-source
 
Universal app ma universal per davvero
Universal app ma universal per davveroUniversal app ma universal per davvero
Universal app ma universal per davvero
 
Smau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del ceroSmau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del cero
 
Presentazione Unibo
Presentazione UniboPresentazione Unibo
Presentazione Unibo
 
VS Package @ CD2008
VS Package @ CD2008VS Package @ CD2008
VS Package @ CD2008
 

Corso Python Deltapromo - Lezione 3

  • 1. INTRODUZIONE A MERCURIAL Lezione 3 Paolo Ferretti per Deltapromo URL corso: http://corso-deltapromo.paoloferretti.net/ http://www.paoloferretti.net paolo@paoloferretti.net
  • 2. MERCURIAL • Software distribuito per la gestione del codice • Scritto in Python e C • Opensource • Scaricabile da http://mercurial.selenic.com/
  • 3. UN PO’ DI STORIA •I suoi antenati sono CVS e SVN • Sistemi centralizzati • Merge poco efficiente
  • 4. PERCHÈ MERCURIAL • Quando si lavora in team, spesso di lavora sullo stesso file • Si creano conflitti • Si introducono bug • C’è la necessità di versionare il codice
  • 5. VANTAGGI DI MERCURIAL • Col codice versionato abbiamo una macchina del tempo • possiamo fare rollback delle modifiche • abbiamo tutta la storia delle modifiche di ogni file
  • 6. VANTAGGI DI MERCURIAL • Ilcodice non è in un luogo centralizzato, ma è distribuito su più macchine • Più elasticità nella gestione dei permessi nel team di lavoro • Il codice è facilmente copiabile/trasferibile/aggiornabile • Il processo di sviluppo e deploy può essere automatizzato
  • 7. PER INIZIARE • hg init • crea un repository nella cartella corrente • definire subito il file .hgignore • permette di indicare da subito i file che non devono essere versionati • ad esempio: file di progetto del nostro IDE preferito
  • 8. REPOSITORY • Ogni repository è contenuto nella cartella .hg, posizionata nella root del progetto • In .hg c’è il file hgrc con le impostazioni del repository
  • 9. COMMIT • hg ci -m “messaggio del commit” • effettua il commit dei file modificati / aggiunti • Ogni commit viene registrato con un id alfanumerico unico
  • 10. VERIFICA STATO • hg status • verifica lo stato dei file • modificato • aggiunto • rimosso
  • 11. PUSH • hg push • effettua il push dei commit locali su un repository remoto • E’ unodei due step importanti per sincronizzare il proprio lavoro con gli altri membri del team
  • 12. PULL • hg pull • scarica le modifiche da un repository remoto • L’operazione in sè non modifica alcun file, ma si limita a scaricare nel repository locale le modifiche
  • 13. UPDATE • hg up • effettua l’update dei file dal repository locale • In caso di conflitti, va seguito da un • hg merge • il quale effettua il merge automatico dei file che confliggono • Il plugin fetch effettua pull, update e merge automaticamente
  • 14. IN CASO DI CONFLITTI • Seci sono conflitti che non si possono risolvere in automatico, si interviene manualmente • hg resolve -l • restituisce la lista dei file che confliggono • hg resolve -m /path/to/file • indica a mercurial che abbiamo risolto il conflitto

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n