Предположим, что ваша работа заключается в сопровождении документа, например какого-то руководства, для подразделений в вашей компании. Однажды различные подразделения запросят у вас одно и тоже руководство, но с несколькими частями которые будут немного «подредактированны», так как задачи у них немного различаются.
Как вы поступите в такой ситуации? Вы делаете очевидную вещь: создаете вторую копию документа и начинаете сопровождать две отдельных копии. Когда какое-то из подразделений просит вас внести небольшие изменения, вы включаете их или в одну копию или в другую.
Как правило, вам будет нужно вносить изменения в обе копии. Например, если вы обнаружили опечатку в одной копии, скорее всего, эта же опечатка присутствует и во второй копии. Два документа в общем то одинаковые; отличаются они незначительно в отдельных, специфичных моментах.
В этом заключается основная идея ветки — а именно, направления разработки, которое существует независимо от другого направления, однако имеющие с ним общую историю, если заглянуть немного в прошлое. Ветка всегда берет начало как копия чего-либо и двигается от этого момента создавая свою собственную историю (см. Рисунок 4.1, «Ветки разработки»).
У Subversion есть команды, которые помогают сопровождать параллельные ветки файлов и директорий. Эти команды позволяют создавать ветки, копируя информацию и запоминая, что копии относятся друг к другу. Кроме того эти команды помогают дублировать изменения из одной ветки в другую. Наконец, они могут сделать отдельные части рабочей копии отвечающими отдельным веткам, что позволит вам «смешивать и согласовывать» различные направления разработки в своей каждодневной работе.