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

Видео урок: Прямая и обратная интеграция

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

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

Итак, давайте рассмотрим, как это работает. Мы начинаем с нашего основного бранча, создаем два отдельных бранча, по одному для каждого разработчика, feature 1 и feature 2. Изначально оба бранча содержат ту же информацию, что находится в основном бранче, а затем они начинают расходиться. В бранче feature 1 разработчик №1 добавляет функцию D, а затем решает, что, возможно, разработчику №2, понадобится использовать функцию D, и вносит ее в основной бранч, осуществляя процесс, который называется обратной интеграцией. Это больше, чем просто слияние, по той причине, что первый разработчик продолжает работу в своем бранче feature 1 и не собирается переходить в основной бранч.

Разработчик №2 продолжает работать в своем бранче feature 2 и добавляет функцию Е. Когда он закончит, он внесет изменения в основной бранч, опять же, выполнив еще одну обратную интеграцию. Чтобы разработчик 1 продолжил работать и в своей ветке, и мог воспользоваться кодом для функции Е, он должен выполнить прямую интеграцию, которая позволит ему загрузить изменения из основного бранча в свой. Это немного отличается от простого создания нового бранча.

Точно так же, разработчик № 2 может выполнить прямую интеграцию в свой бранч, чтобы забрать функцию D. В конце концов, когда вы доберетесь до конечной точки, где продукт должен быть отправлен клиенту, бранчи feature 2, feature 1 и основной будут содержать одинаковый код, потому что они все были интегрированы друг с другом через серию обратных и прямых интеграций. В этом процессе интересно то, он используется для разработки очень, очень крупных проектов. Например, в Microsoft таким образом разрабатывается Windows и Visual Studio.

В Visual Studio есть команды из сотен разработчиков. Одна команда работает над Visual Basic, другая команда работает над Visual C#, третья - над Редактором (Editor), другая команда разрабатывает XAML, и все эти команды работают самостоятельно, выполняя огромное количество прямых и обратных интеграций в процессе создания новой версии Visual Studio, но, в конечном итоге, у всех команд во всех бранчах находится одинаковый конечный продукт.