[Linux-Biella] Differenze cvs e svn
    Emanuele Aina 
    em a nerd.ocracy.org
       
    Ven  5 Ott 2007 17:35:43 CEST
    
    
  
Paolo Ciarrocchi investigò:
>> hg update # aggiorna la working directory portandola alla punta del DAG
>>            # della storia
> 
> Se deve essere preceduto da hg pull allora è come git merge
Quindi "git-merge" serve sia a fondere rami differenti che a fondere le 
modifiche della working directory, giusto?
Il secondo caso è quello che viene chiamato "fast-forward merge", giusto?
>> "hg pull" e "hg update" possono venire fusi con "hg pull -u" se si vuole.
> 
> Se ho capito bene hg pull -u equivale a git pull
Sì.
>> Mi sembra solo una specie di commit a due stadi senza particolari benefici.
>>
>> Fortunatamente in Mercurial il dirstate (il quasi corrispettivo
>> dell'index) è completamente nascosto all'utente. :)
> 
> E qui inizio io a fare le domande :-)
Ben vengano!
> In git puoi fare.
> - Modifico fileA
> - Modifico fileB
> -Modifico fileC
> 
> git commit -a -m "Ho modificato A B e C" oppure
> git add fileA fileB (fileA e fileB sono nella "staging area")
> git commit -m "ho modificato A e B"
> git add fileC
> git commit -m "ho modificato C"
> 
> Come posso farlo in HG?
$ hg commit -m "Ho modificato A B e C"
  oppure
$ hg commit -m "ho modificato A e B" fileA fileB
$ hg commit -m "ho modificato C" fileC
Nell'ultimo puoi omettere "fileC", essendo l'unico file ad avere 
modifiche non commitate.
Stessa cosa dicasi per SVN/Darcs/Bazaar. Persino CVS.
>>>> Un branch può avere più teste?
>>> Si.
>> Come? Da quel che ho capito un branch è identificato dal suo cset più
>> recente.
>>
>> I branch di Mercurial sono bestie differenti.
>>
>> Ce ne sono di due tipi, come in GIT: quelli in stile Bazaar, ovvero i
>> cloni di un repo, e quelli interni.
>>
>> Quelli interni sono intesi per casi d'uso differenti da quelli in stile
>> Bazaar in quanto, a differenza di questi, il nome del branch a cui un
>> cset appartiene viene memorizzato all'interno della storia stessa.
>>
>> Sono utili quando si vogliono mantenere linee di sviluppo differenti
>> all'interno dello stesso progetto.
>>
>> O almeno quella è la motivazione, solitamente vengono utilizzati molto
>> raramente.
>>
>> Essendo i branch interni di GIT non memorizzati nella storia non hanno
>> una grande differenza rispetto a quelli esterni.
>>
>> Anzi, per questo io preferisco questi ultimi visto che mi sembrano più
>> "espliciti" e non richiedono altre conoscenze oltre al basilare "clone".
>>
>> Perché dovrei usare quelli interni in GIT?
> 
> Scusa ma non ti ho seguito (mattina presto, senza caffe'...)
Aspetterò volentieri che tu abbia tempo e caffé. ;)
-- 
Buongiorno.
Complimenti per l'ottima scelta.
    
    
       
       Maggiori informazioni sulla lista 
	       Linux