Существует мнение, что системы управления версиями предназначены исключительно для команд профессиональных программистов и бесполезны при самостоятельной разработке. В этой статье я постараюсь объяснить, почему это не так. Но, прежде всего несколько слов о самих системах управления версиями. Это программное обеспечение предназначено для облегчения работы с постоянно изменяющимися файлами. Оно обеспечивает возможность сохранения промежуточных состояний файлов, создания нескольких версий одного файла (или их набора), позволяет переносить изменения между различными версиями файлов, просматривать внесенные изменения и многое другое. Самое главное достоинство таких систем состоит в том, что из них не может исчезнуть информация. Т. е. всегда можно вернуться к однажды сохраненной версии файла, независимо от того, какие изменения были в него внесены. Рассмотрим простой пример. Допустим, вы делаете web страницу. Проект состоит из трех файлов (с разметкой, таблицей стилей и скриптами). На каком-то этапе вы получили приемлемый внешний вид, но решили немного поэкспериментировать. Естественно эти эксперименты затронут все три файла, причем изменения будут внесены в различные их части. Чтобы сохранить текущую версию проекта, вы делаете копию его файлов и экспериментируете уже с ними.
Через некоторое время у вас накапливается десяток таких копий. И тут… вы находите ошибку в скриптах. Естественно, исправить ее нужно во всех копиях. И начинается карусель: "открыть" – "найти" – "вставить" – "сохранить" – "закрыть" – "перейти в следующую папку" – "повтор". Если вы работаете в команде (даже из двух человек), то количество таких ситуаций растет как снежный ком. Потому что сюда добавляются исправления, сделанные вашим напарником. Именно для таких ситуаций и разработаны системы управления версиями. Принцип их работы довольно простой. Для хранения информации создается специальное хранилище (что-то вроде базы данных), в котором сохраняются все внесенные в файлы изменения. Естественно, сохранение происходит исключительно по вашему желанию, и возвращаться вы сможете только к сохраненным состояниям. Если вы работаете в команде, и несколько человек попытаются сохранить один и тот же файл, но с различными изменениями, система выдаст сообщение о возникновении коллизии. В этом случае разработчики договариваются между собой, какие изменения оставить и вносят их в хранилище. Но эта статья об использовании систем управления версий при индивидуальной разработке, поэтому проблемы команд мы здесь рассматривать не будем. Думаю, теории достаточно, переходим к реализации.
Выбор системы контроля версий На сегодняшний день существует множество таких систем как платных, так и бесплатных с открытым исходным кодом. Из бесплатных, наибольшее распространение получили CVS и Subversion. Последняя появилась значительно позже и изначально позиционировалась как замена CVS. В Subversion реализован ряд возможностей, отсутствующих в CVS, что делает ее более привлекательной для новых проектов. Установка и настройка Subversion Здесь все предельно просто. Качаете с официального сайта дистрибутив и запускаете инсталлятор. После установки вы сможете работать… но только через консоль. Естественно, это позволяет детально изучить работу системы, но вводить каждый раз имена файлов… мягко говоря, не очень удобно . Поэтому советую сразу скачать какой-нибудь графический клиент для Subversion. Полный их список находится здесь. Я пользовался двумя: 1) Subclipse – это плагин для Eclipse(http://www. eclipse. org/), т. е. для его использования нужна эта IDE. 2) TortoiseSVN – это более универсальная оболочка. Она встраивается в "Проводник" Windows. При этом к иконкам файлов добавляются значки, отображающие текущее состояние файла, а команды можно выполнять из контекстного меню. Теперь нужно создать хранилище Для этого создаем новую папку, например, e:\docs\svn. И, находясь в этой папке, выполняем команду: svnadmin create my_project Эта операция создаст папку "e:\docs\svn\my_project" со служебными файлами хранилища. Примечание. Если вы используете какой-нибудь клиент, ищите пункт Create Repository. Перед отправкой файлов в хранилище очень желательно определиться со структурой проекта Это, наверное, самый сложный этап для новичков (по себе знаю ). Чтобы не морочить вам голову теорией приведу пару примеров, которые должны подойти для небольших проектов. Первый пример. Используем две папки: trunk/ – для размещения законченной (стабильной) версии (ветки) проекта; branches/ – эта папка будут использоваться для экспериментов, т. е. в ней вы будете создавать папки с экспериментальными версиями проекта. Если вы решите, что какая-нибудь из этих версий должна заменить основную, то просто перенесете ее в trunk. Второй пример удобно использовать, если нужны две версии проекта, различающиеся только несколькими файлами. Например, вы создаете web сайт, использующий базу данных. Параметры подключения к этой базе на вашем компьютере и на сервере будут отличаться, но не изменять же их каждый раз вручную.
Тут удобно использовать три папки: trunk/ branches/ trunk_for_server/ – копия папки trunk для сервера (отличаются только файлы с параметрами подключения). Перед закачкой файлов на сервер вы просто "сливаете" нужные изменения из trunk в trunk_for_server. Примечание. Оба приведенных примера это только возможные варианты. Вы можете придумать свою структуру. Переходим к созданию выбранной структуры в хранилище Для этого создаем временную папку, например, e:\temp, а в ней пустые папки, соответствующие выбранной структуре. Например, если вы остановились на первом варианте:
e:\temp\trunk \branches
Теперь, находясь в папке "e:", выполняем импорт этих папок в хранилище. svn import temp file:///e:/docs/svn/my_project – m “Начальный импорт” Удаляем e:\temp. В следующей статье я покажу несколько приемов работы с созданным проектом. Интересное Панорамные лифты otis удобное средство передвижения и украшение современного здания.