Тест-драйв

Этот раздел познакомит вас с наиболее используемыми функциям на примере маленького тестового хранилища. Он, конечно, не объясняет всего - это ведь всего лишь краткое руководство. После ознакомления вам нужно запастись временем, чтобы прочесть оставшуюся часть данного руководства, которая более детально освещает функции приложения. Она к тому же объясняет как правильно настроить сервер Subversion.

Создание хранилища

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

Сначала создайте новую пустую директорию на вашем ПК. Она может быть где угодно, но в этом руководстве мы собираемся назвать её C:\svn_repos. Теперь сделайте правый клик на новой папке и в контекстном меню выберите TortoiseSVNСоздать здесь хранилище.... Хранилище, созданное внутри папки, готово к использованию. Также мы создадим внутренную структуру папок нажав кнопку Создать структуру каталогов.

Важно

Функция локального хранилища очень полезна для тестирования и оценивания, но в других случаях, за исключением случая когда вы единственный разработчик работающий за одним компьютером, вы всегда должны использовать настроенный сервер Subversion. В маленьких компаниях, конечно, заманчиво избежать работы по созданию и настройке сервера и работать просто с общим сетевым ресурсом. Никогда так не делайте! Вы потеряете данные. Прочтите «Доступ к хранилищу на сетевом ресурсе» и узнаете, почему это является плохой идеей и как создать и настроить сервер.

Импорт проекта

Сейчас у нас есть хранилище, но оно совершенно пустое в данный момент. Давайте предположим, что у меня есть набор файлов в C:\Projects\Widget1, который я хотел бы добавить. Перейдите к папке Widget1 в Проводнике и сделайте правый клик на ней. Теперь выберите пункт TortoiseSVNИмпорт..., который вызовет диалог

Рисунок 1.2. Диалог импорта

Диалог импорта


К хранилищу Subversion обращаются по URL-адресу, который позволяет нам указать хранилище где угодно в Интернете. В данном случае нам нужно указать на наше локальное хранилище, которое имеет URL-адрес file:///c:/svn_repos/trunk, и к которому мы добавляем имя нашего проекта Widget1. Обратите внимание, что после file: есть 3 слэша и везде используются прямые слэши.

Другая важная функция данного диалога - это окно Сообщение импорта, в которое вы можете добавить сообщение о том, что вы делаете. Когда вам понадобится просмотреть историю проекта, эти сообщения будут ценным подспорьем для просмотра какие изменения и когда были сделаны. В нашем случае мы напишем что-нибудь простое как «Импорт проекта Виджет1». Нажмите OK, чтобы добавить папку в ваше хранилище.

Извлечение рабочей копии

Сейчас у нас есть проект в нашем хранилище, и нам надо создать рабочую копию для текущей работы. Заметьте, что имортирование папки не превращает автоматически эту папку в рабочую копию. Для создания свежей рабочей копии в Subversion используется термин Извлечь. Мы собираемся извлечь папку Widget1 из нашего хранилища в папку для разработки называемую C:\Projects\Widget1-Dev. Создайте эту папку, затем сделате правый клик на ней и выберите пункт TortoiseSVNИзвлечь.... Затем введите URL-адрес для извлечения, в данном случае file:///c:/svn_repos/trunk/Widget1, и кликните на OK. Наша папка для разработки заполнится файлами из хранилища.

Важно

При настройках по умолчанию пункт меню "Извлечь" размещён не в подменю TortoiseSVN, а показан на верхнем уровне меню проводника. Команды TortoiseSVN, которые находятся не в подменю начинаются с SVN: SVN Извлечь...

Вы заметите что внешний вид этой папки отличается от обычной папки. У каждого файла появился зелёный флажок в левом углу. Это значки статуса TortoiseSVN, которые присутствуют только в рабочей копии. Зелёный статус означает, что файл не отличается от версии файла, находящегося в хранилище.

Внесение изменений

Можно приступать к работе. В папке Widget1-Dev мы начинаем редактировать файлы - предположим, мы вносим изменения в файлы Widget1.c и ReadMe.txt. Обратите внимание, что значки на этих файлах теперь стали красными и показывают, что изменения были сделаны локально.

Но какие были изменения? Нажмите правой кнопкой на одном из изменённых файлов и выберите команду TortoiseSVNРазличия. Запустится инструмент TortoiseSVN для сравнения файлов и покажет какие точно строки в файлах были изменены.

Рисунок 1.3. Просмотрщик изменений в файлах

Просмотрщик изменений в файлах


Ок, нас устраивают изменения, поэтому давайте обновим хранилище. Это действие называется Фиксировать изменения. Нажмите правой кнопкой на папке Виджет1-Дев и выберите команду TortoiseSVNФиксировать. Появится диалог фиксации со списком изменённых файлов и напротив каждого будет галочка. Вы можете выбрать лишь несколько файлов из списка для фиксации, но в нашем случае мы будем фиксировать изменения в обоих файлах. Введите сообщение с описанием сделанных изменений и нажмите OK. Появится диалог с прогрессом процесса фиксации файлов в хранилище и мы закончили фиксацию.

Добавление новых файлов

Во время работы над проектом, вам понадобится добавлять новые файлы - предположим вы добавили новые функции в файле Экстра.c и добавили справку в существующем файле Создатьфайл. Нажмите правой кнопкой на папке и выберите команду TortoiseSVNДобавить. Диалог добавления показывает все неверсированные файлы и вы можете выбрать те файлы, которые вы хотите добавить. Другой способ добавления файлов - это нажать правой кнопкой на самом файле и выбрать команду TortoiseSVNДобавить.

Теперь, если вы откроете папку для фиксации, новый файл будет отображаться как Добавлен и существующий файл как Изменён. Обратите внимание, что вы можете дважды нажать на изменённый файл, чтобы просмотреть какие именно изменения были сделаны.

Просмотр истории проекта

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

Рисунок 1.4. Диалоговое окно журнала

Диалоговое окно журнала


Ладно, тут я немного схитрил и взял снимок экрана из хранилища TortoiseSVN.

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

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

Отмена изменений

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

Если вы хотите избавиться от изменений, которые вы еще не успели фиксировать и восстановить нужный файл в том виде, в котором он был перед началом изменений, то выберите команду TortoiseSVNУбрать изменения. Это действие отменит ваши изменения (в Корзину) и вернет фиксированную версию файла, с которой вы начинали. Если же вы хотите убрать лишь некоторых изменения, то вы можете использовать инструмент TortoiseMerge для просмотра изменений и выборочного удаления измененных строк.

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