[Linux-Biella] Differenze cvs e svn

Paolo Ciarrocchi paolo.ciarrocchi a gmail.com
Dom 7 Ott 2007 13:58:09 CEST


On 10/5/07, Emanuele Aina <em a nerd.ocracy.org> wrote:
> 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?

Ieppa.

> >> "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ì.

Quindi per fare il tracking di un progetto tu fai
$ hg pull -u

Curioso.

> >> 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. :)

Questo avveniva anche con cogito (progetto ora dismesso) ma...

Linus Torvalds once said, "If you deny the Index, you really deny git
itself." (February 4, 2006, Git List Archives)

E ora che conosco meglio git devo dire che Linus aveva ragione.

> > 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"

Ok, la stessa sintassi si puo' usare con git.

>   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.

OK.

Ma quello che puoi fare con git è:
modifico A
modifico B
git add A B
modifico ancora A
Decido se aggiungere questa ulteriore modifica di A all'index
commit

E in un qualunque momento posso fare:
git diff --index per vedere quello che sara' inserito nel prossimo commit.

Se ci pensi bene, l'uso dell'index ti permette moltissime modalità
lavorative differenti.

Per progetti piu' semplici si puo' comunque creare un alias e avere lo
stesso comportamento di HG (commit -a di default).

Oppure usi git-gui (mai piu' senza).

 > Aspetterò volentieri che tu abbia tempo e caffé. ;)

Sono di corsa, fammi un ping se non rispondo nei prossimi giorni :-)

Ciao,
-- 
Paolo
http://paolo.ciarrocchi.googlepages.com/
http://ubuntista.blogspot.com


Maggiori informazioni sulla lista Linux