4
What is a stacked branch?
5
-------------------------
7
A stacked branch is a branch that knows how to find revisions
8
in another branch. Stacked branches store just the
9
unique revisions, making them faster to create and more
10
storage efficient. In these respects, stacked branches are
11
similar to shared repositories. However, stacked branches have
14
* The new branch can be in a completely different location to the
15
branch being stacked on.
17
* Deleting the stacked branch really deletes the revisions (rather
18
than leaving them in a shared repository).
20
* Security is improved over shared repositories, because the stacked-on
21
repository can be physically readonly to developers committing to stacked
24
These benefits make stacked branches ideal for various scenarios
25
including experimental branches and code hosting sites.
28
Creating a stacked branch
29
-------------------------
31
To create a stacked branch, use the ``stacked`` option of the branch command.
34
bzr branch --stacked source-url my-dir
36
This will create ``my-dir`` as a stacked branch with no local revisions.
37
If it is defined, the public branch associated with ``source-url`` will be
38
used as the *stacked-on* location. Otherwise, ``source-url`` will be the
39
*stacked-on* location.
42
Creating a stacked checkout
43
---------------------------
45
Direct creation of a stacked checkout is expected to be supported soon.
46
In the meantime, a two step process is required:
48
1. Create a stacked branch as shown above.
50
2. Convert the branch into a checkout using either the ``reconfigure``
54
Pushing a stacked branch
55
------------------------
57
Most changes on most projects build on an existing branch such as the
58
*development trunk* or *current stable* branch. Creating a new
59
branch stacked on one of these is easy to do using the ``push``
62
bzr push --stacked-on reference-url my-url
64
This creates a new branch at ``my-url`` that is stacked on ``reference-url``
65
and only contains the revisions in the current branch that are not already
66
in the branch at ``reference-url``.
68
If the local branch was created as a stacked branch, then you can
69
use the ``--stacked`` option to ``push`` and the *stacked-on* location
70
will be implicit. For example::
72
bzr branch --stacked source-url my-dir
75
bzr commit -m "fix bug"
79
Limitations of stacked branches
80
-------------------------------
82
The important thing to remember about a stacked branch is that the
83
stacked-on branch needs to be available for almost all operations. This is
84
not an issue when both branches are local or both branches are on the