/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
3535.3.1 by Ian Clatworthy
Add user doc for stacked branches
1
Using stacked branches
2
======================
3
5094.2.1 by Guanpeng Xu
Improve documentation of stacked branch
4
Motivation
5
----------
6
7
If you are working on a project, and you have read access to whose
8
public repository but do not have write access to it, using stacked
9
branches to backup/publish your work onto the same host of the public
10
repository might be an option for you.
11
12
Other scenarios for stacked branch usage include experimental branches
13
and code hosting sites. For these scenarios, stacked branches are
14
ideal because of the benefits it provides.
15
16
3535.3.1 by Ian Clatworthy
Add user doc for stacked branches
17
What is a stacked branch?
18
-------------------------
19
5094.2.1 by Guanpeng Xu
Improve documentation of stacked branch
20
A stacked branch is a branch that knows how to find revisions in
21
another branch (the stacked-on branch). Stacked branches store just
22
the unique revisions that are not in the stacked-on branch, making
23
them faster to create and more storage efficient. In these respects,
24
stacked branches are similar to shared repositories. However, stacked
25
branches have additional benefits:
3535.3.1 by Ian Clatworthy
Add user doc for stacked branches
26
27
* The new branch can be in a completely different location to the
28
  branch being stacked on.
29
30
* Deleting the stacked branch really deletes the revisions (rather
31
  than leaving them in a shared repository).
32
3549.1.3 by Martin Pool
Review comments to stacking operations
33
* Security is improved over shared repositories, because the stacked-on
4853.1.1 by Patrick Regan
Removed trailing whitespace from files in doc directory
34
  repository can be physically readonly to developers committing to stacked
3549.1.3 by Martin Pool
Review comments to stacking operations
35
  branches.
3535.3.1 by Ian Clatworthy
Add user doc for stacked branches
36
37
38
Creating a stacked branch
39
-------------------------
40
41
To create a stacked branch, use the ``stacked`` option of the branch command.
42
For example::
43
6622.1.24 by Jelmer Vernooij
More doc renames.
44
  brz branch --stacked source-url my-dir
3535.3.1 by Ian Clatworthy
Add user doc for stacked branches
45
46
This will create ``my-dir`` as a stacked branch with no local revisions.
47
If it is defined, the public branch associated with ``source-url`` will be
48
used as the *stacked-on* location. Otherwise, ``source-url`` will be the
49
*stacked-on* location.
50
51
52
Creating a stacked checkout
53
---------------------------
54
55
Direct creation of a stacked checkout is expected to be supported soon.
56
In the meantime, a two step process is required:
57
58
1. Create a stacked branch as shown above.
59
60
2. Convert the branch into a checkout using either the ``reconfigure``
61
   or ``bind`` command.
62
63
64
Pushing a stacked branch
65
------------------------
66
67
Most changes on most projects build on an existing branch such as the
68
*development trunk* or *current stable* branch. Creating a new
69
branch stacked on one of these is easy to do using the ``push``
70
command like this::
71
6622.1.24 by Jelmer Vernooij
More doc renames.
72
  brz push --stacked-on reference-url my-url
3535.3.1 by Ian Clatworthy
Add user doc for stacked branches
73
74
This creates a new branch at ``my-url`` that is stacked on ``reference-url``
75
and only contains the revisions in the current branch that are not already
5094.2.1 by Guanpeng Xu
Improve documentation of stacked branch
76
in the branch at ``reference-url``. In particular, ``my-url`` and
5609.44.2 by Andrew Bennetts
Clarify and elaborate doc about pushing stacked branches.
77
``reference-url`` can be on the same host, and the ``--stacked-on`` option
5094.2.1 by Guanpeng Xu
Improve documentation of stacked branch
78
can be used additionally to inform ``push`` to reference the
79
revisions in ``reference-url``. For example::
80
6622.1.24 by Jelmer Vernooij
More doc renames.
81
  brz push --stacked-on bzr+ssh://host/project bzr+ssh://host/user/stacked-branch
