[Linux-Biella] Differenze cvs e svn

Emanuele Aina em a nerd.ocracy.org
Lun 1 Ott 2007 21:41:58 CEST


Daniele (Mastro) domandò:

>> SVN ha i commit atomici, ma ha un modello di storia lineare che rende i 
>> merge dei branch una tortura vietata dalla convenzione di Ginevra.
> 
> cosa intendi per "storia lineare"?

Scenario SVN: progetto con file foo.txt, vuoto.

Io ne ho una copia.
Tu ne hai un'altra.

Io: «echo A > foo.txt»
Tu: «echo B > foo.txt»

Io: «svn commit» -> ok
Tu: «svn commit» -> errore: devi fare update
     «svn update» -> conflitto
     «echo AB > foo.txt»
     «svn commit» -> ok

La storia sarà:

0 -> A -> AB

Come si vede manca la parte dove tu hai scritto B.


Scenario Mercurial (ma anche GIT, ecc.): sempre foo.txt, sempre vuoto.

Io ne ho una copia.
Tu ne hai un'altra.

Io: «echo A > foo.txt»
Tu: «echo B > foo.txt»

Io: «hg commit» -> ok
     «hg push» -> ok
Tu: «hg commit» -> ok
     «hg push» -> errore: stai creando una nuova testa (head)
     «hg pull -u» -> conflitto
     «echo AB > foo.txt»
     «hg commit» -> ok
     «hg push» -> ok

La storia sarà:

     .-> A -.
0 -+       +-> AB
     '-> B -'

Si tratta di un grafo diretto aciclico che rappresenta lo sviluppo 
parallelo mio e tuo nonché il merge delle due modifiche in conflitto.

Come si vede non di è perso nulla di ciò che è avvenuto realmente.

Qui fa ridere, ma se invece di un solo commit ce ne sono dieci o cento 
la situazione cambia.

> quali sono i problemi pratici nel creare un branch con SVN?

SVN non tiene conto dei merge, in particolare quelli intermedi.

Il che vuol dire che ti ritrovi a ripetere il merge di conflitti già 
risolti ogni volta.

Forse adesso cominceranno a segnare i merge per venire incotro a SVK.

Speriamo.

>> GIT è veloce e complicato.
>>
>> Mercurial è veloce e semplice.
>>
>> Bazaar è lento e semplice.
>>
>> Darcs è strano, potente e mal funzionante.
>>
>> Se avete domande specifiche fate pure.
> 
> beh son cose un po' generiche... :)

Servono solo come indirizzo.

> posso "fidarmi" :) ma ora vorrei capire, se hai tempo e voglia, cosa
> differenza tecnologicamente questi diversi sistemi di versionamento
> o almeno i principali :)

Nei rispettivi siti trovi le descrizioni che cerchi, non farei altro che 
ripeterle qui...

> e in cosa sono superiori rispetto a SVN

Mi sembrava di aver già fatto esempi qua e là.

Comunque ribadisco che il video di Linus è molto preciso 
nell'evidenziare le pecche di SVN.

-- 
Buongiorno.
Complimenti per l'ottima scelta.



Maggiori informazioni sulla lista Linux