come funziona il controllo di versione? salva i file diff come una traccia con hash per convalidare il percorso?come funziona il controllo della versione?
risposta
Diversi VCS utilizzano approcci diversi. CVS, ad esempio, creerà un file sul server per ogni file che tu impegni. Questo è essenzialmente un file in formato RCS; CVS è solo un wrapper attorno a RCS che esegue i comandi RCS su molti file in una sottostruttura di directory (RCS può funzionare solo su singoli file).
Il file RCS contiene un elenco delle modifiche (il numero di versione, il messaggio di check e quanto è stato cambiato). Successivamente viene fornita una copia della versione corrente HEAD. Il resto dei file sono le differenze tra le versioni (long explanation).
In questo modo, CVS può tornare rapidamente la versione HEAD (che è più spesso richiesto) ed è in grado di calcolare le altre versioni.
CVS non esegue alcuna convalida; se uno dei tuoi file viene danneggiato, hai bisogno di un backup. Poiché CVS è basato su RCS, non può gestire le directory delle versioni né rintracciare i nomi. CVS e RCS usano il comando standard diff(1)
per creare le differenze.
Subversion (SVN) funziona in modo simile, ma aggiunge delle versioni di directory e rinomina. Inoltre, SVN utilizza un algoritmo di diff migliore (xdelta) che fornisce un repository più piccolo.
Partenza Eric Sinks blog series on version control.
Inoltre, Joel Spolsky ha scritto Hg Init: a Mercurial tutorial, che alla fine mi ha fatto "capire" cosa è il controllo distribuito del codice sorgente.
Ci sono più modi per scuoiare un gatto ...
Darcs è molto diverso e IMHO più intuitivo di quelli di altri ancora distribuiti MSC. C'è una guida eccellente per i principianti su come funziona: Understanding Darcs.