Git o qualcos’altro ?

In questi giorni ho approfondito molto Git ed ho cominciato a comprendere realmente cosa vuol dire usare un VCS.

Sebbene nei miei progetti io non abbia ancora avuto la necessità di creare e mergere dei branch (anche se ho capito come funzionano e quali sono i concetti che ci stanno dietro).

Solo che in questo periodo mi chiedevo se fosse sensato per me usare Git, che è un VCS distribuito oppure se avessi dovuto documentarmi su qualcosa come Subversion o CVS.

Dopotutto io devo solo tener traccia dei miei sorgenti, quello che mi interessava e che potessi avere una copia remota in modo da poter uploadare i miei sorgenti altrove per

  •  Averne un backup
  • Poterli pubblicare senza troppi problemi (se, per esempio, ho spazio web sulla macchina che ospita il repository)

Ma appunto, in genere ci devo lavorare solo io o al massimo qualcun’altro. E tutti i VCS vanno bene per far lavorare altra gente sui propri sorgenti.

Prima di stasera stavo per rivolgermi a qualcos’altro, pensando che Git non fosse quello che mi serviva.

Il punto era: distribuito? Mi va bene qualcosa di normale.

Stasera però, guardando il talk tenuto da Linus Torvalds presso uno degli uffici di Google tutto mi sta sembrando chiaro.

[Per la cronaca il talk (in inglese, figata, Torvalds è divertentissimo) è reperibile a http://www.youtube.com/watch?v=4XpnKHJAok8#, ma penso che ora lo scarico]

Più che altro perchè ora sto capendo qual’è la differenza tra distribuito e centralizzato.

Sembrerà una cosa ovvia e stupida, ma voglio spiegarla.

Perchè, per esempio, io avevo usato in passato CVS per tornare indietro ad una certa versione di un repository, e facendo delle operazioni simili con Git mi era sembrato apparentemente tutto uguale. Apparentemente, appunto.

Perchè apparentemente ?

Quello che non avevo notato era il tempo che CVS impiegava a compiere l’operazione.

Con CVS, SVN e gli altri VCS centralizzati quello che succede è: c’è un server centrale (altrimenti non si chiamerebbero centralizzati) ed ogni volta che fai un commit, o un checkout, ogni volta che torni indietro nella cronologia delle modifiche di un sorgente, ogni volta che crei un branch o che ne fai il merge, ogni volta che fai un’operazione contatti il server (che tiene traccia di tutto) e il tuo client, insieme al server, fanno quello che devono fare.

Che vuol dire? Che le operazioni avvengono tutte via rete, e per lavorare con un VCS centralizzato devi essere collegato ad internet, o comunque alla rete in cui c’è l’host che contiene il server.

Ok??

 

Nei sistemi distribuiti è diverso (e grazie al cazzo, aggiungerà il lettore).

Quando un utente git «clona» (scusate la teminologia git-tiana) un repository, insieme ad esso clona tutto il repository, ovvero: codici sorgente ed altri oggetti, branch principale e tutti gli altri branch, cronologia del branch principale e di tutti gli altri branch, insomma tutto quanto.

Quindi, si può lavorare tranquillamente anche off-line. Si può sfogliare la cronologia, creare branch (che rimarranno solo in locale, se vogliamo), fare il merge dei branch creati, tornare in dietro. Insomma: si può fare tutto quello che si vuole perchè si lavora in locale.

Quando hai finito, semplicemente fai il push, cioè aggiorni la tua copia pubblica, quella a cui gli altri hanno accesso. Da lì poi, gli altri si sincronizzeranno. Quando tu sincronizzi quella copia scarichi le modifiche che hanno fatto gli altri e via dicendo.

C’è da dire inoltre, che ogni repository git è uguale a quello da cui è stato clonato: non c’è un client e un server con importanza diversa: tutte le copie del repository sono uguali. Insomma: c’è uguaglianza tra gli sviluppatori.

 

Anche l’aspetto sicurezza è garantita. Ora sarebbe lunghetta da spiegare, ma comunque rimando al video, è una vera manna di informazioni.

Torvalds mi ha convinto, anche se voglio provare Mercurial.

Perchè ? Beh… Nel video sopra-citato Torvalds ha letteralmente coperto di merda CVS, Subversion e la gente che ha scritto questi tue.

Mentre invece ha parlato abbastanza bene di Mercurial.

C’è da dire che Torvalds è un tipo che ovviamente i VCS li usa pesantemente, per tenere traccia dello sviluppo del kernel.

A quanto ho capito li ha provati un po’ tutti e poi non contento ha scritto il suo.

 

Proprio mentre finisco di scrivere sta finendo il video… Ora lo metto a scaricare.

 

Saluti, 

Elric

 

This entry was posted in Git, Programmazione. Bookmark the permalink.