Предыдущий ролик Следующий ролик  

Видео урок: Ветвление и слияние

Принципы контроля версий

Давайте рассмотрим ветвление и слияние в Hg. Это очень простые функции. Сначала мы выполним hg branch и убедимся, что у нас есть только одна ветка - default, в которой мы сейчас и находимся. Иногда она называется стволом (trunk). Но в Hg она называется default (веткой по умолчанию). Таким образом, чтобы создать ветку, мы вводим hg branch b1. Обратите внимание, система говорит mark the working directory as branch b1. Она на самом деле еще не создала ветку, и чтобы ее создать, мы должны закоммитить изменение. ОК, теперь, если мы введем hg branch, вы увидите, что мы находимся в ветке b1, и если мы введем hg branches, вы можете увидеть, что у нас есть две ветки, b1 и default.

Теперь, чтобы работать в ветке, мы переходим в нее с помощью команды hg update b1, и если мы введем hg branch, система сообщит нам, что мы в ветке b1. Если мы введем hg update default и затем hg branch, мы вернемся в ветку default. Итак, давайте вернемся к ветке b1 и внесем изменение. Мы добавим еще одну функцию к нашему хайку, "No more available space," "Look to the cloud," "Your hard drive is full!" Теперь мы сохраним файл и внесем изменение. Помните, мы можем ввести hg branch и увидеть, что мы находимся в ветке b1. Затем мы выведем f1.c, и увидим, что у нас появилась новая функция. Если мы выполним hg update default, а затем выведем f1.c, вы увидите, что файл остался в исходном состоянии.

Я вернусь в ветку и просмотрю логи, и вы можете видеть, что здесь в списке указано, в какой ветке произошло изменение. Итак, мы сделали обновление в ветке b1. Тем не менее, как и в Git, здесь в коротком сообщении рекомендуется указывать, в какой ветке произошло изменение. Итак, теперь мы выполним еще одно обновление и изменим website на node. Затем мы зафиксируем его и поставим в сообщении номер ветки, чтобы потом точно знать, что мы сделали и где.

ОК, теперь давайте поговорим о слиянии. Если вы будете продолжать работать в ветке в течение длительного периода времени, рекомендуется выполнять прямую интеграцию из ветки default в вашу частную ветку. Помните, в главе о понятиях и терминах мы говорили о прямой и обратной интеграции? Прямая интеграция - это копирование изменений из главной ветки, ствола или ветки по умолчанию в вашу частную ветку. Это делается для того, чтобы ваша частная ветка не слишком устаревала по сравнению с главной, если над ней работают другие люди, и чтобы вы получали обновления из областей приложения, над которыми вы не работаете.

В этом случае нам нечего копировать из главной ветки, так что мы просто выполним обратную интеграцию. Помните, обратный интеграция - это копирование изменений их нашей частной ветки в главную. Чтобы выполнить слияние, мы должны вернуться в главную ветку, т.е. default. Мы введем hg update default и можем увидеть, что здесь у нас есть просто наши исходные данные, а затем мы вводим merge branch b1, чтобы получить изменения в ветку default. Обратите внимание, здесь опять сказано, что ветки слиты, и чтобы мы не забыли закоммитить изменения.

Если мы запросим у HG статус, то можем увидеть, что система не только изменила файл f1. У нее есть это файл, но она не знает, что делать с кодом f1.c.orig, но давайте сейчас это оставим, как есть. В данном случае мы внесем изменения, а затем выполним hg log, и вы можете увидеть, что теперь у нас есть обновление из ветки b1. На этом все. Сейчас мы выводим f1.c, и вы можете увидеть, что все наши изменения из ветки слиты в ветку default, и мы можем ввести hg branch и убедиться, что мы находимся в ветке default.

Так выполняется ветвление и слияние в Hg. Далее мы кратко рассмотрим инструменты с графическим интерфейсом и интеграцию в оболочку для Hg.