W ciągu ostatnich kilku lat pracowałem z kilkoma różnymi systemami kontroli wersji. Dla mnie jedną z podstawowych różnic między nimi było to, czy wersjonują pliki indywidualnie (każdy plik ma osobną numerację wersji i historię), czy też repozytorium jako całość („zatwierdzenie” lub wersja reprezentuje migawkę całego repozytorium) .
Niektóre systemy kontroli wersji „na plik”:
- CVS
- ClearCase
- Visual SourceSafe
Niektóre systemy kontroli wersji „całe repozytorium”:
- SVN
- Git
- Bystry
Z mojego doświadczenia wynika, że systemy kontroli wersji poszczególnych plików doprowadziły tylko do problemów i wymagają poprawnej konfiguracji i konserwacji, aby poprawnie korzystać (na przykład „specyfikacje konfiguracji” w ClearCase). Miałem wiele przypadków, gdy współpracownik zmieniał niepowiązany plik i łamał coś, co idealnie byłoby izolowaną linią rozwoju.
Jakie są zalety tych systemów kontroli wersji dla poszczególnych plików? Jakie problemy mają systemy kontroli wersji „całe repozytorium”, których nie mają systemy kontroli wersji dla poszczególnych plików?