Контроль версий Subversion в Delphi

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

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

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

Состоит система из сервера контроля версий — репозитория (хранилища — места, где хранятся и поддерживаются какие-либо данные.), который может находиться на той же машине на которой идет разработка так и на сервере в локальной сети или даже в интернете. А так же клиентов которые подключаются к репозиторию для экспорта, импорта и обновления информации.

Как это работает на практике? Давайте посмотрим на примере уже настроенной системы! Представим что в команде у нас 2 человека Сергей и Юля. Работают над проектом состоящим из трех текстовых документов: Doc1.txt, Doc2.txt и Doc3.txt. У каждого файла ревизия равена двум. Для начала работы Сергею и Юле нужно создать «рабочую копию» проекта — это просто скопировать из репозитория в любой выбранный каталог проект. И каждый участник проекта начинает вносить изменения у себя в рабочей копии. Допустим Сергей переписал файл Doc1.txt и изменил начало файла Doc2.txt, а Юля переписала файл Doc3.txt заново и изменила конец файла Doc2.txt. По окончанию работы Сергей копирует измененные файлы из рабочий копии в репозиторий. При копировании номер ревизии Doc1.txt, Doc2.txt увеличивается на один и становиться равным трем. После начинает копировать Юля, файл Doc3.txt копируется и увеличивается его ревизия до трех, а вот файл Doc2.txt уже был изменен Сергеем, его нельзя просто так заменить! И тут вход идет механизм решения конфликтов. Система контроля версий сравнивает файл с изменениями Сергея который уже в репозитории и файл с изменениями Юли. Но так как изменения были внесены хоть и в один файл но в разные его части, которые не затрагивают друг друга, то система просто вносит изменения Юли в Doc2.txt с изменениями Сергея и опять увеличивает ревизию до четырех. Если бы изменения в файле пересекались то система бы предложила решение этого вопроса пользователю (более подробно об этом читайте на просторах интерната). Таким образом мы получаем рабочий проект с внесенными одновременно изменениями и Сергеем и Юлией.

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

Реализаций систем контроля версий много, есть коммерческие есть свободно распространяемые. Мы же остановимся на Subversion, также известная как «SVN» — свободная централизованная система управления версиями, представляет собой систему общего назначения, официально выпущенная в 2004 году (более подробно можно почитать тут).

А теперь давайте приступим к настройке системы. Архитектура будет следующей: выделенный сервер под управлением Windows на котором будет наш репозиторий, клиент — компьютер с настроенными для работы Delphi и Eclipse (количество клиентов не ограничено).

Настройка сервера осуществляется очень просто, скачиваем дистрибутив VisualSVN Server Standard Edition (на момент написания статьи версии 2.5.4) и запускаем установку на нашем сервере как любое другое приложение. Установка:первый этап — согласие принять лицензионное соглашение, второй этап (смотрите рисунок)

Установка VisualSVN Server

На этом этапе выбираем режим установки: консоль + сервер или просто консоль (предполагается что сервер уже где то установлен). Выбираем первый пункт, консоль + сервер. Жмем»Next». На следующем этапе выбираем куда будет установлен наш VisualSVN Server и самое важное в поле «Repositories» указываем путь до каталога где будет находиться сам репозиторий.

Установка VisualSVN Server

Совет: Папку с репозиторием располагайте на диске с большим количеством свободного места. Хранение всех версий проекта потребует свободные гигабайты.

Если вы будете подключаться к репозиторию из Интернета то желательно поставить галочку «Use secure connection», что позволит шифровать трафик. Порт для подключения указываем в поле «Server Port», желательно выбрать свободный порт с номером более 1000, что бы избежать конфликтов с другими программами. В поле «Authentication» оставить все как есть — это позволит использовать аутентификацию VisualSVN сервера а не Windows. Жмем»Next». Если порт уже занят появится сообщение:» The specified TCP port is occupied by another service. Please stop that service or use another port.», значит надо сменить номер порта. На следующем этапе жмем «Install» и наш сервер установиться.

