Вы находитесь на странице: 1из 5

Картамышев С.В.

Научный руководитель: ст. препод.


Федотов Е.А.
Белгородский государственный технологический
университет им. В.Г. Шухова

СИСТЕМЫ УПРАВЛЕНИЯ РЕПОЗИТОРИЯМИ ПРОЕКТОВ


НА ОСНОВЕ РАСПРЕДЕЛЕННОЙ СХЕМЫ КОНТРОЛЯ
ВЕРСИЙ

Ситуация, в которой электронный документ за время своего


существования претерпевает ряд изменений, достаточно типична. При
этом часто бывает важно иметь не только последнюю версию, но и
несколько предыдущих. В простейшем случае можно просто хранить
несколько вариантов документа, нумеруя их соответствующим образом.
Но такой способ неэффективен: приходится хранить несколько
практически идентичных копий, требуется повышенное внимание и
дисциплина, и часто ведёт к ошибкам, поэтому были разработаны
средства для автоматизации этой работы.
Управление репозиториями проектов на основе распределенной
схемы контроля версий рассматривается в работах [1, 2].
Система управления версиями (от англ. Version Control System,
VCS или Revision Control System) — это программное обеспечение для
облегчения работы с изменяющейся информацией. Система управления
версиями позволяет хранить несколько версий одного и того же
документа, при необходимости возвращаться к более ранним версиям,
определять, кто и когда сделал то или иное изменение, и многое другое.
Такие системы наиболее широко используются при разработке
программного обеспечения для хранения исходных
кодов разрабатываемой программы. Однако они могут с успехом
применяться и в других областях, в которых ведётся работа с большим
количеством непрерывно изменяющихся электронных документов. В
частности, системы управления версиями применяются в САПР, обычно
в составе систем управления данными об изделии (PDM). Управление
версиями используется в инструментах конфигурационного управления
(Software Configuration Management Tools).
Каждая система управления версиями имеет свои
специфические особенности в наборе команд, порядке работы
пользователей и администрировании. Тем не менее, общий порядок
работы для большинства VCS совершенно стереотипен. Здесь
предполагается, что проект, каким бы он ни был, уже существует и на
сервере размещён его репозиторий, к которому разработчик получает
доступ.
Системы подразделяются на распределенные и не распределенные.
В не распределенных системах есть одно централизованное хранилище.
Вся история изменений храниться на одном компьютере.
Распределенные системы используют распределённую модель вместо
традиционной клиент-серверной. Они, в общем случае, не нуждаются в
централизованном хранилище: вся история изменения документов
хранится на каждом компьютере, в локальном хранилище, и при
необходимости отдельные фрагменты истории локального хранилища
синхронизируются с аналогичным хранилищем на другом компьютере.
В некоторых таких системах локальное хранилище располагается
непосредственно в каталогах рабочей копии.
Распределенные системы более предпочтительнее, т.к. они более
гибкие и значительно большая автономия отдельного рабочего места. К
таким системам относятся: Mercurial, Git. Нераспределенной системой
являются Subversion (SVN). Mercurial считается более простой в
освоении системой, чем, например, git.
Система Mercurial написана на Python, хотя чувствительные к
производительности части (например, своя реализация diff) выполнены
в качестве модулей-расширений на C. Mercurial первоначально была
написана для Linux, позже портирована под Windows, Mac OS X и
большинство Unix-систем. Репозитории Mercurial управляются при
помощи утилиты командной строки hg, но есть и GUI–интерфейсы.
Наряду с традиционными возможностями систем контроля версий,
Mercurial поддерживает полностью децентрализованную работу
(отсутствует понятие основного хранилища кода), ветвление (возможно
вести несколько веток одного проекта и копировать изменения между
ветками), слияние репозиториев (чем и достигается «распределённость»
работы). Обмен данными между репозиториями поддерживается через
HTTP/HTTPS, SSH и вручную при помощи упакованных наборов
изменений. Утилита hg обладает компактным интерфейсом.
Важным аспектом является то, что в основном, малые и большие
компании хотят чтобы исходный код своих проектов хранился только у
них, либо на их серверах. Что и не удивительно, никто не хочет
раскрывать свои секреты, и это отличный способ обезопасить свои
данные.
Но, к сожалению, что git, что mercurial не предоставляют простого
и удобного графического интерфейса для управления своими
репозиториями.
Мир не стоит на месте, и несколько компаний уже разработали
такие интерфейсы. Давайте рассмотрим и оценим самые популярные из
них: GitHub, Bitbucket, Rhodecode, GitLab, HgLab и недавно
разработанный HgLens. [3-5] Для оценки, был использован самый
простой метод поддержки принятия решения – это «метод анализа
иерархии». Итак. Цель мы получили – выбрать ПО. Далее необходимо
выбрать критерии, по которым и будем оценивать программные
продукты. Расположим их в порядке важности:
1. Хранение кода на своем сервере
2. Кроссплатформенность
3. Удобство интерфейса
4. Стоимость (для предприятия)
Стоимость (для предприятия) подразумевает возможность
создания 100 и более пользователей и 100 приватных репозиториев.
Реализация принципа идентификации и декомпозиции.
Структуру задачи можно представить в виде иерархии (рис. 1):

Рис 1. Иерархия
Цель:
1. Выбор ПО
Критерии:
2. Хранение кода на своем сервере
3. Кроссплатформенность
4. Удобство интерфейса
5. Стоимость (для предприятия)
Альтернативы:
6. GitHub
7. Bitbucket
8. Rhode code
9. GitLab
10. HgLab
11. HgLens
Реализация принципа дискриминации и сравнительных
суждений. Анкета предпочтений ЛПР (эксперта)
Шкала важности критериев:
1 - равная предпочтительность
3 - средняя степень предпочтительности
5 - умеренно-сильное предпочтение
2, 4, 6 - промежуточные решения
На рисунке 2 показано процентное соотношение важности
критериев относительно выбранной цели.

Рис 2. Результаты оценки критериев относительно цели

Анализ полученных результатов. Для оценки альтернатив


используется программный продукт «Expert Choice 2000». Глобальные
приоритеты альтернатив представлены на рисунке 3.

Рис 3. Глобальные приоритеты


По результатам исследования видно, что по данной оценки
критериев лучшей альтернативой является – HgLens. Данный продукт
разработан фирмой Sijeko. Получить полную информацию о данном
продукте можно на официальном сайте – http://hglens.sergks.ru/.

Библиографический список

1. Mercurial: Полное руководство [Электронный ресурс]. – Режим


доступа: http://bacher09.org/hgbook/ru/html –Mercurial: Полное
руководство. – (Дата обращения: 16.05.2015).
2. Репозитории - HgLens [Электронный ресурс]. – Режим доступа:
http://zelo.sijeko.net/hglens – Репозитории - HgLens. – (Дата обращения:
16.05.2015).
3. GitLab [Электронный ресурс]. – Режим доступа:
https://about.gitlab.com – Create, review and deploy code together | Better
than GitHub | GitLab. – (Дата обращения: 16.05.2015).
4. Bitbucket [Электронный ресурс]. – Режим доступа:
https://bitbucket.org/account/user/sergKs/plans – Pricing for Git and
Mercurial repo hosting for Bitbucket by Atlassian. – (Дата обращения:
16.05.2015).
5. Михайлов Н.В., Поляков В.М. Расширение функциональных
возможностей банковских информационных систем с применением
технологий интеллектуальных агентов // Вестник БГТУ им. В.Г.
Шухова. 2011. №3. С. 155-158.

Вам также может понравиться