Техническое задание к курсовому проекту по дисциплине «Лингвистическое и программное обеспечение САПР» (ЛиПОСАПР) - KJfe/version-control-system-mercurial GitHub Wiki

Тема: СИСТЕМЫ ВЕРСИОННОГО КОНТРОЛЯ: СИСТЕМА КОНТРОЛЯ ВЕРСИЙ MERCURIAL

1 Название проекта

Для исследования была выбрана система версионного контроля Mercurial.

2 Краткое описание предметной области

Система управления версиями (от англ. Version Control System, VCS или Revision Control System) – программное обеспечение для облегчения работы с изменяющейся информацией. Система управления версиями позволяет хранить несколько версий одного и того же документа, проводить сравнения изменений, при необходимости, возвращаться к более ранним версиям, а также работать над одним документом группе людей, что важно для крупных проектов.

3 Описание инструмента

Система Mercurial

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

Большая часть системы контроля версий написана на языке Python, и только отдельные участки программы, требующие наибольшего быстродействия, написаны на языке Си. Идентификация ревизий происходит на основе алгоритма хеширования SHA1 (Secure Hash Algorithm 1), однако, также предусмотрена возможность присвоения ревизиям индивидуальных номеров. Так же, как и в git’е, поддерживается возможность создания веток проекта с последующим их слиянием.

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

_Mrcurial _ имеет механизм хранения Revlog. Каждому файлу, помещенному в хранилище, сопоставляется два других: индекс и файл с данными. Файлы с данными содержат слепки и дельта-слепки, которые создаются только когда количество отдельных изменений файла превышает некоторое пороговое значение. Индекс служит инструментом эффективного доступа к файлу с данными. Дельты, полученные в результате изменения файлов под контролем версий, добавляются только в файлы с данными. Для того, чтобы правки из разных мест файла объединить в одну ревизию, используется индекс. Ревизии отдельных файлов складываются манифесты, а из манифестов — фиксации. Этот метод зарекомендовал себя весьма эффективным в деле создания, поиска и вычисления различий в файлах. Также к достоинствам метода можно отнести компактность по отношению к месту на диске и достаточно эффективный протокол передачи изменений по сети.  

Система Subversion

Стремится быть лучшей альтернативой CVS. Она поддерживает большинство соглашений CVS, включая большую часть набора команд, поэтому пользователи CVS быстро чувствуют себя как дома. Subversion предлагает много полезных улучшений по сравнению с CVS: копирование и переименование файлов и директорий, настоящие атомарные фиксации, эффективная обработка бинарных файлов, способность сетевой работы по HTTPHTTPS ). Subversion также имеет Win32 клиент и сервер.

Система Git.

С февраля 2002 года для разработки ядра Linux’а большинством программистов стала использоваться система контроля версий BitKeeper. Довольно долгое время с ней не возникало проблем, но в 2005 году Лари МакВоем (разработчик BitKeeper’а) отозвал бесплатную версию программы.

Разрабатывать проект масштаба Linux без мощной и надежной системы контроля версий – невозможно. Одним из кандидатов и наиболее подходящим проектом оказалась система контроля версий Monotine, но Торвальдса Линуса не устроила ее скорость работы. Так как особенности организации Monatone не позволяли значительно увеличить скорость обработки данных, то 3 апреля 2005 года Линус приступил к разработке собственной системы контроля версий – Git.

Практически одновременно с Линусом (на три дня позже), к разработке новой системы контроля версий приступил и Мэтт Макал. Свой проект Мэтт назвал Mercurial, но об этом позже, а сейчас вернемся к распределенной системе контроля версий Git. Git– это гибкая, распределенная (без единого сервера) система контроля версий, дающая массу возможностей не только разработчикам программных продуктов, но и писателям для изменения, дополнения и отслеживания изменения «рукописей» и сюжетных линий, и учителям для корректировки и развития курса лекций, и администраторам для ведения документации, и для многих других направлений, требующих управления историей изменений. У каждого разработчика, использующего Git, есть свой локальный репозиторий, позволяющий локально управлять версиями. Затем, сохраненными в локальный репозиторий данными, можно обмениваться с другими пользователями. Часто при работе с Git создают центральный репозиторий, с которым остальные разработчики синхронизируются. Пример организации системы с центральным репозиторием – это проект разработки ядра Linux’a. В этом случае все участники проекта ведут свои локальны разработки и беспрепятственно скачивают обновления из центрального репозитория. Когда необходимые работы отдельными участниками проекта выполнены и отлажены, они, после удостоверения владельцем центрального репозитория в корректности и актуальности проделанной работы, загружают свои изменения в центральный репозиторий.

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

