Обзор современных систем контроля версий

Сущность системы управления версиями. Популярные системы контроля версий, основные требования при их разработке. Недостатки и достоинства Bazaar, характеристика систем управления параллельными версиями. Распределенная система контроля версий Mercurial.

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 11.03.2019
Размер файла 26,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

2

Размещено на http://www.allbest.ru/

Обзор современных систем контроля версий

Яковлева Е.А.

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. ЧТО ТАКОЕ СИСТЕМА УПРАВЛЕНИЯ ВЕРСИЯМИ И ЗАЧЕМ ОНА НУЖНА

2. ПОПУЛЯРНЫЕ СИСТЕМЫ КОНТРОЛЯ ВЕРСИЙ

2.1 GIT

2.1.1 Достоинства Git

2.1.2 Недостатки Git

2.2 SVN

2.2.1 Достоинства SVN

2.2.2 Недостатки SVN

2.3 Mercurial

2.3.1 Достоинства Mercurial

2.3.2 Недостатки Mercurial

2.4 CVS

2.4.1 Достоинства CVS

2.4.2 Недостатки CVS

2.5 Bazaar

2.5.1 Достоинства Bazaar

2.5.2 Недостатки Bazaar

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

ВВЕДЕНИЕ

Ситуация, когда электронный документ за время своего существования претерпевает ряд изменений, достаточно типична. При этом часто бывает важно иметь не только последнюю версию, но и несколько предыдущих. В простейшем случае, можно просто хранить несколько вариантов документа, соответствующим образом их нумеруя. Но такой способ неэффективен (приходится хранить несколько практически идентичных копий), требует много внимания и дисциплины и часто ведёт к ошибкам. Поэтому были разработаны средства для автоматизации этой работы [4].

Системы контроля версий (система управления версиями) стали неотъемлемой частью жизни не только разработчиков программного обеспечения, но и всех людей, столкнувшихся с проблемой управления интенсивно изменяющейся информацией, и желающих облегчить себе жизнь. Вследствие этого, появилось большое число различных продуктов, предлагающих широкие возможности и предоставляющих обширные инструменты для управления версиями [6].

1. ЧТО ТАКОЕ СИСТЕМА УПРАВЛЕНИЯ ВЕРСИЯМИ И ЗАЧЕМ ОНА НУЖНА

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

Такие системы наиболее широко используются при разработке программного обеспечения для хранения исходных кодов разрабатываемой программы. Однако они могут с успехом применяться и в других областях, в которых ведётся работа с большим количеством непрерывно изменяющихся электронных документов [4].

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

Кроме того, издержки на всё это будут очень маленькими [5].

2. ПОПУЛЯРНЫЕ СИСТЕМЫ КОНТРОЛЯ ВЕРСИЙ

Название

Год создания

1. GIT

2005

2. SVN (Subversion)

2000

3. Mercurial

2005

4. CVS (Concurrent Versions System)

1990

5. Bazaar [2]

2007

2.1 GIT

Git -- мощная и сложная распределенная система управления версиями. Понимание всех возможностей GIT открывает для разработчика новые горизонты в управлении исходным кодом.

Главное отличие Git'а от любых других СКВ (например, Subversion и ей подобных) -- это то, как Git смотрит на свои данные. В принципе, большинство других систем хранит информацию как список изменений (патчей) для файлов. Эти системы (CVS, Subversion, Perforce, Bazaar и другие) относятся к хранимым данным как к набору файлов и изменений, сделанных для каждого из этих файлов во времени [3].

Основные требования при разработке системы Git были следующими:

Скорость

Простота дизайна

Поддержка нелинейной разработки (тысячи параллельных веток)

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

Возможность эффективной работы с такими большими проектами как ядро Linux (как по скорости, так и по размеру данных).

2.1.2 Достоинства Git

Надежная система сравнения ревизий и проверки корректности данных.

Гибкая система ветвления проектов и слияния веток между собой.

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

Высокая производительность и скорость работы.

Удобный и интуитивно понятный набор команд.

Множество графических оболочек.

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

Широкая распространенность, легкая доступность и качественная документация.

Гибкость системы позволяет удобно ее настраивать и даже создавать специализированные пользовательские интерфейсы на базе Git.

Универсальный сетевой доступ с использованием протоколов http, ftp, rsync, ssh и других [1].

2.1.3 Недостатки Git

Unix - ориентированность. На данный момент отсутствует официальная полноценная реализация Git, совместимая с другими операционными системами, такими как Windows, Mac OS и тому подобные.

Возможные (но чрезвычайно низкие) совпадения хеш - кода отличных по содержанию ревизий.

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

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

