Лабораторная работа № 5 «Изучение системы управления...

15
Лабораторная работа № 5 «Изучение системы управления версиями Mercurial» Цель: изучение системы управления версиями Mercurial. Рассматриваемая в работе система Mercurial может быть скачана по ссылке http://mercurial.selenic.com/downloads Рассматриваемая в работе система Mercurial с оболочкой TortoiseHG может быть скачана по ссылке http://tortoisehg.bitbucket.org/download/ Основное назначение систем управления версиями. Система управления версиями программное обеспечение для облегчения работы с изменяющейся информацией. Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение, и многое другое. В своей простейшей форме, это то, что многие люди делают вручную: каждый раз, когда разработчики изменяют файл, сохраняя его под новым именем, которое содержит номер, каждый из которых выше, чем число предшествующей версии. Ручное управление несколькими версиями для одного файла — задача с возможностью ошибок, хотя программные средства для автоматизации этого процесса давно уже доступны. Первые автоматизированные средства контроля версий были созданы, чтобы помочь одному человеку управлять версиями одного файла. За последние несколько десятилетий, количество инструментов контроля версий значительно увеличилось. Теперь они управляют версиями многих файлов, и помогают нескольким людям работать вместе. Благодаря лучшим современным средствам контроля версий тысячи людей могут работать над общими проектами, содержащими сотни тысяч файлов. Распределенные системы контроля версий появились относительно недавно, однако, эта область быстро развивается благодаря тяге людей к исследованию нового. Есть ряд причин, по которым необходимо использовать систему управления версиями проекта: Система контроля версий отслеживает историю и прогресс проекта вместо разработчика. Для каждого изменения система выведет запись о том, кто его сделал, почему он это сделал, когда он это сделал и в чем, собственно, заключалось изменение. При работе с другими людьми, система контроля версий облегчает взаимодействие. Например, когда несколько человек делают потенциально конфликтные изменения одновременно, программа поможет определить и разрешить такие конфликты. Система помогает восстанавливаться после ошибок. Если сделано изменение, которое потом окажется ошибкой, всегда можно вернуться к более ранней версии одного или нескольких файлов. На самом деле, действительно хорошая система контроля версий даже поможет вам легко найти тот момент времени, когда проблема впервые появилась.

Transcript of Лабораторная работа № 5 «Изучение системы управления...

Page 1: Лабораторная работа № 5 «Изучение системы управления ...pzks.nmu.org.ua/ua/pdf/kpo_lab05.pdf · Лабораторная работа

Лабораторная работа № 5

«Изучение системы управления версиями Mercurial»

Цель: изучение системы управления версиями Mercurial.

Рассматриваемая в работе система Mercurial может быть скачана по ссылке

http://mercurial.selenic.com/downloads

Рассматриваемая в работе система Mercurial с оболочкой TortoiseHG может быть

скачана по ссылке http://tortoisehg.bitbucket.org/download/

Основное назначение систем управления версиями.

Система управления версиями — программное обеспечение для облегчения работы с

изменяющейся информацией. Система управления версиями позволяет хранить несколько

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

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

В своей простейшей форме, это то, что многие люди делают вручную: каждый раз, когда

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

каждый из которых выше, чем число предшествующей версии.

Ручное управление несколькими версиями для одного файла — задача с возможностью

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

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

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

количество инструментов контроля версий значительно увеличилось. Теперь они управляют

версиями многих файлов, и помогают нескольким людям работать вместе. Благодаря

лучшим современным средствам контроля версий тысячи людей могут работать над общими

проектами, содержащими сотни тысяч файлов.

Распределенные системы контроля версий появились относительно недавно, однако, эта

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

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

проекта:

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

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

почему он это сделал, когда он это сделал и в чем, собственно, заключалось

изменение.

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

Например, когда несколько человек делают потенциально конфликтные изменения

одновременно, программа поможет определить и разрешить такие конфликты.

Система помогает восстанавливаться после ошибок. Если сделано изменение, которое

потом окажется ошибкой, всегда можно вернуться к более ранней версии одного или

нескольких файлов. На самом деле, действительно хорошая система контроля версий

даже поможет вам легко найти тот момент времени, когда проблема впервые

появилась.

Page 2: Лабораторная работа № 5 «Изучение системы управления ...pzks.nmu.org.ua/ua/pdf/kpo_lab05.pdf · Лабораторная работа

Система контроля ревизий позволяет работать одновременно над несколькими

версиями проекта и переключаться между ними.

Все эти причины одинаково важны (по крайней мере, в теории) независимо от того,

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

Ключевой вопрос относительно практичности системы контроля версий в таких разных

средах («хакер-одиночка» и «огромная команда») в том, как преимущества соотносятся с

«ценой» использования. Система, которую сложно понять или использовать, обойдётся

дорого.

Система управления версиями Mercurial.

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

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

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

Linux’ом, а поэтому была ориентирована на быструю и надежную работу с большими

репозиториями. На данный момент Mercurial адаптирован для работы под Windows, Mac OS

X и большинство Unix систем.

Большая часть системы контроля версий написана на языке Python, и только отдельные

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

Набор команд - простой и интуитивно понятный, во многом схожий с командами subversion.

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

Немаловажным является и наличие утилит, позволяющих импортировать репозитории

многих других систем контроля версий.

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

наиболее подходящей системы контроля версий:

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

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

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

Простота в изучении и использовании

Легковесность

Масштабируемость

Простота настройки под конкретные нужды

Но существуют и недостатки:

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

содержанию ревизий.

Сравнение Mercurial с другими системами контроля версий.

CVS

CVS основан на централизованной, клиент-серверной архитектуре. CVS оперирует довольно

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

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

внутренние механизмы контроля целостности практически отсутствуют, зачастую даже

невозможно точно утверждать, повреждён ли репозиторий, и если да, то каким образом.

Page 3: Лабораторная работа № 5 «Изучение системы управления ...pzks.nmu.org.ua/ua/pdf/kpo_lab05.pdf · Лабораторная работа

Mercurial предоставляет возможность импорта истории версий CVS. Так как множество

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

ошибок, обычна ситуация, когда средство для импорта из CVS возвращает множество

ошибок целостности репозитория.

Mercurial предоставляет возможность импорта истории версий из репозитория CVS.

Subversion

Subversion — популярная система контроля версий, разработанная с целью заменить CVS.

Subversion имеет централизованную клиент/серверную архитектуру.

Subversion и Mercurial имеют похожие команды для одних и тех же операций. Обе системы

портированы на все популярные операционные системы.

Mercurial обладает большей производительностью, чем Subversion. Кроме того, Subversion

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

при выполнении некоторых операций. Subversion имеет широкую поддержку

инструментария сторонних производителей. В этом отношении у Mercurial сейчас

существенное отставание. Как и Mercurial, Subversion располагает отличным руководством

пользователя.

Из-за того, что Subversion не хранит историю изменений на клиенте, она хорошо подходит

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

позволяет пользователю заблокировать файл, в результате пользователь на время получает

эксклюзивные права на внесение изменений в него.

Mercurial может импортировать историю изменений из репозитория Subversion. Возможен и

обратный процесс.

Git

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

исходным кодом ядра Linux.

В то время как репозиторий Mercurial не требует операций по техническому обслуживанию,

репозиторий Git требует частых ручных «перепаковок» собственных метаданных. Только что

«запакованный» репозиторий Git занимает немного меньше места, чем репозиторий

Mercurial, но объём не перепакованного репозитория будет на несколько порядков больше.

Ядро Git написано на языке С. Многие команды Git реализованы в виде Shell скриптов или

скриптов на языке Perl и уровень качества данных скриптов сильно разнится. Mercurial

предоставляет возможность импорта истории версий из репозитория Git.

Работа с Mercurial

Для работы с Mercurial крайне рекомендуется установить TortoiseHg – визуальную оболочку для командной строки меркуриала. Дальнейшие инструкции покажут, как работать именно с визуальной оболочкой.

Page 4: Лабораторная работа № 5 «Изучение системы управления ...pzks.nmu.org.ua/ua/pdf/kpo_lab05.pdf · Лабораторная работа

Основная идея меркуриала – каждый разработчик имеет собственный репозиторий, куда складываются изменения (версии) файлов, и синхронизация между разработчиками идем посредством синхронизации репозиториев. Процесс работы выглядит следующим образом:

Соответственно, есть 5 основных команд для работы: - Клонировать репозиторий – получить копию репозитория на локальную машину для

последующей работы с ним; - Синхронизация репозиториев – получить изменения – pull – получение изменений из

удаленного (исходного, центрального, либо любого другого такого же) репозитория - Синхронизация репозиториев – переслать изменения – push – передача собственных

изменений в удаленный репозиторий - Записать изменения – commit – создание новой версии - Обновиться до версии – update – обновиться до определенной версии, присутствующей в

репозитории.

В TortoiseHG это выглядит следующим образом: Это основное рабочее окно (TortoiseHG Workbench) предоставляющее все возможности работы с репозиториями. Кнопки (1) и (2) позволяют выполнить команды push и pull соответственно. Кнопка (3) позволяет выполнить команду commit, но для этого необходимо будет выбрать передаваемые изменения и ввести текст коммита:

