Зачем нужны системы контроля версий типа SVN?
Данный опус написан на основании собственного опыта. Для начала нужно понять что данный вопрос является философским, особенно для разработчиков полагающихся на свою память и предубеждение что они никогда не ошибаются и лучше чем машина знают что и где хранить.
У таких разработчиков на жестком диске в проектах часто можно найти следующие папки:
Project
Project_1
Project_2
Project_test
Project_01022008
Project_for_demo
Но при развитии проекта неплохо делать ревизии (сохранять состояние всего проекта) проекта и тогда у таких разработчиков появляется что то вроде вот этого
Project_arh
- 01022008
- 01022007
- 01042007
Причем т.к. файлов много, проекты начинают архивировать и в таких папках лежат архивы.
Автор прекрасно разбирается что лежит в каждой из папок и зачем они нужны, разумеется полагает что он всегда будет это помнить. Так происходит в краткосрочной перспективе пока проект один и только один и автор в одиночестве работает с ним постоянно без перерывов.
Но как только автор вынужден оторваться от проекта или проектов становится несколько, то память начинает сдавать. Автор забывает какая папка к чему относиться и состояние проекта в конкретной папке.
При откате назад по ревизии автору нужно сначала выяснить какую же ревизию использовать (вряд ли он делал полное описание всех изменений ревизии), для этого нужно пройтись в ручную по ревизиям и найти нужную. Если же нужно сравнить ревизии, например что бы выяснить причину почему перестал работать проект, то нужно в ручную взять эти ревизии и искать чем они отличаются.
Ситуация усугубляется когда автор начинает заимствовать исходные коды одного проекта в другом. Нужно помнить откуда был взят файл, и если в нем будет найдена ошибка, то методом ручного копирования его нужно будет обновить в проекте - источнике.
Но вот автор заболевает, увольняется или просто не хочет больше работать над этим проектом и нужно передать проект другому. Что в этом случае делает автор? Обычно люди такого типа говорят "вот тебе все исходники, разберешься", и отдают ворох ревизий проекта, чаще всего без сопроводительной документации и разработчику который не в курсе темы.
Поставте себя на место того разработчика которому передали вести проект и этот проект нужно сдать вчера? В результате банальное наращивание функциональности проекта или поиск неисправностей и не рабочих участков проекта превращается в сплошную головную боль. Но разработчика-автора это мало волнует, он свой проект отдал и это его не касается.
Чем помогают системы контроля версий типа SVN в данном случае? Как следует из названия они берут на себя работу по управлению версиями и ревизиями исходных файлов проекта. Главное что они делают они ведут '''историю изменений файла''' не налагая на разработчика больших требований. От него только требуется аккуратно заполнять комментарии к версиям.
На основе этой истории SVN дает следующие преимущества :
- Больше не нужно помнить о всех исправленных ошибках и модификациях, все это есть в SVN.
- Нет смысла складировать ревизии на жестком диске, все это уже лежит в репозитории SVN.
- Нет смысла плодить много папок проектов, с незначительными отличиями, и помнить в чем эти отличия, SVN позволяет автоматизировать и этот процесс
- Нет смысла переносить проекты в ручную, достаточно получить их из репозитория в новом месте.
Причем все это SVN делает '''автоматически''', т.е. не допускает ошибок, которые могут возникнуть при управлении проектом и переносе проекта в ручную.
Возвращаясь к вопросу можно сказать так SVN нужен за тем, что бы автоматизировать рутиную работу и облегчить жизнь разработчику программных комплексов.
PS. Совет : не нужно относиться к SVN так "какая то штука которую нужно использовать, потому что сказали" и при этом работать так, как разработчики описанные выше. Это глупо и не имеет никакого здравого смысла. Рассматривайте SVN как основное хранилище файлов вашего проекта, а вашу рабочую станцию как инструмент. В этом случае все встает на свои места.
- блог пользователя des00
- 24367 просмотров
Новые записи в блогах
- Устранение дребезга контактов на основе вертикальных счетчиков
- Диагностика Imprecise Bus Faults в микроконтроллерах Cortex-M3/M4/M4F
- Self-powered камера
- Фоновый модулятор: беспроводная связь из ничего (перевод)
- Texas Instruments Analog Applications Journal SLYT612 "Снижение искажений в аналоговых КМОП ключах" (перевод)
- USB MSD. Часть 6. Команды SCSI (перевод)
- USB MSD. Часть 3. USB класс накопителей данных (перевод)
- Texas Instruments Application Report SBAA042 "Кодовые схемы, используемые в аналогово-цифровых преобразователях" (перевод)
- 10 принципов правильного интерфейса
- Релиз SDK на русский микропроцессор КРОЛИК
Комментарии
SVN также тратит мое время
Если себя дисциплинировать и рядом с уймой архивных файлов с проектами заносить в БЛОКНОТ тезисно пункты, в которых отражать что добавил, что убрал в проекте, тогда SVN нафиг не нужен, - он больше времени займет для тех же простых действий. Главное - оставлять побольше комментариев в блокнот под каждой версией проекта и все будет гуд.
Какая глупость написана в
Какая глупость написана в комменте выше. гораздо удобнее пользоваться гитом, чем писать что-то в блокноте. блокнот - для школоты, которая не умеет пользоваться системами контроля версий
Отправить комментарий