За последние несколько лет я работал с несколькими различными системами контроля версий. Для меня одним из фундаментальных различий между ними было то, являются ли они версиями файлов по отдельности (каждый файл имеет свою отдельную нумерацию и историю версий) или хранилищем в целом («коммит» или версия представляет собой снимок всего хранилища). ,
Некоторые системы контроля версий для каждого файла:
- CVS
- ClearCase
- Visual SourceSafe
Некоторые системы управления версиями с полным хранилищем:
- SVN
- Гит
- ртутный
По моему опыту, системы контроля версий для каждого файла приводили только к проблемам и требуют правильного использования гораздо большего количества конфигурации и обслуживания (например, «спецификации конфигурации» в ClearCase). У меня было много случаев, когда коллега менял несвязанный файл и ломал то, что в идеале было бы изолированной линией разработки.
Каковы преимущества этих файловых систем контроля версий? Какие проблемы существуют у систем контроля версий «всего хранилища», которых нет у систем контроля версий для каждого файла?