Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Система конкурирующих версий




Системой контроля версий

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

Под проектом понимается совокупность файлов, включающая:

· исходные тексты на различных языках программирования;

· исполняемые, ресурсные и библиотечные файлы, необходимые для сборки программного продукта;

· исходные тексты файлов справки;

· сценарии программ инсталляции;

· сопроводительная документация проекта

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

Схема контроля версий проекта

 

2. Модели версионирования

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

Модель Блокирование-Изменение-Разблокирование

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

Пример работы модели

Недостатки модели

· Требует повышенного внимания службы администрирования ввиду возможности сохранения блокировки при некорректном завершении клиентом редактирования файла

· Приводит к замедлению процесса разработки из-за частых блокировок, выполняемых и в случаях, когда в этом нет необходимости 

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

Модель Копирование-Изменение-Слияние

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

Пример работы модели

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

Система сообщила Гарри, что его файл устарел 

Пример работы модели

Гарри попросил систему обновить его копию файла А. SVN копирует измененный Салли файл А в рабочее пространство Гарри. Создается обновленный файл А с включением изменений, сделанных каждым из пользователей

 

Система конкурирующих версий

Продолжением проекта RCS стала система конкурирующих версий (Concurrent Versions System, CVS), разработанная Диком Груном (Dick Grune) в середине 1980-х годов. CVS использует архитектуру клиент-сервер, в которой вся информация о версиях хранится на сервере.Помимо обработки индивидуальных файлов CVS позволяет управлять группами файлов расположенных в директориях. CVS также позволяет вести несколько линий разработки проекта с помощью ветвей (branches) разработки . Таким образом, можно исправлять ошибки в очередной версии проекта и параллельно разрабатывать новую функциональность

В чистом виде CVS и ее клоны являются системами командной строки, поэтому для их комфортного использования необходима графическая оболочка. Для Windows в качестве такой оболочки может использоваться продукт WinCVS, распространяемый с открытым исходным кодом

Основные преимущества CVS и ее клонов состоят в

· их высокой надежности;

· доступности большого количества программных дополнений;

· наличии документации на различных языках                                            

Основными недостатками системы являются:

· невозможность сохранения версий каталогов в силу использования специфического способа представления файлов;

· отсутствие контроля за перемещением, удалением или переименованием файлов

Система Subversion

Subversion (SVN) был разработан в 2000 году по инициативе фирмы CollabNet и по сравнению с SVS:

· обеспечивает лучшее управление изменениями структуры каталогов;

· более эффективно хранит двоичные файлы;

· имеет стандартную возможность возврата к состоянию проекта на определенный момент времени

Subversion — централизованная система (в отличие от распределённых систем, таких, как Git или Mercurial), то есть данные хранятся в едином хранилище. Хранилище может располагаться на локальном диске или на сетевом сервере .

Архитектура Subversion

Модель работы

Клиенты копируют файлы из хранилища, создавая локальные рабочие копии, затем вносят изменения в рабочие копии и публикуют эти изменения в хранилище. Несколько клиентов могут одновременно обращаться к хранилищу. При сохранении новых версий используется дельта-компрессия: система находит отличия новой версии от предыдущей и записывает только их, избегая дублирования данных

 

5. Хранилище, его структура, правки. Команды SVN для работы с хранилищем.

Представляет собой последовательность фиксированных состояний размещенной в ней файловой системы Хранилище создается с помощью входящей в состав поставки Subversion утилиты SvnAdmin путем выполнения команды:                     svnadmin create <путь к репозиторию> 

Импорт в хранилище

Сразу после создания хранилище не содержит ничего, кроме пустого корневого каталога

Первоначальное заполнение хранилища осуществляется командой

                                                                                          svn import <дерево> <URL хранилища> -m “Initial import”

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

Доступ к хранилищу

Получить доступ к хранилищу Subversion можно различными способами – на локальном диске или через ряд сетевых протоколов .

соответствие разных URL-схем возможным методам доступа

Файловая система хранилища

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

На рисунке показано хранилище, содержащее два программных проекта: calc и paint

 

Правки

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

Последовательность правок

Глобальность правок

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

Просмотр списка файлов

Список файлов того или иного проекта из репозитория можно просмотреть с помощью команды

                                                                                          svn list <URL каталога хранилища> -v

Флаг –v указывает на необходимость вывода полной информации о правке, включая ее номер, дату создания и т.д.

Смешивание правок

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

4 calc/Makefile

 4 calc/integer.c

4 calc/button.c

На данный момент рабочий каталог полностью соответствует правке 4 в хранилище

Допустим, что разработчик внес изменения в файл button.c и зафиксировал эти изменения.При отсутствии других фиксаций будет создана правка под номером 5, и теперь его рабочая копия выглядит следующим образом

4 calc/Makefile

4 calc/integer.c

5 calc/button.c

Предположим, что после этого второй разработчик фиксирует изменения integer.c, создавая правку 6

Если первый разработчик актуализирует свою рабочую копию, то она станет выглядеть так

 6 calc/Makefile

 6 calc/integer.c

6 calc/button.c

Изменения, внесенные в integer.c вторым разработчиком будут отражены в рабочей копии первого разработчика, как и его собственные, сделанные в файле button.c

Текст Makefile в правках 4, 5 и 6 идентичен, однако Subversion проставляет номер правки 6 для рабочей копии Makefile, чтобы показать что файл не устарел . Таким образом, после выполнения обновления первым разработчиком его рабочей копии, она будет полностью соответствовать текущему состоянию хранилища

Фиксация локальных изменений

После внесения изменений в файл рабочей копии разработчик может зафиксировать внесенные изменения, выполнив команду

                                                                                         svn commit <параметры> <путь к файлу>

Например

                                                                                         svn commit -F msg foo.c

В результате в хранилище создается новая правка

 

 

6.Понятия рабочей копии и служебного каталога. Команды SVN для работы с рабочими копиями.

Рабочие копии

Рабочая копия – это моментальный «снимок» состояния хранилища или некоторой его части, сохраненный на компьютере клиента. Рабочая копия представляет собой обычное дерево каталогов, содержащее набор различных файлов. Файлы рабочей копии могут произвольным образом редактироваться разработчиком, оставаясь недоступными другим участникам группы. После внесения изменений в файлы рабочей копии и проверки их корректности разработчик может записать свою версию в хранилище, т.е. опубликовать

Если другие участники проекта производили редактирование тех же файлов и уже опубликовали свои изменения, Subversion предоставляет возможность для объединения этих изменений с рабочей копией данного разработчика

Служебный каталог

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

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

Для актуализации рабочей копии используется команда

                                                                                          svn update <путь к рабочей копии>

При этом обновляются только те файлы, в которые вносились изменения между обновлениями

Служебный каталог

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

· на какой правке основан рабочий файл (это называется рабочая правка файла);

· временная (ударение на последний слог) метка, определяющая, когда рабочая копия последний раз обновлялась из хранилища

 

 










Последнее изменение этой страницы: 2018-05-27; просмотров: 182.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...