Git: Pro E Contro

Quando si sviluppa un software di una certa complessità è necessario tenere traccia dei cambiamenti tra varie versioni e integrare dati di altri sviluppatori. Sebbene questi compiti possano essere svolti manualmente dai progettisti (o eventualmente da un gestore/integratore) è ormai universalmente accettato che per garantire una certa qualità nel sistema di sviluppo occorre utilizzare dei software chiamati Version Control System (VCS), che si occupano di questi aspetti (e in generale di molti altri).

La storia dei VCS ai nostri giorni è ricca di capitoli: i primi furono software con lock pessimistico (come ad es. RCS) ormai quasi del tutto abbandonati, seguirono poi i primi software con lock ottimistico (ad esempio l’ancora piuttosto diffuso CVS e il suo naturale successore SVN), infine fu la volta dei VCS distribuiti, il cui esponente più popolare è, per l’appunto, git.

Va detto che esiste una sorta di guerra santa, come spesso accade in informatica, tra i sostenitori dei sistemi di controllo di versione distribuiti (e.g. git) e quelli centralizzati (e.g. svn). Non vogliamo entrare in questa diatriba, i sostenitori di entrambe le fazioni hanno argomenti a loro favore, noi presentiamo solo quali sono le caratteristiche (positive e negative) che abbiamo riscontrato nell’uso di git. Ciascuno prenderà poi le decisioni in base alle proprie esigenze e ai propri gusti.

Pro

  • Distribuito: I sistemi distribuiti sono molto più flessibili, permettendo lo sviluppo in diversi locazioni geografiche (per progetti distribuiti per natura come il kernel linux, ma anche per aziende in cui gli sviluppatori sono fuori sede). Inoltre la presenza di diversi repositori duplica i dati ed è un’ottima fonte di backup.
  • Veloce: La natura distribuita permette di non coinvolgere la rete per la maggior parte delle operazioni, tutto viene svolto localmente e quindi è veloce.
  • Dimensioni ridotte: La community di git vanta numerosi progetti che cambiando la gestione da un’altro sistema hanno visto l’occupazione dei repository notevolmente diminuita.
  • Gratuito ed Open Source: I vantaggi del software open source sono noti a tutti, ma bisogna dire che git non è l’unico VCS open source.

Rimane un’ultima cosa da aggiungere.

  • Distribuito: Se da un lato i sistemi distribuiti hanno dei vantaggi, altri non si trovano bene con questo tipo di approccio, in particolare nella gestione dei branch remoti, che puo risultare a volte un po’ macchinosa.
  • Complicato: La curva di comprensione di git è ripida, ovvero serve più tempo per familiarizzare con i concetti base, che possono risultare un po’ ostici per chi è abituato ai sistemi tradizionali.
  • Assenza di gui: Essendo un tool molto giovane gli sviluppatori si sono concentrati sulle funzionalità che spesso sono raggiungibili a riga di comando, ma manca una interfaccia grafica davvero completa (sebbene ce ne siano numerose tra cui scegliere) che posso rendere il sistema più user friendly.

Rimane un’ultimo aspetto da considerare, a nostro avviso fondamentale. Quando si lavora in un team c’è una tensione tra due forze contrastanti: da un lato siamo spinti a condividere il lavoro con una certa frequenza, per evitare operazioni di merge difficoltose, dall’altro è conveniente condividire delle modifiche stabili, in modo da non minare il lavoro degli altri, ma come è noto la stabilità richiede tempo. Con un sistema centralizzato questa tensione non è risolubile, obbligando gli sviluppatori a scendere a un compromesso. Con i sistemi distribuiti, invece, grazie all’utilizzo di repository locali, privati è possibile versare le modifiche con una certa frequenza, e condividerle su un repository pubblico soltanto quando hanno raggiunto un certo grado di stabilità. Se facciamo commit di piccoli cambiementi il sistema sarà in grado di ricostruire la storia in ogni momento, e quindi al momento della condivisione l’operazione di merge sarà molto più semplice.

Noi abbiamo ritenuto che questo aspetto fosse l’arma fondamentale dei DVCS, ma passerà ancora del tempo prima che si possa mettere la parola fine a questa diatriba.

© 2008 Ziogeek.com

Tag: