Лабораторная работа №3
- 1. Тема
Работа со слиянием изменений в системе контроля версий Mercurial.
- 2. Задание
Создать несколько веток. В разных ветках проекта внести изменения таким образом, чтобы создать конфликтную ситуацию при слиянии (в разных ветках в файле с одинаковым именем с разным содержимым).
Слить 2 ветки, разрешив конфликты вручную используя KDiff3.
Написать отчет: титульный лист, тема работы, задание, ход выполнения работы со скриншотами, выводы.
- 3. Теоретические материалы
Слияние — это основная часть работы с инструментами распределённого контроля версий. Вот несколько случаев, когда возникает необходимость объединить работу:
- несколько пользователей имеют собственные репозитории проекта, над которым они вместе работают. Один пофиксил ошибку в своем репозитории, а другой добавил новые изменения в своём. Они хотят чтобы общий репозиторий содержал и багфикс и новые изменения.
- пользователь часто работает в одном проекте одновременно над несколькими разными задачами, каждая из которых изолирована в собственном репозитории. Работая таким образом, приходится частенько производить слияние одной части работы с другой.
Склеивание веток (hg merge)
- Нужно переключиться на ветку, в которую нужно влить. Например,
$ hg update default - Вливаем в нее требуемую ветку:
$ hg merge имяветки - Если есть конфликты, выполняем
$ hg resolve --allдля попытки автоматически их разрешить. - Если остаются неразрешенные конфликты, то разрешаем их вручную. Для файлов разрешенных конфликтов пишем
$ hg resolve -m имя файла. Вручную удаляемимяфайла.orig 5.После разрешения всех конфликтов выполняем$ hg commit -m "Merge что куда"и$ hg push
Использование графического инструмента слияния
Один из графических инструментов слияния это kdiff3, ниже показан снимок экрана kdiff3 в работе. Выполняемое таким образом слияние называется тройственным (three-way), потому что есть три различные версии файла. В инструменте сравнения верхняя часть окна поделена на три панели:
- слева базовая версия файла, т.е. самая последняя версия, после которой произошло разделение на те две версии, которые мы пытаемся объединить.
- посередине «наша» версия файла, содержащая наши изменения.
- справа «их» версия файла, то есть версия из ревизии, с которой мы производим слияние.
На панели снизу располагается текущий результат слияния. Задача — заменить весь красный текст, означающий неразрешенные конфликты, на осмысленный результат слияния «нашей» и «их» версий файла.
Все четыре панели связаны друг с другом. Если мы начнем прокручивать любую из них по вертикали или по горизонтали, остальные панели последуют за нами и будут показывать соответствующие части файлов.
|
|
- 4. Примеры работы с Mercurial
На рисунке показано 2 ветки, которые имеют содержат файл ngskfbg.txt с одинаковым именем и разным содержимым
Ниже мы видим окно слияния двух веток, в котором отображена информация о каждом из файлов, который сливаются и внесенные изменения.
При успешном выполнении слияния перед нами появится окно с предложением сразу же закомитить изменения и окно с результатами слияния.
При возникновении конфликтов во время слияния их можно решить автоматически или вручную с помощью KDiff3.
- Источники
https://www.youtube.com/watch?v=CxtQHcX_MTY
http://habrahabr.ru/post/109203/
http://mercurial.selenic.com/wiki/RussianTutorialConflict