2.2 SVN

Subversion - это бесплатная централизованная система управления версиями с открытым исходным кодом, созданная в 2000 году на основе технологии клиент-сервер.

Она обладает всеми преимуществами CVS и решает основные ее проблемы

(переименование и перемещение файлов и каталогов, работа с двоичными файлами и т.д.). Часто ее называют по имени клиентской части - SVN.

Subversion позволяет управлять файлами и каталогами, а так же сделанными в них изменениями во времени. Это позволяет восстановить более ранние версии данных, даёт возможность изучить историю всех изменений. Благодаря этому многие считают систему управления версиями своего рода «машиной времени»[7].

Принцип работы с Subversion очень походит на работу с CVS. Клиенты копируют изменения из репозитория и объединяют их с локальным проектом пользователя. Если возникают конфликты локальных изменений, либо изменений, сохраненных в репозитории, то такие ситуации разрешаются вручную. Затем в локальный проект вносятся необходимые поправки, и полученный результат сохраняется в репозитории.

При работе с файлами, не позволяющими объединять изменения, может использоваться следующий принцип:

Файл скачивается из репозитория и блокируется (запрещается его скачивание из репозитория).

Вносятся необходимые изменения.

Загружается файл в репозиторий и разблокируется (разрешается его скачивание из репозитория другим клиентам).

Во многом, из-за простоты и схожести в управлении с CVS, но в основном, из-за своей широкой функциональности, Subversion с успехом конкурирует с CVS, а в некоторых позиция даже вытесняет.

2.2.1 Достоинства SVN

Система команд, схожая с CVS (хотя некоторые пользователи считают это минусом).

Поддерживается большинство возможностей CVS.

Разнообразные графические интерфейсы и удобная работа из консоли.

Отслеживается история изменения файлов и каталогов даже после их переименования и перемещения.

Высокая эффективность работы, как с текстовыми, так и с бинарными файлами.

Встроенная поддержка во многие интегрированные средства разработки, такие как KDevelop, Zend Studio и многие другие.

Возможность создания зеркальных копий репозитория.

Два типа репозитория - база данных или набор обычных файлов.

Возможность доступа к репозиторию через Apache с использованием протокола WebDAV. bazaar mercurial управление версия

Наличие удобного механизма создания меток и ветвей проектов.

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

Широкое распространение позволяет быстро решить большинство возникающих проблем, обратившись к данным, накопленным Интернет-сообществом.

2.2.2 Недостатки SVN

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

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

Слабо поддерживаются операции слияния веток проекта.

Сложности с полным удалением информации о файлах, попавших в

репозиторий, так как в нем всегда остается информация о предыдущих изменениях файла, и не предусмотрено никаких штатных средств для полного удаления данных о файле из репозитория[1].

2.3 Mercurial

Распределенная система контроля версий Mercurial разрабатывалась Мэттом Макалом параллельно с системой контроля версий Git, созданной Торвальдсом Линусом.

Первоначально, она была создана для эффективного управления большими проектами под Linux'ом, а поэтому была ориентирована на быструю и надежную работу с большими репозиториями. На данный момент mercurial адаптирован для работы под Windows, Mac OS X и большинство Unix систем.

Большая часть системы контроля версий написана на языке Python, и только отдельные участки программы, требующие наибольшего быстродействия, написаны на языке Си.

Идентификация ревизий происходит на основе алгоритма хеширования SHA1, однако, также предусмотрена возможность присвоения ревизиям индивидуальных номеров.

Так же, как и в Git'е, поддерживается возможность создания веток проекта с последующим их слиянием.

Для взаимодействия между клиентами используются протоколы HTTP, HTTPS или SSH.

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

2.3.1 Достоинства Mercurial

Быстрая обработка данных.

Кросплатформенная поддержка.

Возможность работы с несколькими ветками проекта.

Простота в обращении.

Возможность конвертирования репозиториев других систем поддержки версий, таких как CVS, Subversion, Git, Darcs, GNU Arch, Bazaar и др.

2.3.2 Недостатки Mercurial

Возможные (но чрезвычайно низкие) совпадения хеш - кода отличных по содержанию ревизий.

Ориентирован на работу в консоли [1].

2.4 CVS

Система управления параллельными версиями (Concurrent Versions System) - логическое развитие системы управления пересмотрами версий (RCS), использующая ее стандарты и алгоритмы по управлению версиями, но значительно более функциональная, и позволяющая работать не только с отдельными файлами, но и с целыми проектами.

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

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

Приведем основные достоинства и недостатки системы управления параллельными версиями.

