Differences between revisions 9 and 10
Revision 9 as of 2008-03-29 22:59:05
Size: 4839
Editor: LucaBianconi
Comment:
Revision 10 as of 2008-03-29 23:06:08
Size: 5300
Editor: LucaBianconi
Comment:
Deletions are marked like this. Additions are marked like this.
Line 102: Line 102:
Bob "clona"(comando '''clone''') questo repository e ottiene una copia completa dello store di Alice(nonostante la sua cartella di lavoro sia indipendente!): Bob "clona" (comando '''clone''') questo repository e ottiene una copia completa dello store di Alice(nonostante la sua cartella di lavoro sia indipendente!):
Line 114: Line 114:
Bob allora aggiorna il repository di Alice(comando'''pull''')per sincornizzarlo col suo. Questa operazione copia tutti i cambiamenti di Alice nel repository di Bob: Bob allora aggiorna il repository di Alice (comando '''pull''') per sincornizzarlo col suo. Questa operazione copia tutti i cambiamenti di Alice nel repository di Bob:
Line 117: Line 117:

Considerando che il g di Alice è l'head più recente nel repository di Bob, adesso viene segnato come tip. Bob allora esegue il merge, ossia unifica l'ultimo cambiamento sul quale ha lavorato ('''f''') con il tip, modificando il risultato, e trovandosi con:

==Immagine6==

Ora se Alice eseguesse l'operazione di pull da Bob, essa otterrebbe i cambiamenti e,f e h effettuati da Bob; inoltre sarebbero completamente sincronizzati:

==Immagine7==

Il modello di sviluppo decentralizzato di Mercurial può risultare difficile da comprendere per i nuovi utenti. Questa pagina prova a illustrare alcuni dei concetti di base.

(This page in English: UnderstandingMercurial)

Vedi il ["Tutorial"] per istruzioni passo-passo.

TableOfContents

Cosa c'è dentro un Repository

I Repository di Mercurial contengono una cartella di lavoro e uno store:

Lo store contiene la cronologia completa del progetto. Diversamente dai tradizionali SCM (Source Code Management - Gestori di code sorgente), dove c'è solo una copia centrale della cronologia, ogni cartella di lavoro è associata ad una sua copia della cronologia. Questo permette allo sviluppo di procedere in parallelo.

La cartella di lavoro contiene una copia dei file del progetto ad un determinato momento (i.e. revisione 2), pronti per la modifica. Dato che i tags e i file ignorati sono "revision-controlled", sono anch'essi inclusi.

Effettuare Modifiche

Quando concludi delle modifiche, lo stato corrente della cartella di lavoro, relativamente alle revisioni precedenti, viene registrato come una nuova revisione.

Nota nell'immagine, che la revisione 4 è una ramificazione della revisione 2, che era la revisione nella cartella di lavoro. Ora la revisione 4 è la revisione "padre" rispetto alla cartella di lavoro.

Revisioni, Changeset, Head e Tip

Mercurial raggruppa i cambiamenti relativi a più file in un singolo Changeset, ossia una lista di tutti i cambiamenti al progetto già presente nel repository. Dal momento che Mercurial consente lo sviluppo distribuito parallelo, questi numeri di revisione potrebbero essere diversi tra un utente e un altro. Per questo motivo anche Mercurial assegna a ciascuna revisione un numero d'identificazione univoco(changeset ID). Questi ultimi sono codificati con numeri esadecimali a 40 cifre, tuttavia possono essere abbreviati in un qualsiasi prefisso che non sia ambiguo, per esempio "e38487".

Ramificazioni e merge(ossia quando due revisioni diverse si riuniscono in un repository solo) possono trovarsi in qualsiasi punto della cronologia delle revisioni. Ogni ramificazione che non si riunisce ad un'altra in un merge crea una nuova head(ossia un changeset senza "figli")nella cronologia delle revisioni. Notare qui come le revisioni 5 e 6 siano head. Inoltre, sempre nell'esempio, Mercurial considera la revisione 6 come tip del repository, ossia la head col più alto numero di revisioni e dunque la più recente.

==Clone, apportare cambiamenti al codice, Merge e Pull==

Iniziamo con l'utente Alice, che ha uno store tipo questo:

==immagine1==

Bob "clona" (comando clone) questo repository e ottiene una copia completa dello store di Alice(nonostante la sua cartella di lavoro sia indipendente!):

==Immagine2==

Bob effettua un paio di cambiamenti al codice:

==Immagine3==

Alice intanto fa i suoi cambiamenti in parallelo:

==Immagine 4==

Bob allora aggiorna il repository di Alice (comando pull) per sincornizzarlo col suo. Questa operazione copia tutti i cambiamenti di Alice nel repository di Bob:

==Immagine5==

Considerando che il g di Alice è l'head più recente nel repository di Bob, adesso viene segnato come tip. Bob allora esegue il merge, ossia unifica l'ultimo cambiamento sul quale ha lavorato (f) con il tip, modificando il risultato, e trovandosi con:

==Immagine6==

Ora se Alice eseguesse l'operazione di pull da Bob, essa otterrebbe i cambiamenti e,f e h effettuati da Bob; inoltre sarebbero completamente sincronizzati:

==Immagine7==


CategoryItalian

ItalianUnderstandingMercurial (last edited 2012-11-11 18:51:01 by abuehl)