Sistemi di Controllo di Versione Liberi
Questi sono tutti i sistemi di controllo di versione di cui ero a conoscenza alla metà
del 2007. L'unico che uso regolarmente è Subversion. Ho poca o nessuna esperienza con la maggior
parte di questi sistemi, tranne Subversion e CVS; le informazioni qui sono prese dai loro siti web.
Vedi anche
.
CVS —
CVS è in giro da molto tempo, ed è già familiare a molti sviluppatori.
Nei suoi giorni fu rivoluzionario: fu il primo sistema di controllo di versione open source
con accesso da Internet per gli sviluppatori (per quanto ne so), e il primo ad offrire checkout
anonimi di sola lettura, il che diede ai nuovi sviluppatori un facile modo per venire coinvolti
nei progetti. CVS tiene le versioni solo dei file, non delle directory; offre la possibilità di
fare branch, mettere tag, e una buona prestazione sul lato client, ma non gestisce molto bene file grandi
o binari. Non supporto commit atomici.[Disclaimer: sono stato attivo nello
sviluppo di CVS per circa cinque anni, prima di aiutare ad iniziare il progetto Subversion per
rimpiazzarlo.]
Subversion —
Subversion fu scritto inizialmente e principalmente per essere un
rimpiazzo per CVS—cioè, per affrontare il controllo di versione circa allo stesso
modo in cui CVS lo fa, ma senza i problemi e la mancanza di feature che la maggior
parte delle volte annoiavano gli utenti di CVS. Uno degli obbiettivi di CVS è far percepire
indolore la transizione a Subversion alla gente già abituata a CVS. Non c'è spazio qui per
andare nel dettaglio delle funzionalità di Subversion; vedi il suo sito per maggiori informazioni.
[Disclaimer: sono coinvolto nello sviluppo di Subversion, ed è l'unico di questi
sistemi che uso regolarmente.]
SVK —
Anche se costruito basandosi su Subversion, SVK probabilmente assomiglia a qualcuno
dei sistemi decentralizzati sotto più di quanto lo faccia Subversion. SVK supporta lo sviluppo
distribuito, commit locali, una sofisticata fusione dei cambiamenti, e l'abilità di rispecchiare
alberi da altri sisetmi di controllo di versione non-SVK. Vedi il sito per i dettagli.
Mercurial —
Mercurial è un sistema di controllo di versione distribuito che offre,
tra le altre cose, "completo cross_indexing di file e modifiche; protocolli di sincronizzazione
HTTP e SSH efficienti per CPU e larghezza di banda; unione di branch arbitraria; interfaccia web
stand-alone integrata; [portabilità verso] UNIX,MacOs X and Windows" e altro (la precedente
lista di funzionalità è stata parafrasata dal sito web di Mercurial).
GIT —
GIT è un progetto iniziato da Linus Torvalds
per gestire l'albero del codice del kernel di Linux. All'inizio GIT era piuttosto
strettamente focalizzato sui bisogni dello sviluppo kernel, ma si è espanso oltre ed è
ora usato da progetti diversi dal kernel Linux. La sua home page dice che è ".. disegnato
per gestire progetti molto vasti con velocità ed efficienza; è usato principalmente per
vari progetti open source, tra cui si nota il kernel Linux. Git cade nella categoria degli
strumenti di gestione distribuita del codice sorgente, simile ad esempio a GNU Arch o Monotone
(o BitKeeper nel mondo proprietario). Ogni directory di lavoro di Git è un repository completo
con tutte le funzionalità di tracciamento di revisione, non dipendente dall'accesso alla rete o ad
un server centrale."
Bazaar —
Bazaar è ancora in sviluppo. Sarà un'implementazione
del protocollo GNU Arch, manterrà la compatibilità con il protocollo GNU Arch
quando evolve, e lavora con la comunità GNU Arch per ogni cambiamento di protocollo
che potrebbe essere richiesto per la facilità dell'utente.
Bazaar-NG —
Bazaar-NG (or bzr) è al momento sotto sviluppo da parte di Canonical
(). Offre una scelta tra lavoro centralizzato
o decentralizzato all'interno di un singolo progetto. Per esempio, quando sei in ufficio,
puoi lavorare su di un branch centrale condiviso; per cambiamenti sperimentali o lavoro
offline, puoi creare un branch sul tuo laptop e fare il merge più avanti.
Darcs —
"David's Advanced Revision Control System è l'ennesimo rimpiazzo di CVS.
E' scritto in Haskell, ed è usato su
Linux, MacOS X, FreeBSD, OpenBSD and Microsoft Windows. Darcs include uno script cgi,
che può essere usato per vedere i contenuti del vostro repository."
Arch —
GNU Arch supporta lo sviluppo sia distribuito che centralizzato. Gli sviluppatori
committano le loro modifiche ad un "archivio", che può essere locale, e le modifiche possono
essere mandate e prese da altri archivi quando i gestori di questi archivi vedono che vanno bene.
Così come una tale metodologia implica, Arch ha un supporto ai merge più sofisticato di CVS. Arch
permette anche di creare facilmente branch di archivi a cui non si ha l'accesso al commit. Questo
è solo un breve riassunto; vedi le pagine web di Arch per i dettagli.
monotone —
"monotone è un sistema di controllo di versione libero. fornisce un deposito di versione
semplice e transazionale sul file singolo, con un protocollo di operazione completamente disconnesso
e di efficiente sincronizzazione peer-to-peer. capisce i merge sensibili alla storicizzazione, branch
leggeri, revisione del codice integrata e test di terze parti. usa una nominazione di versione crittografica
e certificati RSA lato client. ha un buon supporto per l'internazionalizzazione, non ha dipendenze
esterne, va su linux, solaris, osx e windows, ed ha la licenza GNU GPL."
Codeville —
"Perchè l'ennesimo sistema di controllo di versione? Tutti gli altri sistemi di controllo di
versione richiedono che teniate con attenzione traccia delle relazioni tra i branch così da non dover
ripetutamente fare il merge degli stessi conflitti. Codeville è molto più anarchico. Vi permette di aggiornare
dal vostro commit ad ogni repository in ogni momento senza inutili nuovi merge."
"Codeville funziona creando un identificativo per ogni cambiamento che viene fatto,
e ricordando la lista di tutti i cambiamenti che sono stati applicati ad ogni file e l'ultimo
cambiamento che ha modificato ogni riga in ogni file. Quando c'è un conflitto, controlla per vedere se uno
dei due è già stato applicato all'altro, e se così fa vincere l'altro automaticamente. Quando c'è un
conflitto di versione non risolvibile automaticamente, Codeville si comporta praticamente nello stesso
modo di CVS."
Vesta —
"Vesta è un sistema SCM [Software Configuration Management] portabile orientato
al supporto di sviluppo di sistemi software di praticamente ogni peso, da abbastanza piccoli
(meno di 10,000 righe di codice) a molto grandi (10,000,000 righe di codice)."
"Vesta è un sistema maturo. E' il risultato di oltre 10 anni di ricerca e sviluppo al
Compaq/Digital Systems Research Center, ed è stato usato in produzione dal gruppo di microprocessori
Compaq's Alpha per oltre due anni e mezzo. Il gruppo Alpha ha avuto oltre 150 sviluppatori attivi in due
siti distanti migliaia di miglia, sulle coste est e ovest degli Stati Uniti. Il gruppo ha usato Vesta per
gestire i build con 130 MB di codice, ognuno generante 1.5 GB di dati derivati. I build fatti al sito
ad est in un giorno medio producevano circa 10-15 GB di dati derivati, tutti gestiti da Vesta. Anche
se Vesta è stato progettato con in mente lo sviluppo software, il gruppo Alpha dimostrò la
flessibilità del sistema usandolo per lo sviluppo di hardware, controllando i loro file di linguaggio di
descrizione hardware nella funzionalità di controllo di codice sorgente di Vesta e costruendo simulatori
e altri oggetti derivati nel builder di Vesta. I membri del vecchio gruppo Alpha, ora parte di Intel,
stanno continuando ad usare Vesta oggi in un progetto di microprocessore."
Aegis —
"Aegis è un sistema di gestione di configurazione software basato
su transazione. Fornisce un framework in cui un gruppo di sviluppatori
può lavorare su molte modifiche ad un programma in maniera indipendente, ed Aegis coordina
l'integrazione di questi cambiamenti nel codice principale del programma, con le minori discrepanze possibili."
CVSNT —
"CVSNT è un avanzato sistema di controllo di versione multipiattaforma. Compatibile con
il protocollo standard industriale CSV ora supporta molte nuove funzionalità. ... CVSNT è Open Source,
software libero con licenza GNU General Public License." La sua lista di funzionalità include autenticazione
attraverso tutti i protocolli standard CVS, più gli specifici di Windows SSPI e Active Directory;
supporto al trasporto sicuro, via sserver o SSPI criptato; cross-platform (va in ambienti Windows e Unix
); la versione NT è completamente integrata con il sistema Win32; il processamento MergePoint significa
mai più tag di cui fare il merge; sotto sviluppo attivo.
META-CVS —
"Meta-CVS è un sistema di controllo di versione costruito attorno a CVS.
Anche se mantiene molte delle funzionalità di CVS, incluso l'intero supporto alla reta,
è più capiente di CVS, e più facile da usare."
Le funzionalità elencate sul sito web di META-CVS include: versionamento della struttura delle
directory, gestione dei tipi di file migliorata, fare merge e branch in modo più facile per l'utente,
supporto ai link simbolici, liste di proprietà attaccate ai dati versionati, importazione di dati
di terze parti migliorata, e facile processo di upgrade da CVS.
OpenCM —
"OpenCM è progettato come un rimpiazzamento sicuro, ad alta integrità per CVS. Una lista
di funzionalità chiave può essere trovata sulla pagina delle funzionalità. Pur non essendo 'ricco
di funzionalità' come CVS, supporta alcune utili cose che mancano in CVS. In breve, OpenCM fornisce
un supporto di prima scelta per rinomine e configurazione, autenticazione crittografica e controllo
degli accessi, e branch nativi."
Stellation —
"Stellation è un avanzato ed estensibile sistema di gestione di configurazione
di software, originariamente sviluppato alla IBM Research. Mentre Stellation fornisce
tutte le funzionalità standard disponibili in ogni sistema SCM [Source Code Management, gestione di
codice sorgente, ndt], spicca per un numero di funzionalità avanzate, come la gestione del cambiamento
orientato all'attività (task oriented), versionamento di progetto consistente e branch facile, inteso
per facilitare lo sviluppo dei sistemi software da parte di ampi gruppi di sviluppatori scarsamente
coordinati."
PRCS —
"PRCS, Project Revision Control System (sistema di controllo di revisione di progetto),
è la facciata di un insieme di strumenti che (come CVS) forniscono un modo per gestire insiemi
di file e directory come un'entità, preservando le versioni coerenti dell'intero insieme. ... Il suo
proposito è simile a quello di SCCS, RCS, e CVS, ma (secondo i suoi autori perlomeno), è molto più
semplice di ognuno di questi sistemi."
ArX —
ArX è un sistema di controllo di versione che offre
funzionalità di branche e merge, verifica crittografica dell'integrità dei dati,
e la possibilità di pubblicare gli archivi facilmente su ogni server HTTP.
SourceJammer —
"SourceJammer sistema di controllo del codice e versionamento scritto in Java.
Consiste in una componente lato server che mantiene i file e la storia delle versioni, e tratta
i check-in e i check-out, eccetera e altri comandi; e una componente lato client che fa le
richieste al servere e gestisce i file sul lato client del file system."
FastCST —
"Un sistema 'moderno' che usa insiemi di modifiche invece delle revisioni dei file
e operazioni distribuite piuttosto che controllo centralizzato. Finchè avete un account di mail
potete usare FastCST. Per grandi distribuzioni avete solo bisogno di un server FTP e/o un server
HTTP o usare il comando precostruito 'serve' per fornire direttamente il vostro materiale. Tutti
gli insiemi di modifiche sono universalmente unici e hanno tonnellate di meta-data così potete
rifiutare tutto ciò che non volete prima di provarlo. Il merge è fatto confrontando l'insieme
di cambiamenti con i contenuti della directory corrente, piuttosto di provare a farne il merge
con altro insieme di cambiamenti."
Superversion —
"Superversion è un sistema di controllo di versione distritibuito multi-utente
basato su insiemi di modifiche. Vuole essere un'alternativa di robustezza industriale,
open source, alle soluzioni commerciali che sia facile da usare (o anche più facile) e
similmente potente. Infatti, una usabilità intuitiva ed efficiente è stata una delle principali
priorità nello sviluppo di Superversion fin all'inizio."