[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