Работа над версиями проекта в _Git_может вестись в нескольких ветках, которые затем могут с легкостью полностью или частично объединяться, уничтожаться, откатываться и разрастаться во все новые и новые ветки проекта.

Система Bazaar

Bazaar– распределенная, свободно распространяемая система контроля версий, разрабатываемая при поддержке компании Canonical Ltd. Написана на языке Python и работает под управлением операционных систем Linux, Mac OS X и Windows. В отличие от Git и Mercurial, создаваемых для контроля версий ядра операционной системы Linux, а поэтому ориентированных на максимальное быстродействие при работе с огромным числом файлов, Bazaar ориентировался на удобный и дружественный интерфейс пользователя. Оптимизация скорости работы производилось уже на втором этапе, когда первые версии программы уже появились. Как и во многих других системах контроля версий, система команд Bazaar’a — очень похожа на команды CVS или Subversion, что, впрочем, неудивительно, так как обеспечивает удобный, простой и интуитивно понятный интерфейс взаимодействия с программой. Приятно, что огромное внимание уделяется работе с ветками проектов (создание, объединение веток и т.д.), что очень важно при разработке серьезных проектов и позволяет проводить доработки и эксперименты без угрозы потери основной версии программного обеспечения. Большой плюс этой системе контроля версий дает возможность работы с репозиториями других систем контроля версий, таких как Subversion или Git.

Система Perforce.

Данная коммерческая система управления версиями разработана компанией Perforce Software. В основе нее лежит клиент-серверная архитектура. Сервер данной системы может одновременно иметь несколько репозиториев. Сервер Perforce может быть установлен на операционные системы Unix, Mac OS X, Microsoft Windows. Клиент предоставляет графический интерфейс и широкий набор утилит для работы из командной строки. Клиентская часть реализована для широкого набора операционных систем. Также разработан большой набор плагинов, позволяющих интегрироваться с широким кругом сред разработки программного обеспечения и приложений других разработчиков: IntelliJ IDEA, XCode, Autodesk 3D Studio Max, Maya, Adobe Photoshop, Microsoft Office, Eclipse, emacs. Помимо этого система предоставляет множество других возможностей — различного вида извещения, создание и обслуживание ветвей проекта, с мощной системой слияний веток, точки отката в базе данных, и взаимодействие с системами отслеживания дефектов. В настоящее время такие компании как Google и Microsoft, широко используют Perforce в своих инженерных процессах.

4 Описание проекта

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

  1. создание нового проекта;

  2. получение копии существующего репозитария в новом месте;

  3. добавление файлов;

  4. добавление папок;

  5. создание ветки разработки из главной ветки в отдельную именованную ветку (development);

  6. объединение главной ветви в созданную ветку;

  7. создать именованной ветки в измененную главную ветку;

  8. закрытие именованной ветки;

  9. отладка.

5 Структура пояснительной записки

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

  1. Введение

  2. Описание предметной области

  3. Обзор существующих инструментов

  4. <Инструмент>

  5. Краткая характеристика

  6. Инсталляция серверной части

  7. Инсталляция клиентской части

  8. Возможности по интеграции

  9. Основные сценарии использования

  10. Сравнение с другими системами

  11. Сводная сравнительная таблица

  12. Выводы из сравнения

  13. Выводы

  14. Список литературы

Дата выдачи задания: «1» ноября 2016 г.

Руководитель ст. преподаватель каф. КСУП Борисов С.И.

Задание принял к исполнению студент гр. 583-1 Болдырев Е.В.

⚠️ **GitHub.com Fallback** ⚠️