1
*************************
2
What's New in Bazaar 2.3?
3
*************************
5
Bazaar 2.3 has been released on the 3rd of February 2011 and marks the start
6
of another long-term-stable series. From here, we will only make bugfix
7
releases on the 2.3 series (2.3.1, etc), while 2.4 will become our new
8
development series. The 2.1 and 2.2 series will also continue to get
9
bugfixes. (Currently 2.0 is planned to be EOLed circa September 2011.)
11
This document accumulates a high level summary of what's changed.
13
:doc:`../release-notes/index` for a full list.
15
Users are encouraged to upgrade from the other stable series. This document
16
outlines the improvements in Bazaar 2.3 vs Bazaar 2.2. As well as summarizing
17
improvements made to the core product, it highlights enhancements within the
18
broader Bazaar world of potential interest to those upgrading.
20
Bazaar 2.3.1 includes all the fixes in the un-released 2.0.7, 2.1.4 and 2.2.5
21
versions that weren't included in 2.3.0 and fixes some bugs on its own.
23
Bazaar 2.3.2 is a bugfix release that was never released.
25
Bazaar 2.3.3 is a bugfix release including the fixes in 2.3.2 and
26
fixing the test helpers deprecated by python-2.7.
28
Bazaar 2.3.4 is a bugfix release.
30
See the :doc:`../release-notes/index` for details.
32
Bazaar 2.3 is fully compatible both locally and on the network with 2.0, 2.1,
33
and 2.2. It can read and write repositories generated by all previous
39
* Committing a new revision in a stacked branch is now supported, as long as
40
you are using the current repository format (2a). It will preserve the
41
stacking invariants, etc, so that fetching after commit is guaranteed to
42
work. (John Arbash Meinel, #375013)
44
* Support for some old development formats have been removed:
45
``development-rich-root``, ``development6-rich-root``, and
46
``development7-rich-root``. These formats were always labelled experimental
47
and not used unless the user specifically asked for them. If you have
48
repositories using these old formats you should upgrade them to ``2a`` using
49
Bazaar 2.2. (Andrew Bennetts)
51
* The default ``ignore`` file created by Bazaar will contain ``__pycache__``,
52
which is the name of the directory that will be used by Python to store
54
(Andrea Corbellini, #626687)
56
* The default sort order for the ``bzr tags`` command now uses a natural sort
57
where numeric substrings are sorted numerically. The previous default was
58
"asciibetical" where tags were sorted by the characters they contained. To
59
get the old behavior, one can use ``bzr tags --sort=alpha``.
60
(Neil Martinsen-Burrell, #640760)
62
* On platforms other than Windows and Mac OS X, Bazaar will use configuration
63
files that live in $XDG_CONFIG_HOME/bazaar if that directory exists. This
64
allows interested individuals to conform to the XDG Base Directory
65
specification. The plugin location has not changed and is still
66
~/.bazaar/plugins. To use a different directory for plugins, use the
67
environment variable BZR_PLUGIN_PATH. (Neil Martinsen-Burrell, #195397)
69
* ``bzr upgrade`` now operates recursively when run on a shared
70
repository, automatically upgrading the branches within it, and has
71
grown additional options for showing what it will do and cleaning up
72
after itself. (Ian Clatworthy, Matthew Fuller, #89830, #374734, #422450)
77
* The ``lp:`` prefix will now use your known username (from
78
``bzr launchpad-login``) to expand ``~`` to your username. For example:
79
``bzr launchpad-login user && bzr push lp:~/project/branch`` will now
80
push to ``lp:~user/project/branch``. (John Arbash Meinel)
82
* Launchpad has announced that the ``edge.launchpad.net`` instance is
83
deprecated and may be shut down in the future
84
<http://blog.launchpad.net/general/edge-is-deprecated>. Bazaar has therefore
85
been updated in this release to talk to the main (``launchpad.net``) servers,
86
rather than the ``edge`` ones.
88
Performance improvements
89
************************
91
* ``bzr revert`` and ``bzr status`` are up to 15% faster on large trees
92
with many changes by not repeatedly building a list of all file-ids.
95
* ``bzr send`` uses less memory.
96
(John Arbash Meinel, #614576)
98
* Fetches involving stacked branches and branches with tags now do slightly less
99
I/O, and so does branching from an existing branch. This also improves the
100
network performance of these operations. (Andrew Bennetts)
102
* Inventory entries now consume less memory (on 32-bit Ubuntu file entries
103
have dropped from 68 bytes to 40, and directory entries from 120 bytes
104
to 48). This affects most operations, and depending on the size of the
105
tree may substantially improve the speed of operations like ``bzr
106
commit``. (Andrew Bennetts)
108
* Lower memory consumption when reading many chk index pages. Helpful for
109
things like ``bzr co`` or ``bzr ls -R`` on large trees.
112
* When building new working trees, default to reading from the repository
113
rather than the source tree unless explicitly requested. (via
114
``--files-from`` and ``--hardlink`` for ``bzr branch`` and
115
``bzr checkout``. Generally, 2a format repositories extract
116
content faster than seeking and reading content from another tree,
117
especially in cold-cache situations. (John Arbash Meinel, #607298)
119
New revision specifiers
120
***********************
122
* The ``mainline`` revision specifier has been added. It takes another revision
123
spec as its input, and selects the revision which merged that revision into
126
For example, ``bzr log -vp -r mainline:1.2.3`` will show the log of the
127
revision that merged revision 1.2.3 into mainline, along with its status
128
output and diff. (Aaron Bentley)
130
* The ``annotate`` revision specifier has been added. It takes a path and a
131
line as its input (in the form ``path:line``), and selects the revision which
132
introduced that line of that file.
134
For example: ``bzr log -vp -r annotate:bzrlib/transform.py:500`` will select
135
the revision that introduced line 500 of transform.py, and display its log,
136
status output and diff.
138
It can be combined with ``mainline`` to select the revision that landed this
139
line into trunk, like so:
140
``bzr log -vp -r mainline:annotate:bzrlib/transform.py:500``
143
Testing/Bug reporting
144
*********************
146
* Shell-like scripts can now be run directly from the command line without
147
writing a python test. This should help users adding reproducing recipes
148
to bug reports. (Vincent Ladeuil)
151
Improved conflict handling
152
**************************
154
* ``pull``, ``merge`` or ``switch`` can lead to conflicts when deleting a
155
versioned directory contains unversioned files. The cause of the conflict
156
is that deleting the directory will orphan the unversioned files so the
157
user needs to instruct ``bzr`` what do to do about these orpahns. This is
158
controlled by setting the ``bzr.transform.orphan_policy`` configuration
159
variable with a value of ``move``. In this case the unversioned files are
160
moved to a ``bzr-orphans`` directory at the root of the working tree. The
161
default behaviour is specified (if needed) by setting the variable to
162
``conflict``. (Vincent Ladeuil, #323111)
164
* ``bzr resolve --take-this`` and ``bzr resolve --take-other`` can now be
165
used for text conflicts. This will ignore the differences that were merged
166
cleanly and replace the file with its content in the current branch
167
(``--take-this``) or with its content in the merged branch
168
(``--take-other``). (Vincent Ladeuil, #638451)
170
* ``bzr resolve`` now provides more feedback about the conflicts just
171
resolved and the remaining ones. (Vincent Ladeuil)
176
* A beta version of the documentation is now available in GNU TexInfo
177
format, used by emacs and the standalone ``info`` reader.
178
(Vincent Ladeuil, #219334)
183
``bzr`` can be configured via environment variables, command-line options
184
and configurations files. We've started working on unifying this and give
185
access to more options. The first step is a new ``bzr config`` command that
186
can be used to display the active configuration options in the current
187
working tree or branch as well as the ability to set or remove an
188
option. Scripts can also use it to get only the value for a given option.
193
For more detailed information on the changes made, see the
194
the :doc:`../release-notes/index` for:
196
* the interim bzr `milestones <https://launchpad.net/bzr/2.3>`_
197
* the plugins you use.
199
For a summary of changes made in earlier releases, see:
201
* :doc:`whats-new-in-2.1`
202
* :doc:`whats-new-in-2.2`