[Linux-Biella] hg vs git spiegatemi
Paolo Ciarrocchi
paolo.ciarrocchi a gmail.com
Mer 16 Nov 2011 10:27:14 CET
2011/11/15 Federico "Darkmagister" Pietta <f.pietta a gmail.com>:
>
> il mio ide o la shell ??? in che senso ?? ma i branch sono directory ??
No. GIT e Mercurial sono essenzialmente dei db che memorizzano
sorgenti creando la "storia" che lega la loro evoluzione.
GIT internamente memorizza degli snapshot di tutto cio' che importi e
ne gestisce la loro "vita" crendo dei "diff" dei vari snapshot.
Internamente poi vengono creati degli oggetti la cui relazione e'
caratterizzata da un grafo di tipo DAG
(http://en.wikipedia.org/wiki/Directed_acyclic_graph).
Quanto hai branch... tu sei abituato a lavorare con una storia lineare:
A
|
C
|
D
|
E
Dove a,b,c,d,e sono i tuoi commit.
In GIT (ma anche in mercurial e in molti altri software di versioning)
puoi avere questa struttura:
A
|
B
| \
C E
|
D
E e' commit creato in un nuovo branch creato usando come base B.
Perche' farlo? Perche' potresti voler gestire, in un unico repository,
diversi sviluppi volendo mantenerle la loro storia.
O perche' potresti dover fare maintenance di diverse release del
software, o perche' vuoi sperimentare qualcosa che poi potra' o meno
essere incluso nel ramo principale.
Ogni branch e' poi rappresentabile dal suo "checkout", dal popolare la
tua directory di lavoro con il suo contenuto.
GIT e Mercurial sono poi distributi, puoi fare pull di altri
repository e puoi fare il merge di un tuo branch locale con uno
remoto.
Questo e' un altro motivo per cui i branch sono utili.
Per esempio:
- Io e te lavoriamo allo stesso progetto
- Facciamo il clone del repository principale
- Io lavoro sulla funzionalita' "PIPPO". Creo quindi il branch PIPPO
- Tu lavori sulla funzionalita' "PLUTO". Crei quindi il branch PLUTO
Quando abbiamo terminato facciamo il merge dei nostri branch nel ramo
principale.
Spero che il concetto sia piu' chiaro.
Ciao,
--
Paolo
Maggiori informazioni sulla lista
Linux