Глава 4. Ветвление и слияние

Содержание

Что такое ветка?
Использование веток
Создание ветки
Работа с веткой
Ключевые идеи, стоящие за ветками
Копирование изменений между ветками
Копирование отдельных изменений
Ключевые понятия, стоящие за слиянием
Как правильнее всего использовать слияние
Ручной контроль слияния
Предварительные просмотр при объединении
Конфликты при объединении
Учитывать или игнорировать происхождение
Типовые примеры использования
Полное объединение двух веток
Отмена изменений
Восстановление удаленных элементов
Типовые приемы при использовании веток
Ветки релизов
Функциональные ветки
Переключение рабочей копии
Метки
Создание простой метки
Создание комплексной метки
Поддержка веток
Структура хранилища
Продолжительность жизни информации
Подводя итоги

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

Ветвление это фундаментальное понятие управления версиями. Если вы доверии Subversion управлять своей информацией, то эта функция от которой со временем вы будете зависеть. Эта глава предполагает, что вы уже знакомы с основными понятиями Subversion (Глава 2, Основные понятия).

Что такое ветка?

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

Как вы поступите в такой ситуации? Вы делаете очевидную вещь: создаете вторую копию документа и начинаете сопровождать две отдельных копии. Когда какое-то из подразделений просит вас внести небольшие изменения, вы включаете их или в одну копию или в другую.

Как правило, вам будет нужно вносить изменения в обе копии. Например, если вы обнаружили опечатку в одной копии, скорее всего, эта же опечатка присутствует и во второй копии. Два документа в общем то одинаковые; отличаются они незначительно в отдельных, специфичных моментах.

В этом заключается основная идея ветки — а именно, направления разработки, которое существует независимо от другого направления, однако имеющие с ним общую историю, если заглянуть немного в прошлое. Ветка всегда берет начало как копия чего-либо и двигается от этого момента создавая свою собственную историю (см. Рисунок 4.1, «Ветки разработки»).

Рисунок 4.1. Ветки разработки

Ветки разработки

У Subversion есть команды, которые помогают сопровождать параллельные ветки файлов и директорий. Эти команды позволяют создавать ветки, копируя информацию и запоминая, что копии относятся друг к другу. Кроме того эти команды помогают дублировать изменения из одной ветки в другую. Наконец, они могут сделать отдельные части рабочей копии отвечающими отдельным веткам, что позволит вам «смешивать и согласовывать» различные направления разработки в своей каждодневной работе.