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