5094.2.1 by Guanpeng Xu
Improve documentation of stacked branch
82
83
This usage fits the scenario described in the Motivation section.
3535.3.1 by Ian Clatworthy
Add user doc for stacked branches
84
5609.44.2 by Andrew Bennetts
Clarify and elaborate doc about pushing stacked branches.
85
You can also use the ``--stacked`` option without specifying ``--stacked-on``.
86
This will automatically set the *stacked-on* location to the parent branch of
87
the branch you are pushing (or its ``public_location`` if configured).  For
88
example::
89
6622.1.24 by Jelmer Vernooij
More doc renames.
90
  brz branch source-url my-dir
5609.44.2 by Andrew Bennetts
Clarify and elaborate doc about pushing stacked branches.
91
  cd my-dir
92
  (hack, hack, hack)
6622.1.24 by Jelmer Vernooij
More doc renames.
93
  brz commit -m "fix bug"
94
  brz push --stacked
5609.44.2 by Andrew Bennetts
Clarify and elaborate doc about pushing stacked branches.
95
6622.1.24 by Jelmer Vernooij
More doc renames.
96
You can combine ``brz branch --stacked`` and ``brz push --stacked`` to work on a
5609.44.2 by Andrew Bennetts
Clarify and elaborate doc about pushing stacked branches.
97
branch without downloading or uploading the whole history::
5609.44.1 by Andrew Bennetts
Bug 375013 is fixed, so uncomment docs about committing to a stacked branch.
98
6622.1.24 by Jelmer Vernooij
More doc renames.
99
  brz branch --stacked source-url my-dir
5609.44.1 by Andrew Bennetts
Bug 375013 is fixed, so uncomment docs about committing to a stacked branch.
100
  cd my-dir
101
  (hack, hack, hack)
6622.1.24 by Jelmer Vernooij
More doc renames.
102
  brz commit -m "fix bug"
103
  brz push --stacked
3535.3.1 by Ian Clatworthy
Add user doc for stacked branches
104
105
106
Limitations of stacked branches
107
-------------------------------
108
5609.44.3 by Andrew Bennetts
Expand 'Limitations of stacked branches' to be more explicit about how stacked-on locations should be accessible to all readers of a branch; add release-notes entry.
109
The important thing to remember about a stacked branch is that the stacked-on
110
branch needs to be accessible for almost all operations.  This is not an issue
111
when both branches are local, or when both branches are on the same server and
112
the stacked-on location is a relative path.  But clearly a branch hosted on a
113
server with a stacked-on location of ``file:///...`` is not going to work for
114
anyone except the user that originally pushed it.  It's a good idea to configure
115
``public_location`` to help prevent that.
4509.3.4 by Martin Pool
Documentation for branch stacking
116
4797.39.1 by Andrew Bennetts
Update 'Using stacked branches' doc to reflect the fact that currently you cannot commit to a stacked branch due to bug 375013.
117
Similarly, because most of the history is stored in the stacked-on repository,
6622.1.24 by Jelmer Vernooij
More doc renames.
118
operations like ``brz log`` can be slower when the stacked-on repository is
4797.39.1 by Andrew Bennetts
Update 'Using stacked branches' doc to reflect the fact that currently you cannot commit to a stacked branch due to bug 375013.
119
accessed via a network.
120
5609.44.2 by Andrew Bennetts
Clarify and elaborate doc about pushing stacked branches.
121
If a stacked branch is in a format older than 2a, you cannot commit to it due to
122
`bug 375013`_.
123
6622.1.28 by Jelmer Vernooij
More renames; commands in output, environment variables.
124
.. _bug 375013: https://bugs.launchpad.net/bzr/+bug/375013
5609.44.2 by Andrew Bennetts
Clarify and elaborate doc about pushing stacked branches.
125
4509.3.4 by Martin Pool
Documentation for branch stacking
126
127
Changing branch stacking
128
------------------------
129
6622.1.24 by Jelmer Vernooij
More doc renames.
130
Stacking of existing branches can be changed using the ``brz reconfigure``
4509.3.4 by Martin Pool
Documentation for branch stacking
131
command to either stack on an existing branch, or to turn off stacking.
6622.1.24 by Jelmer Vernooij
More doc renames.
132
Be aware that when ``brz reconfigure --unstacked`` is used, brz will
4509.3.36 by Martin Pool
Review cleanups of typos and unneeded imports
133
copy all the referenced data from the stacked-on repository into the
4509.3.4 by Martin Pool
Documentation for branch stacking
134
previously stacked repository.  For large repositories this may take
135
considerable time and may substantially increase the size of the
136
repository.