2.4.1 Достоинства CVS

Несколько клиентов могут одновременно работать над одним и тем же проектом.

Позволяет управлять не одним файлом, а целыми проектами.

Обладает огромным количеством удобных графических интерфейсов, способных удовлетворить практически любой, даже самый требовательный вкус.

Широко распространена и поставляется по умолчанию с большинством операционных систем Linux.

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

2.4.2 Недостатки CVS

При перемещении или переименовании файла или директории теряются все, привязанные к этому файлу или директории, изменения.

Сложности при ведении нескольких параллельных веток одного и того же проекта.

Ограниченная поддержка шрифтов.

Для каждого изменения бинарного файла сохраняется вся версия файла, а не только внесенное изменение.

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

Ресурсоемкие операции, так как требуют частого обращения к репозиторию, и сохраняемые копии имеют некоторую избыточность [1].

2.5 Bazaar

Bazaar - распределенная, свободно распространяемая система контроля версий, разрабатываемая при поддержке компании Canonical Ltd. Написана на языке Python и работает под управлением операционных систем Linux, Mac OS X и Windows.

В отличие от Git и Mercurial, создаваемых для контроля версий ядра операционной системы Linux, а поэтому ориентированных на максимальное быстродействие при работе с огромным числом файлов, Bazaar ориентировался на удобный и дружественный интерфейс пользователя. Оптимизация скорости работы производилось уже на втором этапе, когда первые версии программы уже появились.

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

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

Большой плюс этой системе контроля версий дает возможность работы с репозиториями других систем контроля версий, таких как Subversion или Git.

Кратко приведем наиболее значительные достоинства и недостатки этой системы контроля версий.

2.5.1 Достоинства Bazaar

Кросплатформенная поддержка.

Удобный и интуитивно понятный интерфейс.

Простая работа с ветками проекта.

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

Великолепная документация.

Удобный графический интерфейс.

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

2.5.2 Недостатки Bazaar

Более низкая скорость работы, по сравнению с Git и Mercurial, но эта ситуация постепенно исправляется.

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

ЗАКЛЮЧЕНИЕ

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

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

Основываясь на краткий обзор самых популярных систем управления версиями можно подвести итоги:

Git - гибкая, удобная и мощная система контроля версий, способная удовлетворить абсолютное большинство пользователей.

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

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

Несмотря на то, что CVS устарела и обладает серьезными недостатками, она все еще является одной из самых популярных систем контроля версий и отлично подходит для управления небольшими проектами, не требующих создания нескольких

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

Bazaar - удобная система контроля версий с приятным интерфейсом. Хорошо подходит для пользователей, которых отталкивает перспектива работы с командной строкой.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1. http://all-ht.ru/ -- Все о Hi-Tech [Электронный ресурс]. - http://all-ht.ru/ - (дата обращения: 03.12.2016)

2. http://tagline.ru/ -- Рейтинги сервисов и технологий [Электронный ресурс]. - http://tagline.ru/ - (дата обращения: 04.12.2016)

3. https://git-scm.com/ -- Официальный сайт СКВ Git [Электронный ресурс]. - https://git-scm.com/- (дата обращения: 01.12.2016)

4. Википедия - свободная энциклопедия [Электронный ресурс]. - http://wikipedia.org . - (дата обращения: 28.11.2016)

5. Chacon, S. Pro Git - New York «Apress», 2012 - 1c

6. 2website -- Системы контроля версий [Электронный ресурс]. -http://www.2website.lv - (дата обращения: 05.12.2016)

7. Collins-Sussman, Ben. Subversion - New York «O'Reilly Media», 2015. - 3с.

8. Студопедия -- поиск обучающей информации [Электронный ресурс]. - http:// studopedia.org /- (дата обращения: 05.12.2016)

Размещено на Allbest.ru

...

