За последние несколько лет я работал с несколькими различными системами контроля версий. Для меня одним из фундаментальных различий между ними было то, являются ли они версиями файлов по отдельности (каждый файл имеет свою отдельную нумерацию и историю версий) или хранилищем в целом («коммит» или версия представляет собой снимок всего хранилища). ,
Некоторые системы контроля версий для каждого файла:
- CVS
- ClearCase
- Visual SourceSafe
Некоторые системы управления версиями с полным хранилищем:
- SVN
- Гит
- ртутный
По моему опыту, системы контроля версий для каждого файла приводили только к проблемам и требуют правильного использования гораздо большего количества конфигурации и обслуживания (например, «спецификации конфигурации» в ClearCase). У меня было много случаев, когда коллега менял несвязанный файл и ломал то, что в идеале было бы изолированной линией разработки.
Каковы преимущества этих файловых систем контроля версий? Какие проблемы существуют у систем контроля версий «всего хранилища», которых нет у систем контроля версий для каждого файла?
источник
Ответы:
По моему опыту, их нет: VCS с "полным хранилищем" строго доминирует над VCS "на файл".
источник
Каждый файл имеет преимущество, когда вы строите линейки продуктов (несколько программных продуктов) из одного и того же хранилища.
В некоторых средах заключения договоров с клиентами требуется подтверждение того, что в их отбрасывании кода есть только те изменения, которые они хотели, а не другие изменения. Это довольно легко, если номера версий файлов все еще одинаковы.
И это не случайный пример, который я вытащил из воздуха.
Это произошло в прошлый раз, когда я отправлял обновления программного обеспечения в армию США для системы, которую они приобрели в большом количестве у моего предыдущего работодателя. Долларовая стоимость контрактов измерялась долями в миллиарды долларов (тогда, когда доллары США стоили намного больше)
Так что это помогает несколько раз.
Как ни странно: там, где я сейчас работаю, мы отправляем каждому клиенту также разные материалы ... (И это не то, что я решил, если вам интересно).
Я подозреваю, что это гораздо чаще встречается в оборонном / аэрокосмическом пространстве, чем в термоусадочной пленке или веб-приложениях.
источник
git
Вы можете даже различать автора и коммиттера, так что вы можете хранить «проверенный» репозиторий, в котором вы знаете как создателя патча (автора), так и аудитора (коммиттера). Предоставьте нам примерную ситуацию, и я переверну свою -1.Нет никакого преимущества для управления версиями каждого файла.
Эти недостатки , с другой стороны, многочисленны и проявляются.
источник
Я мог бы сказать, что системы контроля версий «на файл» не имеют каких-либо явных преимуществ, кроме реализации VCS. Кодеры VCS были бы счастливы кодировать, когда это было «для каждого файла». Я согласен с тем, что это возникло исторически.
источник
Нет никакого преимущества в подходе к файлу, когда у вас есть связанные файлы. Что является наиболее распространенным случаем в настройках разработки.
В некоторых особых случаях - / etc или. файлы в вашем домашнем каталоге в Unix - единственные, которые у меня обычно есть - вы обрабатываете (в основном) несвязанные файлы. И тогда наличие системы, которая настаивает на синхронизации несвязанных изменений, может быть неприятным.
источник