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

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’ DISTORIA •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 DICONFLITTI • 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

Editor's Notes