Подобные документы

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

    презентация [381,7 K], добавлен 05.01.2014

  • Система контроля и управления доступом как базовый компонент интегрированных систем. Структура и основные элементы систем видеонаблюдения. Области применения и обзор программного обеспечения систем видеонаблюдения. Интегрированные системы безопасности.

    дипломная работа [1,8 M], добавлен 25.07.2015

  • Особенности решения задачи контроля и управления посещением охраняемого объекта. Создание системы как совокупности программных и технических средств. Классификация систем контроля и управления доступом. Основные устройства системы и их характеристика.

    презентация [677,7 K], добавлен 03.12.2014

  • Назначение и принцип работы программы Spider player 2.011, перечень ее разработчиков, достоинства, недостатки, а также сравнение с предыдущими ее версиями и аналогами. Общая характеристика основных версий программы. Назначение основных кнопок проигрывате

    курсовая работа [1,1 M], добавлен 18.06.2010

  • Анализ существующих систем контроля и управления доступом различных фирм-производителей. Анализ технических и эксплуатационных характеристик различных систем, разработка системы контроля и управления доступом. Предложение плана реализации системы.

    дипломная работа [2,7 M], добавлен 07.06.2011

  • Анализ архитектуры ОС Windows 8. Сравнение с предыдущими версиями (интерфейс Modern UI, работа с учетными записями, модель безопасности, диспетчер задач, история файлов, восстановление системы, Storage Spaces). Особенности различных версий Windows 8.

    курсовая работа [289,1 K], добавлен 25.01.2016

  • Понятие, сущность, структура и виды операционных систем. Характеристика операционной системы Windows XP, требования к ее установке, сравнительный анализ версий, особенности настройки, обновления версии, установки драйверов устройств и добавление новых.

    реферат [558,8 K], добавлен 20.10.2009

  • Понятие и основные функции систем управления web-контентом. Система управления web-контентом как программный комплекс, предоставляющий функции создания, редактирования, контроля и организации web-страниц. Обзор и анализ существующих систем WCMS.

    курсовая работа [419,4 K], добавлен 29.12.2014

  • Принципы работы систем контроля и управления доступом, принцип их работы и оценка возможностей. Сравнительное описание методов идентификации. Разработка информационно-компьютерной системы контроля и управления доступом. Создание аппаратной подсистемы.

    дипломная работа [1,7 M], добавлен 26.07.2013

  • Понятие, назначение, задачи и классификация системы контроля и управления доступом, ее основные компоненты. Сравнительный анализ деятельности производителей данных систем: Legos, Parsec, PERCo. Выбор архитектуры системы, оборудование и его размещение.

    дипломная работа [7,7 M], добавлен 07.06.2014

  • Графические интерфейсы и расширения для DOS. История развития операционной системы Microsoft Windows. Новшества ее современных версий: пользовательский интерфейс, языковая интеграция, системы защиты. Хронология развития и архитектура системы GNU/Linux.

    реферат [38,9 K], добавлен 25.10.2010

  • Автономные, сетевые и интегрированные контроллеры - интеллектуальный элемент системы контроля управления доступом. Управление локальными, централизованными и распределенными СКУД. Характеристика iSecure Pro как самостоятельной микропроцессорной системы.

    реферат [2,6 M], добавлен 23.01.2011

  • Использование операционных систем Microsoft Windows. Разработка операционной системы Windows 1.0. Возможности и характеристика последующих версий. Выпуск пользовательских операционных систем компании, доработки и нововведения, версии Windows XP и Vista.

    реферат [23,3 K], добавлен 10.01.2012

  • Основные концепции автоматизированной системы управления технологическим процессом. Компоненты систем контроля и управления, их назначение. Программно-аппаратные платформы для SCADA-систем, их эксплуатационные характеристики. Графические средства InTouch.

    реферат [499,3 K], добавлен 15.03.2014

  • Этапы разработки автоматизированной системы приема и бронирования заказов столиков в заведениях. Анализ среды разработки Android Development Tools. Общая характеристика диаграммы компонентов IOS приложения. Рассмотрение системы контроля версий сервера.

    курсовая работа [8,7 M], добавлен 14.05.2014

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

    дипломная работа [1,8 M], добавлен 30.08.2010

  • История обновления версий операционной системы Google Anroid. Набор предустановленных программ, разработанных в рамках проекта открытых исходных кодов для Android. Достоинства и недостатки ОС. Перспективы данной платформы для мобильных устройств.

    реферат [757,8 K], добавлен 19.05.2016

  • Организационные основы защиты информации на предприятии. Общие принципы построения систем контроля и управления доступом. Характеристика объекта, текущего оборудования и программного обеспечения. Классификация воздушных и воздушно-тепловых завес.

    дипломная работа [5,7 M], добавлен 13.04.2014

  • Характеристика версионной архитектуры, требований к аппаратному обеспечению, версий, лицензирования кроссплатформенной системы управления базами данных Firebird. Рассмотрение особенностей создания таблиц, триггеров, генераторов, хранимых процедур.

    курсовая работа [1,4 M], добавлен 14.03.2010

  • Пакет средств разработки DirectX под Microsoft Windows, характеристика наборов COM-совместимых объектов в его составе. Ключевые особенности версий, шейдерные языки. Описание основных используемых функций. Исходный код программы, примеры ее работы.

    курсовая работа [422,2 K], добавлен 16.02.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.