Web разработка. Эффективное управление проектами (Subversion) – рабочие копии

Владимир | | Subversion.

Картинка для subversion
В прошлой статье мы начали знакомство с одной из самых популярных на сегодняшний день систем управления версиями – Subversion. На данный момент мы создали начальную структуру проекта и поместили ее в хранилище Subversion.

Напомню, для нашего проекта в хранилище создано две папки:
trunk – в ней будет находится основная ветка проекта;
и branches – для экспериментальных веток.

Теперь нужно создать рабочую копию. Для этого переходим в папку, которую будем использовать для работы с проектом, и выполняем команду:
svn checkout file:///e:/docs/svn/my_project/trunk

Обратите внимание, что к пути, указывающему размещение хранилища, мы добавили /trunk. Это означает, что мы создаем рабочую копию основной ветки проекта.

Т.к. на данном этапе проект пуст, то в папке с рабочей копией будет размещена только папка «.svn» (скрытая) со служебными файлами Subversion.

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

Добавляем файл в проект

Допустим, мы создали (в папке с рабочей копией) файл index.php и хотим добавить его в хранилище. Для этого выполняем команды:
svn add index.php
svn commit index.php -m "добавлен новый файл index.php"


Примечание. Если вы используете программы вроде TortoiseSVN, ищите в их меню команды Add и Commit. Обычно после выполнения Add на иконке файла появляется значок «+», а после выполнения Commit – галочка зеленого цвета (или что-то в этом духе). При этом открывается текстовый редактор для ввода комментария.

Еще одно примечание. Subversion не заставляет вас писать комментарии. Но если они хорошо составлены, то вы сможете легко ориентироваться в версиях ваших файлов. Поэтому не советую писать фразы вроде «Мелкие исправления» и т.п.

Предположим, вы написали в этом файле какой-то код, и хотите сохранить его в хранилище. Просто выполните команду:
svn commit index.php -m "написан заголовок страницы"

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

Для обновления файлов используется команда:
svn update index.php – обновляет до последней версии в хранилище (т.н. HEAD версия)
Можно задать номер версии явно:
svn update index.php –r 1
Эта команда позволяет вернуться к любой предыдущей версии файла (т.н. «машина времени»).

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

Примечание. Если вы работаете сами, то, скорее всего, использовать команду update будете довольно редко. Но если в разработке участвует несколько человек, то вам придется постоянно использовать эту команду для всего проекта, чтобы получить изменения, сделанные вашими коллегами.

Создание новой ветки

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

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

Именно для таких ситуаций предусмотрена возможность создания дополнительных веток.
По-сути, создание новой ветки – это просто копирование существующей в новую папку (имеется в виду папка в хранилище, а не рабочей копии).
Сделать это не сложно:
svn copy file:///e:/docs/svn/my_project/trunk
file:///e:/docs/svn/my_project/brunches/experimental
-m “Экспериментальная ветка”

Эта команда создает внутри папки brunches папку experimental и копирует в нее все содержимое trunk.

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

Теперь мы можем создать рабочую копию новой ветки
svn checkout file:///e:/docs/svn/my_project/brunches/experimental
спокойно вносить в нее изменения и сохранять их в хранилище.

Если вам понадобится вернуться к основной ветке проекта, выполните команду
svn switch file:///e:/docs/svn/my_project/trunk

Заключение

В этой статье описаны далеко не все возможности систем управления версиями. Для этого нужна целая книга (которая, кстати, входит в дистрибутив). Я просто хотел рассказать об основных возможностях этой системы.

Самое главное. Все данные находятся в хранилище. Поэтому регулярное создание его резервных копий не роскошь, а жизненная необходимость.

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

Интересно почитать

Мы можем установить алюминиевые окна, витрины, а также выполнить другие виды работ.