Skip to Content

Зачем нужны системы контроля версий типа 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>
  • Использовать как разделитель страниц.

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

CAPTCHA
Введите текст что Вы видите на картинке. Регистр букв не важен.