Главная страница
Навигация по странице:

  • Схема Метод доступа

  • 2.3. Основные возможности TortoiseSVN

  • 2.5. Извлечение рабочей копии. Глубина извлечения.

  • 2.5.1. Неполное извлечение используя «Обновить до ревизии»

  • 2.5.2. Неполное извлечение используя «Обозреватель хранилища»

  • 2.5.3. Неполное извлечение используя «Проверить на наличие изменений»

  • 2.6. Экспорт рабочей копии Subversion

  • 3. Задание на лабораторную работу Используя Subversion загрузить данные в хранилище на сервер и вести совместную работу. 4. Методика выполнения задания

  • 5. Требования к содержанию и оформлению отчета

  • 1лаба. Лабораторная работа 1 Знакомство с системой управления версиями Subversion Цель работы


    Скачать 383.77 Kb.
    НазваниеЛабораторная работа 1 Знакомство с системой управления версиями Subversion Цель работы
    Дата16.10.2022
    Размер383.77 Kb.
    Формат файлаpdf
    Имя файла1лаба.pdf
    ТипЛабораторная работа
    #737035

    Лабораторная работа №1
    Знакомство с системой управления версиями Subversion
    1. Цель работы
    Целью работы является ознакомление с основными возможностями системы управления версиями Subversion.
    2. Теоретическая часть
    Subversion – это бесплатная централизованная система управления версиями с открытым исходным кодом. Subversion позволяет управлять файлами и каталогами, а так же сделанными в них изменениями во времени.
    Рабочая копия – это собственная личная рабочая область.
    Subversion никогда не вносит изменения, сделанные другими, также как и не передает другим изменения, сделанные вами, до тех пор, пока вы сами явно не скажете это сделать.
    После того, как были произведены некоторые изменения в файлах рабочей копии, можно воспользоваться представленными в
    Subversion командами для публикации изменений, чтобы сделать их доступными другим людям, работающими над общим проектом.
    Когда другие люди публикуют, свои изменения, Subversion предоставляет команды для слияния этих изменений с файлами в рабочей папке, путем чтения из хранилища.
    Для получения рабочей копии, необходимо извлечь некоторое поддерево хранилища (термин извлечения – check out).
    Хранилища Subversion могут быть доступны посредством множества различных методов – с локального диска или через различные сетевые протоколы. Описание расположения хранилища всегда является разновидностью URL (таблица 1).
    Для URL в Subversion используется стандартный синтаксис, позволяющий указывать имя сервера и номер порта в URL. Метод доступа file:// обычно используется для локального доступа. В лабораторной работе будет использоваться доступ через протокол
    WebDAV (Web Distributed Authoring and Versioning – набор расширений и дополнений к протоколу HTTP, поддерживающий совместную работу пользователей над редактированием файлов и управление файлами на удаленных веб-серверах).

    Таблица 1
    URL для доступа к хранилищу
    Схема
    Метод доступа
    file://
    Прямой доступ к хранилищу на локальном или сетевой диске
    http://
    Доступ через протокол WebDAV к Subversion, работающем на сервере Apache
    https://
    Тоже самое, что и http://, но с шифрованием
    svn://
    Доступ через собственный протокол к серверу svnserve
    svn+ssh://
    Аутентифицируемый, зашифрованный TCP/IP доступ через собственный протокол к серверу svnserve
    2.1. Ревизии
    В рабочей копии можно изменять содержимое файла, создавать, удалять, переименовывать и копировать файлы и папки, а затем фиксировать весь набор изменений как единое целое.
    Каждая фиксация в хранилище обрабатывается как атомарная транзакция. Каждый раз при выполнении фиксации в хранилище создается новое состояние дерева файловой системы, называемое ревизией. Каждой ревизии назначается уникальный целочисленный номер, на единицу больший, чем у предыдущей ревизии. Начальная ревизия в только что созданном хранилище имеет номер ноль и не содержит ничего, кроме пустой корневой папки.
    Хранилище можно представить в виде серии деревьев.
    Представив массив номеров ревизий, начинающий с 0, и растущий слева на право. Под каждым номеров ревизии расположено дерево файловой системы, и каждое дерево – это «снимок» состояния хранилища после каждой фиксации (рис. 1).
    В отличие от других систем управления версиями, номера ревизий в Subversion относятся к деревьям целиком, а не к отдельным файлам. Каждый номер ревизии обозначает целое дерево – некоторое состояние хранилища после зафиксированного изменения.
    Важно понимать, что рабочие копии не всегда соответствуют какой-то одной ревизии в хранилище. Они могут содержать файлы из разных ревизий. Например, если первый пользователь извлекает рабочую копию из хранилища, в которой последняя ревизия имеет номер 4, а затем производит изменения в одном из файлов и фиксирует эти изменения, то при отсутствии других фиксаций
    создастся ревизия под номер 5, а в рабочей копии все неизмененные файлы будут иметь ревизию под номером 4.
    Ревизия 0
    Ревизия 1
    Ревизия 2
    Ревизия 3
    Рис. 1. Ревизии в хранилище
    Предположим, что уже второй пользователь внес изменения в другой файл и зафиксировал их под номером 6. Тогда после обновления первый пользователь получит рабочую копию (все файлы) с ревизией под номером 6.
    Таким образом, после того как выполнится полное обновление рабочей копии, она будет соответствовать точно одной ревизии в хранилище.
    В служебной папке .svn/ (обычно имеет атрибут «скрытый») для каждого файла рабочей копии Subversion записывает информацию о двух важнейших свойствах:
    1) на какой ревизии основан ваш рабочий файл;
    2) дату и время, когда локальная копия последний раз обновлялась из хранилища.
    Основываясь на этой информации, и взаимодействуя с хранилищем, Subversion может сказать, в каком из четырех состояний находится рабочий файл:

    1) не изменялся и не старел – файл не изменялся в рабочей папке, и в хранилище не фиксировались изменения этого файла со временем его рабочей ревизии.
    2) изменен локально и не устарел – файл был изменен в рабочей папке, и в хранилище не фиксировались изменения этого файла со времени его базовой ревизии.
    3) не изменялся и устарел – файл в рабочей папке не изменялся, но был изменен в хранилище.
    4) изменен локально и устарел – файл был изменен как в рабочей папке, так и в хранилище.
    Для обновления файлов рабочей копии в Subversion
    используется команда update (для клиента TortoiseSVN – «SVN
    Обновить»). Для фиксации используется команда commit (для клиента TortoiseSVN – «SVN Фиксировать»).
    2.2. Организация данных в хранилище
    Существует несколько стандартных рекомендуемых способов организации хранилища. Большинство создают папку «trunk», в которой ведется «основная линия» разработки, папку «branches», содержащую копии ответвлений, и папку «tags» для копий меток.
    Если хранилище содержит только один проект, тогда их часто создают как папки верхнего уровня.
    Поскольку эта схема часто используется, то, когда создается новое хранилище с помощью TortoiseSVN, также будет предложено создать структуру директорий.
    Если хранилище содержит несколько проектов, их часто упорядочивают по ответвлениям или по проектам. Упорядочивание по проектам имеет смысл, если проекты не сильно связаны, и каждый из них извлекается индивидуально. Для связанных проектов лучшим является упорядочивание по ответвлениям.
    2.3. Основные возможности TortoiseSVN
    Многие возможности видны только в рабочей копии
    Subversion. На рисунке 2 показаны пометки на значках и что они означают. По ссылке доступно полное описание всех значков.

    Рис. 2. Проводник с пометками на значках
    Все команды TortoiseSVN вызываются из контекстного меню
    Проводника Windows. Список доступных команд зависит от того, находятся ли файл, папка или их родительская папка под управлением версиями. Список команд показан на рисунке 3.
    Рис. 3. Контекстное меню для папки, находящей под управлением версиями

    2.4. Аутентификация
    Если выполняется подключение к хранилищу, защищенному паролем, то появится диалог аутентификации (рисунок 4).
    Необходимо ввести имя пользователя и пароль. При помощи флажка можно сделать так, чтобы эти данные сохранились в
    TortoiseSVN в папке по умолчанию
    Subversion:
    %APPDATA%/Subversion/auth.
    Рис. 4. Диалог аутентификации
    Очистить кэш аутентификации можно со страницы
    «Сохраненные данные» диалога настроек TortoiseSVN.
    2.5. Извлечение рабочей копии. Глубина извлечения.
    При извлечении можно выбрать глубину охвата, определяющую глубину рекурсии для дочерних папок.
    Существуют следующие виды глубины:
    1. Полностью рекурсивно – извлекает все дерево целиком, включая все дочерние папки и подпапки.
    2. Непосредственные потомки, включая папки – извлекает указанную папу, включая все файлы и дочерние папки, но не включая содержимое дочерних папок.
    3. Только потомки-файлы – извлекает указанную папку, включая все файлы, но не включая дочерние папки.
    4. Только этот элемент – извлекает только указанную папку.
    Не извлекает в неё файлы и дочерние папки.
    5. Рабочая копия – сохраняет глубину, указанную в рабочей копии. Этот параметр не используется в диалоге извлечения.

    6. Исключить – используется для уменьшения глубины рабочей копии после того, как папка уже была заполнена.
    Эта опция доступна только в диалоге «Обновить до ревизии».
    2.5.1. Неполное извлечение используя «Обновить до ревизии»
    Правый клик на извлеченной папке, затем «TortoiseSVN»→
    «Обновить до ревизии» и нажать «Выберите элементы…». При этом откроется диалог, который позволит отобрать или отменить выбор элементов для включения в извлечение. Этот метод достаточно гибкий, но может оказаться медленным, так как каждый элемент в папке обновляется по отдельности.
    2.5.2. Неполное извлечение используя
    «Обозреватель хранилища»
    Правый клик на извлеченной папке, затем «TortoiseSVN»→
    «Обозреватель хранилища» для вызова обозревателя. Далее необходимо найти нужную подпапку, которую нужно добавить в рабочую копию, затем выбрать «Контекстное меню» → «Обновить элемент до ревизии…».
    2.5.3. Неполное извлечение используя
    «Проверить на наличие изменений»
    В диалоге проверки на наличие изменений, сначала удерживая
    shift, нажмите на кнопку «Проверить хранилище». Все существующие в хранилище файлы и папки, которые пока еще не были извлечены, будут показаны в диалоге как «добавлен отдаленно». Далее вызовем контекстное меню и выполним команду «Обновить».
    2.6. Экспорт рабочей копии Subversion
    Иногда может понадобиться чистая копия рабочего дерева без папки .svn, например, для создания файла архива исходных кодов, или для экспорта на веб-сервер. TortoiseSVN предоставляет команду
    «TortoiseSVN» → «Экспорт…». Экспорт из источника, заданного адресом URL, и экспорт из рабочей копии, обрабатывается немного по-разному.
    Диалог экспорта не позволяет экспортировать отдельные файлы, хотя Subversion это может. Для экспорта отдельных файлов
    в
    TortoiseSVN необходимо использовать
    «Обозреватель хранилища».
    Для выведения рабочей копии из-под управления версиями можно удалить директорию .svn в корне рабочей копии.
    2.7 Блокирование
    Subversion работает лучше без блокировок, используя метод
    «Копирование-Изменение-Слияние». Однако есть несколько случаев, когда может потребоваться реализовать политику блокирования:
    1. Использование «не объединяемых» файлов – например, графические.
    2. Компания/предприятие/фирма использовала раньше блокирующую систему контроля версий, и руководство решило, что «ничего не сравнится с блокированием».
    По умолчанию ничего не заблокировано, и любой, у кого есть доступ к фиксации, может фиксировать изменения. Для блокировки необходимо вызвать контекстное меню
    «TortoiseSVN»→«Заблокировать…» и выбрать файлы в рабочей копии.
    Если заблокировать файл, то только вы сможете зафиксировать этот файл. Фиксации других пользователей будут блокироваться до тех пор, пока вы не уберете блокировку.
    Блокированный файл не может быть изменен в хранилище никаким способом.
    Чтобы посмотреть, какие блокировки были установлены вами и другими разработчиками, можно воспользоваться
    «TortoiseSVN»→«Проверить на наличие изменений». Для проверки блокировок необходимо нажать на кнопку
    «Проверить хранилище».
    Для того чтобы снять блокировку выбирается
    «TortoiseSVN»→«Снять блокировку». Также можно перехватывать чужую блокировку (используется в крайнем случае). Для этого нужно отметить флажок «Перехватить блокировку».

    3. Задание на лабораторную работу
    Используя Subversion загрузить данные в хранилище на сервер и вести совместную работу.
    4. Методика выполнения задания
    1. Изучить теоретическую часть.
    2. Модератор подгруппы создает структуру каталогов по умолчанию на сервере Subversion.
    3. Каждый из участников подгруппы создает свою рабочую копию.
    4. Все участники подгруппы, включая модератора, в основной ствол (/trunk) помещают папку «Фамилия_Группа» (например,
    Иванов_ПИ220) в которой содержится текстовый файл
    «Стихотворение.txt» в котором содержится стихотворение
    А.С. Пушкина. Использовать индивидуальный логин и пароль.
    5. Всем участникам обновить рабочие копии.
    6. Каждый из участников подгруппы вносит одно изменение в файл «Стихотворение.txt» другого участника подгруппы (в комментарии указать какое изменение было произведено).
    Выполнять по очереди с фиксацией каждого изменения.
    7. Модератор подгруппы блокирует папки других участников в стволе.
    5. Требования к содержанию и оформлению отчета
    Отчет по лабораторной работе должен содержать: а) титульный лист; б) описание хода выполнения работа; в) заключение по выполненной работе; г) ответы на контрольные вопросы.
    Контрольные вопросы
    1. Какие существуют методы доступа к хранилищу?
    2. Как обрабатывается каждая фиксация?
    3. Что содержится в служебной папке .svn?
    4. Как можно создать хранилище?
    5. В каких состояниях могут файлы и папки в Subversion?


    написать администратору сайта