Зачем нужны системы контроля версий типа SVN?

Данный опус написан на основании собственного опыта. Для начала нужно понять что данный вопрос является философским, особенно для разработчиков полагающихся на свою память и предубеждение что они никогда не ошибаются и лучше чем машина знают что и где хранить.

У таких разработчиков на жестком диске в проектах часто можно найти следующие папки:

Project
Project_1
Project_2
Project_test
Project_01022008
Project_for_demo

Но при развитии проекта неплохо делать ревизии (сохранять состояние всего проекта) проекта и тогда у таких разработчиков появляется что то вроде вот этого

Project_arh

  • 01022008
  • 01022007
  • 01042007

Причем т.к. файлов много, проекты начинают архивировать и в таких папках лежат архивы.

Автор прекрасно разбирается что лежит в каждой из папок и зачем они нужны, разумеется полагает что он всегда будет это помнить. Так происходит в краткосрочной перспективе пока проект один и только один и автор в одиночестве работает с ним постоянно без перерывов.

Но как только автор вынужден оторваться от проекта или проектов становится несколько, то память начинает сдавать. Автор забывает какая папка к чему относиться и состояние проекта в конкретной папке.

При откате назад по ревизии автору нужно сначала выяснить какую же ревизию использовать (вряд ли он делал полное описание всех изменений ревизии), для этого нужно пройтись в ручную по ревизиям и найти нужную. Если же нужно сравнить ревизии, например что бы выяснить причину почему перестал работать проект, то нужно в ручную взять эти ревизии и искать чем они отличаются.

Ситуация усугубляется когда автор начинает заимствовать исходные коды одного проекта в другом. Нужно помнить откуда был взят файл, и если в нем будет найдена ошибка, то методом ручного копирования его нужно будет обновить в проекте - источнике.

Но вот автор заболевает, увольняется или просто не хочет больше работать над этим проектом и нужно передать проект другому. Что в этом случае делает автор? Обычно люди такого типа говорят "вот тебе все исходники, разберешься", и отдают ворох ревизий проекта, чаще всего без сопроводительной документации и разработчику который не в курсе темы.

Поставте себя на место того разработчика которому передали вести проект и этот проект нужно сдать вчера? В результате банальное наращивание функциональности проекта или поиск неисправностей и не рабочих участков проекта превращается в сплошную головную боль. Но разработчика-автора это мало волнует, он свой проект отдал и это его не касается.

Чем помогают системы контроля версий типа SVN в данном случае? Как следует из названия они берут на себя работу по управлению версиями и ревизиями исходных файлов проекта. Главное что они делают они ведут '''историю изменений файла''' не налагая на разработчика больших требований. От него только требуется аккуратно заполнять комментарии к версиям.

На основе этой истории SVN дает следующие преимущества : 

  1. Больше не нужно помнить о всех исправленных ошибках и модификациях, все это есть в SVN.
  2. Нет смысла складировать ревизии на жестком диске, все это уже лежит в репозитории SVN.
  3. Нет смысла плодить много папок проектов, с незначительными отличиями, и помнить в чем эти отличия, SVN позволяет автоматизировать и этот процесс
  4. Нет смысла переносить проекты в ручную, достаточно получить их из репозитория в новом месте.

Причем все это SVN делает '''автоматически''', т.е. не допускает ошибок, которые могут возникнуть при управлении проектом и переносе проекта в ручную.

Возвращаясь к вопросу можно сказать так SVN нужен за тем, что бы автоматизировать рутиную работу и облегчить жизнь разработчику программных комплексов.

PS. Совет : не нужно относиться к SVN так "какая то штука которую нужно использовать, потому что сказали" и при этом работать так, как разработчики описанные выше. Это глупо и не имеет никакого здравого смысла. Рассматривайте SVN как основное хранилище файлов вашего проекта, а вашу рабочую станцию как инструмент. В этом случае все встает на свои места.

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

SVN также тратит мое время

Если себя дисциплинировать и рядом с уймой архивных файлов с проектами заносить в БЛОКНОТ тезисно пункты, в которых отражать что добавил, что убрал в проекте, тогда SVN нафиг не нужен, - он больше времени займет для тех же простых действий. Главное - оставлять побольше комментариев в блокнот под каждой версией проекта и все будет гуд.

Какая глупость написана в

Какая глупость написана в комменте выше. гораздо удобнее пользоваться гитом, чем писать что-то в блокноте. блокнот - для школоты, которая не умеет пользоваться системами контроля версий

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Syntax highlight code surrounded by the {syntaxhighlighter SPEC}...{/syntaxhighlighter} tags, where SPEC is a Syntaxhighlighter options string or "class="OPTIONS" title="the title".
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <p> <span> <s> <strike> <div> <h1> <h2> <h3> <h4> <h5> <h6> <img> <map> <area> <hr> <br> <br /> <ul> <ol> <li> <dl> <dt> <dd> <table> <caption> <tbody> <tr> <td> <em> <b> <u> <i> <strong> <del> <ins> <sub> <sup> <quote> <blockquote> <pre> <address> <code> <cite> <embed> <object> <param> <strike>
  • Использовать как разделитель страниц.

Подробнее о форматировании