1
.. _using-stacked-branches:
3
Использование стека веток
4
=========================
6
Что такое ветка в стеке?
7
------------------------
9
Ветка в стеке - это ветка которая знает как найти ревизии в другой ветке. Ветка
10
в стеке хранит только уникальные ревизии, которые при этом быстрее создавать и
11
они более эффективны по занимаемому месту. По этим показателям стек веток похож
12
на разделяемые репозитории. Конечно стек веток имеет дополнительные
15
* Новая ветка может быть в абсолютно другом месте по сравнению с веткой на
16
которой она основана как стек.
18
* Удаление ветки в стеке на самом деле удаляет ревизии (а не оставляет их в
19
разделяемом репозитории).
21
* Стек веток более безопасен чем разделяемые репозитории, т.к. репозиторий на
22
котором основан стек может иметь доступ только для чтения для разработчиков
23
которые фиксируют изменения на ветке в стеке.
25
Эти преимущества делают стек веток идеальным выбором для различных сценариев,
26
включая экспериментальные ветки и сайты с хостингом кода.
29
Создание ветки в стеке
30
----------------------
32
Что бы создать ветку в стеке нужно использовать опцию ``stacked`` для команды
33
``branch``. Например::
35
bzr branch --stacked source-url my-dir
37
Здесь мы создадим ``my-dir`` как ветку в стеке без локальных ревизий. Если
38
определено открытая ветка связанная с ``source-url`` будет использована как
39
*основа стека*. Иначе ``source-url`` будет *основой стека*.
42
Создание рабочего каталога в стеке
43
-----------------------------------
45
Поддержка прямого создания рабочего каталога в стеке скоро ожидается. Пока
46
для этого требуется два шага:
48
1. Создать ветку в стеке, как описано выше.
50
2. Конвертировать ветку в рабочий каталог используя либо команду
51
``reconfigure``, либо команду ``bind``.
54
Публикация ветки в стеке
55
------------------------
57
Многие изменения в большинстве проектов создаются на основе готовых веток,
58
таких как *основная линия разработки*, или *текущая стабильная*. Создание новой
59
ветки в стеке основанной на таких ветках легко сделать с использованием команды
62
bzr push --stacked-on reference-url my-url
64
Эта команда создаст новую ветку ``my-url``, которая будет основана на
65
``reference-url`` и содержать только ревизии из текущей ветки, которых еще нет
66
на ветке ``reference-url``.
68
Если локальная ветка была создана как ветка в стеке то мы можем использовать
69
опцию ``--stacked`` для команды ``push`` и тогда ветка на которой будет основан
70
стек будет задана неявно. Например::
72
bzr branch --stacked source-url my-dir
74
(меняем, меняем, меняем)
75
bzr commit -m "исправление ошибки"
79
Ограничения веток в стеке
80
-------------------------
82
Важная вещь которую надо запомнить в отношении веток в стеке - ветка на которой
83
основан стек должна быть доступна практически для всех операций. Конечно это не
84
проблема если обе ветки локальные, или находятся на одном сервере.