После установки нам нужно будет создать репозиторий и пользователя для возможности подключения к нему, приступим. Запускаем консоль управления сервером с рабочего стола, она разделена на 2 части с лева дерево настроек VisualSVN Server (Local) а справа рабочая область. Для создания пользователя нам надо «щелкнуть» правой кнопкой мыши по папке «Users» и выбрать первый пункт меню «Ceate User…». В открывшемся окне пишем имя пользователя в поле «User name:», в оставшиеся два поля придумываем и вводим пароль создаваемого пользователя. Жмем «Ок», пользователь создан. Теперь создаем репозиторий, «щелкаем» правой кнопкой мыши по «Repositories», выбираем пункт меню «Create New Repository». Откроется окно в котором надо дать имя репозиторию, назовем «Test» и поставим галочку «Create default structure» — эта возможность автоматически создаст 3 каталога в нашем тестовом репозитории, а именно: trunk, branches,tags (ствол, ветвление, метка). Теперь если раскрыть список»Repositories» то в нем мы увидим наш»Test».

Теперь давайте настроим нашу среду Embarcadero RAD Studio XE — далее Delphi (думаю различия с другими версиями будут минимальны). Для начала откроем Delphi и создадим новый проект и сохраним его в любом каталоге (этот каталог и будет нашей «рабочей копией»). Так проект у нас есть, теперь надо настроить подключение к репозиторию. Для этого надо в менеджере проектов Delphi «щелкнуть» по нашему проекту правой кнопкой мыши и выбрать пункт «Add to Version control», откроется вкладка:

Настройка SVN в Delphi

Теперь самое главное нам надо указать верно «URL of repository» (путь до нашего репозитория «Test»).

https://192.168.1.1:8443/svn/Test/trunk/

Расшифровывается так: Протокол — https (шифрованный), машина на котором находится репозиторий — 192.168.1.1, порт что мы должны были указать при установке VisualSVN — в моем случае 8443, ну и наконец папка «trunk» в репозитории «Test». Ниже видны файлы которые будут импортированы в репозиторий, по умолчанию выделены все файлы проекта. В поле «Import Comment» записываем комментарий. Жмем кнопку «Import» и наш проект будет импортирован, но предварительно Delphi нас спросит об согласии установить сертификат безопасности если мы как в примере работаем в зашифрованном режиме и после спросит логин пароль для доступа к репозиторию (его мы указывали на этапе настройки VisualSVN сервера). Теперь Delphi у нас связан с VisualSVN сервером. Для работы с репозиторием надо кликнуть правой кнопкой мыши по проекту и выбераем пункт меню «Subversion», в подменю будут все команды нужные для работы с репозиторием:

- Commit — Атомарная запись всех изменений в репозиторий с увеличением номера ревизии.

- Update — Обновление «рабочей копии» до последней ревизии из репозитория.

- Show Log — Посмотреть историю всех изменений в репозитории.

- Browse Repository — Файловый менеджер, который показывает содержимое в репозитории (можно выбрать любую ревизию - вернуться в прошлое ).

При записи или обновлении Delphi будет спрашивать какие именно файлы записать/обновить и предлагать записать комментарий. Советую писать комментарии, это помогает после при необходимости читать логи.

Ну и напоследок, у вас есть репозиторий и проект в нем, вам надо открыть его. Идем «File -> Open From Vercion Control», откроется окно в котором нужно указать в поле «URL of repository» - путь до нашего репозитория «Test» (аналогично тому как мы делали при экспорте проекта в репозиторий), а в поле «Destination» — укажите путь до локальной папки в которой будет находиться «рабочая копия». В поле «Revision» можно указать ревизию для загрузки и работы с ней.

Еще хотелось бы добавить пару слов о структуре проекта. Можете использовать любую структуру но общепринято использовать репозиторий с тремя корневыми директориями: trunk, branches, tags (ствол, ветвление, метка). Основной проект лежит в директории trunk (ствол).


23.01

Система планирования MS Project


29.01


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: