Subversion ( SVN) e il Concurrent Versions System ( CVS) sono due dei sistemi di controllo di versione più conosciuti e ampiamente usati utilizzati per gestire le centinaia di documenti che esistono nel progetto tipico di programmazione . Entrambi, a modo loro , permettono un intero team di programmatori di lavorare sugli stessi file , riducendo al minimo il tempo e lo sforzo necessario per unire le modifiche , ma sono molto diversi a come funzionano. Formato di memoria
CVS memorizza tutti i file del progetto in una serie di ramificazione di cartelle nel file system . D'altra parte , SVN memorizza i file in un database : o BerkleyDB o FSFS . Questo rende CVS più lento di SVN , ma rende anche in modo che i file CVS possono essere recuperati in un disastro utilizzando solo strumenti ordinari file manager come Esplora risorse di Windows o la shell BASH . Banche dati SVN possono essere danneggiati , e sono necessari strumenti speciali per recuperare i file dal repository quando questo accade .
Transazioni
CVS progetti memorizza su un file -by - file di base . Questo rende il sistema un po ' più semplice, come il programmatore può check-in e out singoli file , ma ha un pessimo effetto collaterale . I programmatori tendono a non fare modifiche a un solo file. Piuttosto , le modifiche a un file richiedono piccole modifiche ad altri. Con CVS , è possibile per un problema di rete a causa di alcuni dei file modificati per essere aggiornati sul repository , potenzialmente rompere la compilazione e causando una grande confusione sulla squadra se il problema non e 'colto immediatamente . SVN impegna file come un progetto e lo fa utilizzando un concetto di "transazione" : o tutte le modifiche sono impegnati con successo al server , o nulla si è impegnata
Tipi di file
.
CVS è stato progettato per trattare solo con i dati di testo ( come normalmente si trova nel codice sorgente) . Tuttavia , è un programma di programmazione rara che non include almeno alcuni dati non di testo , come ad esempio le icone grafiche , puntatori del mouse personalizzati e loghi . CVS possono essere modificati per trattare i dati non testuali , ma SVN supporta tutti i tipi di file direttamente senza alcuna altra modifica o personalizzazione .
Rami
CVS , ogni file viene assegnato automaticamente il proprio numero di versione . Quando il progetto viene estratto, la versione più recente di ogni file viene fornito per il programmatore . In SVN , l'intero progetto ha una versione . Anche se i file non vengono mai duplicati inutilmente sul server ( per risparmiare spazio ) , l'interfaccia fornita per l'utente è che ogni commit mai fatto per il server è immediatamente accessibile a loro per il numero di versione , senza dover specificare la data di realizzazione o numeri di tag .