Page 5: Лабораторная работа № 5 «Изучение системы управления ...pzks.nmu.org.ua/ua/pdf/kpo_lab05.pdf · Лабораторная работа

Кнопка (4) позволяет посмотреть, с какими репозиториями будет выполняться синхронизация, и выполнить команды push и pull:

Окно (5) представляет собой т.н. revision log – набор версий данного репозитория. Тут выводятся данные о номере ревизии, все описания (commit message), автор изменений и дата изменений. Также выводится удобный граф изменений, позволяющий визуализировать ветки и склеивания:

Окно(6) представляет собой детали конкретной ревизии(версии) – какие файлы были изменены, добавлены, удалены, переименованы. Окно (7) представляет собой блок для вывода commit message. Окно (8) показывает изменения по текущему выбранному файлу в данной ревизии в режимах – только изменения, текст и изменения, весь текст. Последовательность действий при создании проекта, поддерживающего систему контроля версий

Mercurial.

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

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

лучше в учебных целях это сделать.

Page 6: Лабораторная работа № 5 «Изучение системы управления ...pzks.nmu.org.ua/ua/pdf/kpo_lab05.pdf · Лабораторная работа

Программная оболочка TortioseHg встраивает в системное меню свои пункты. Для папки проекта мы

на основном сервере выбираем Create Repository here.

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

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

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

Page 7: Лабораторная работа № 5 «Изучение системы управления ...pzks.nmu.org.ua/ua/pdf/kpo_lab05.pdf · Лабораторная работа

Для работы по сети желательно создать либо расшаренную папку, либо запустить встроенные веб-

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

приведены на следующих рисунках

Page 8: Лабораторная работа № 5 «Изучение системы управления ...pzks.nmu.org.ua/ua/pdf/kpo_lab05.pdf · Лабораторная работа
Page 9: Лабораторная работа № 5 «Изучение системы управления ...pzks.nmu.org.ua/ua/pdf/kpo_lab05.pdf · Лабораторная работа

После настройки сервер необходимо запустить, нажав на кнопку Запуск.

Проверяем работу сервера по адресу http://127.0.0.1:8000/ для локальных серверов либо

http://адресвебсервера:8000/ для компьютеров в сети

Page 10: Лабораторная работа № 5 «Изучение системы управления ...pzks.nmu.org.ua/ua/pdf/kpo_lab05.pdf · Лабораторная работа

На следующем этапе мы с компьютера-клиента подключаемся к серверу и открываем хранилище.

Хранилище нам нужно клонировать с сервера, т.е. получить информацию о проекте и его

изменениях.

Page 11: Лабораторная работа № 5 «Изучение системы управления ...pzks.nmu.org.ua/ua/pdf/kpo_lab05.pdf · Лабораторная работа

Вносим информацию о сервере и о месте хранения на рабочем компьютере.

Page 12: Лабораторная работа № 5 «Изучение системы управления ...pzks.nmu.org.ua/ua/pdf/kpo_lab05.pdf · Лабораторная работа

Вносим в проект некоторые изменения:

Page 13: Лабораторная работа № 5 «Изучение системы управления ...pzks.nmu.org.ua/ua/pdf/kpo_lab05.pdf · Лабораторная работа
Page 14: Лабораторная работа № 5 «Изучение системы управления ...pzks.nmu.org.ua/ua/pdf/kpo_lab05.pdf · Лабораторная работа

Задание:

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

кодом проекта.

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

создает лидер проекта, подчиненные страницы – программисты проекта. Тематика сайта

определена далее в разделе «Варианты заданий»

Лабораторная работа должна содержать протокол основных операций над репозиторием для

системы Mercurial:

создать репозиторий для сайта;

добавить файл в репозиторий;

изменить файл в репозитории (commit);

удалить файл из репозитория (commit);

выполнить update рабочей папки;

выполнить checkout репозитория;

создать бранч (ветку) в репозитории;

соединить ветки (бранч и основной truck репозитория) - операция merge;

получить историю ревизий (change log) по некоторому файлу.

Задания:

1. Музыка

2. История

3. Программирование

4. Университет

5. Студенческая группа

Page 15: Лабораторная работа № 5 «Изучение системы управления ...pzks.nmu.org.ua/ua/pdf/kpo_lab05.pdf · Лабораторная работа

6. Кино

7. Книги

8. Увлечения

9. IT-новинки

10. Мобильная связь

11. Операционные системы

12. Мой город

13. Транспорт

14. Животные

15. Великие люди

И – ваш вариант, не совпадающий с вышеперечисленными.