В прошлой статье мы начали знакомство с одной из самых популярных на сегодняшний день систем управления версиями – 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 Заключение В этой статье описаны далеко не все возможности систем управления версиями. Для этого нужна целая книга (которая, кстати, входит в дистрибутив). Я просто хотел рассказать об основных возможностях этой системы. Самое главное. Все данные находятся в хранилище. Поэтому регулярное создание его резервных копий не роскошь, а жизненная необходимость. Если у вас возникли вопросы, замечания или вы хотите поделиться своим опытом работы с такими системами. Не стесняйтесь, комментарии открыты . Интересно почитать Мы можем установить алюминиевые окна, витрины, а также выполнить другие виды работ.