Negli ultimi anni ho lavorato con diversi sistemi di controllo delle versioni. Per me, una delle differenze fondamentali tra loro è stata la loro individuazione dei file di versione singolarmente (ogni file ha la sua numerazione e cronologia della versione separata) o il repository nel suo insieme (un "commit" o versione rappresenta un'istantanea dell'intero repository) .
Alcuni sistemi di controllo versione "per file":
- CVS
- ClearCase
- Visual SourceSafe
Alcuni sistemi di controllo versione "intero-repository":
- SVN
- Git
- Mercurial
Secondo la mia esperienza, i sistemi di controllo delle versioni per file hanno portato solo a problemi e richiedono un maggior numero di configurazioni e manutenzione per l'uso corretto (ad esempio, "specifiche di configurazione" in ClearCase). Ho avuto molte istanze di un collega che ha cambiato un file non correlato e ha infranto quello che sarebbe idealmente una linea di sviluppo isolata.
Quali sono i vantaggi di questi sistemi di controllo delle versioni per file? Quali problemi hanno i sistemi di controllo versione "whole-repository" che i sistemi di controllo versione per file non sono?