Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / Система управления версиями.ppt
Скачиваний:
107
Добавлен:
10.09.2019
Размер:
1.48 Mб
Скачать

Система контроля версий (VCS) умеет:

-восстанавливать старые версии;

-синхронизировать между собой самые новые версии.

Есть много разных VCS:

-Perforce, Microsoft Visual Sourcesafe (платные),

-CVS, Subversion (бесплатные).

Мы будем говорить о Subversion (система управления версиями), известной также как svn (по названию программы-клиента для командной строки, входящей в состав программного пакета).

Это клиент-серверная система, состоящая из:

-сервера (к примеру, svnserve), на котором есть репозиторий (repository) - база данных,

-клиентских машин, на которых есть рабочие копии (working copies).

Хранилище (репозиторий)

Subversion является централизованной системой для совместного использования информации.

Хранилище –центр хранения данных содержит информацию в форме

дерева файлов.

Любое количество клиентов подключается к хранилищу и читает или записывает эти файлы.

Записывая данные, клиент делает информацию доступной для остальных; читая данные, клиент получает информацию от других.

Типичная клиент/серверная система

Хранилище является разновидностью файл-сервера, однако не совсем обычного.

Хранилище Subversion запоминает каждое внесенное изменение:

-любое изменение любого файла,

-изменения в самом дереве каталогов, такие как добавление, удаление и реорганизация файлов и каталогов.

При чтении данных из хранилища клиент обычно видит только последнюю версию дерева файлов.

Клиент также имеет возможность просмотреть предыдущие состояния файловой системы.

Вопросы типа

«Что содержал этот каталог в прошлую среду?», «Кто был последним, изменявшим этот файл, и какие вносились изменения?»

являются основополагающими для любой системы управления версиями — системы, разработанной для записи и отслеживания изменений информации во времени.

Назначение

SVN – открытая система управлениями версиями файлов и каталогов проектов с центральным хранилищем (репозиторием) и сетевым доступом.

SVN предназначена для:

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

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

сопровождения нескольких версий проекта одновременно (работа с ветвями) .

История

Разработка Subversion была начата в 2000 г. по инициативе и при финансовой поддержке CollabNet Inc.

Цель проекта - заменить собой распространенную на тот момент систему Concurrent Versions System (CVS), которая ныне считается устаревшей.

Subversion реализует все основные функции CVS и свободна от ряда недостатков последней.

Основные события истории развития Subversion:

31 августа 2001 года команда разработчиков перешла с CVS на Subversion для управления собственным исходным кодом. Subversion стала «самодостаточной».

23 февраля 2004 года вышел релиз 1.0.0. К этому времени Subversion уже использовалась примерно на 1400 серверах с открытым доступом.

29 сентября 2004 года появился релиз 1.1.0. Среди основных нововведений - новый формат хранилища файлов.

21 мая 2005 года вышел релиз 1.2.0, в котором добавлена возможность блокировки файлов.

30 декабря 2005 года вышел релиз 1.3.0. Основными изменениями являются возможность устанавливать права доступа к директориям при использовании svnserve.

10 сентября 2006 года вышел релиз 1.4.0. Включены функции самовосстановления.

19 июня 2008 года вышел релиз 1.5.0. Введена базовая поддержка отслеживания слияний (merge tracking).

20 марта 2009 года вышел релиз 1.6.0. Улучшения поддержки svn:externals, обнаружение «конфликтов деревьев» (tree conflict), улучшение эффективности хранения данных в репозитории.

В феврале 2010 года проект Subversion был официально переведён под управление Apache Software Foundation (ASF).

11 октября 2011 года состоялся релиз 1.7. Основные улучшения: теперь только одна папка .svn в корне рабочей копии; ускорена работа по HTTP; добавлена утилита svnrdump; новая команда svn patch.

В настоящее время Subversion используется многими сообществами разработчиков открытого программного обеспечения.

В их числе такие известные проекты, как Apache, GCC, Free Pascal, Python, Ruby, Mono, FreeBSD, Haiku, AROS, MediaWiki.

Subversion также широко используется в закрытых проектах и корпоративной сфере.

В 2007 году независимая компания Forrester Research, сравнивая преимущества и недостатки различных систем, оценила Subversion как «единоличного лидера в категории Standalone Software Configuration Management (SCM) и сильного участника в категории Software Configuration and Change Management (SCCM)».

В качестве официальной документации позиционируется книга издательства O'Reilly Media, (http://svnbook.red- bean.com/) дописываемая авторами по мере выхода новых версий SVN.

Англоязычные версии книги описывают сейчас версии 1.6 и 1.5,

На русском языке имеются книги, описывающие версии до 1.4 включительно.

Возможности SVN

Хранение полной истории изменений отслеживаемых объектов (файлов, каталогов, символьных ссылок) в централизованном хранилище (репозитории), в том числе при изменении атрибутов («метаданных»), перемещении, переименовании и удалении

Копирование объектов с разветвлением истории - при копировании

вхранилище появляются два отдельных объекта с общей историей

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

Поддержка ветвления:

создание ветвей (копированием директорий) и работа с ними

слияние ветвей (переносом изменений)

Поддержка меток (копированием директорий)

Поддержка конкурентной (в том числе одновременной, с изоляцией транзакций) многопользовательской работы с хранилищем и, в большинстве случаев, автоматическим слиянием изменений различных разработчиков (в рабочей копии)

Возможности SVN (продолжение)

Фиксации изменений в хранилище (в том числе многообъектные) организуются в виде атомарных транзакций

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

Обеспечивается одинаково эффективная работа как с текстовыми, так и с двоичными файлами

Различные варианты доступа к хранилищу, в том числе:

непосредственный доступ на локальной файловой системе;

по собственному сетевому протоколу;

через веб-сервер по протоколу WebDAV/DeltaV.

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

Два возможных внутренних формата репозитория: база данных или набор обычных файлов

Библиотеки для языков PHP, Python, Perl, Java позволяют встроить функциональность клиента Subversion в программы, написанные на этих языках

Многоуровневая архитектура библиотек, изначально рассчитанная на клиент-серверную модель

Атеперь для «чайников»

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

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

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

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

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

Эффективные ветки и метки. SVN создаёт ветки и метки путём простого копирования проекта, используя механизм, похожий на жёсткие ссылки в файловых системах. Благодаря этому, операции по созданию веток и меток занимают немного времени

Соседние файлы в папке Лекции