<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>What’s New in Bazaar 2.2? — Bazaar 2.6.0 documentation</title> <link rel="stylesheet" href="../_static/default.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: '../', VERSION: '2.6.0', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="../_static/jquery.js"></script> <script type="text/javascript" src="../_static/underscore.js"></script> <script type="text/javascript" src="../_static/doctools.js"></script> <link rel="shortcut icon" href="../_static/bzr.ico"/> <link rel="top" title="Bazaar 2.6.0 documentation" href="../index.html" /> </head> <body> <div class="related"> <h3>Navigation</h3> <ul> <li><a href="http://bazaar.canonical.com/"> <img src="../_static/bzr icon 16.png" /> Home</a> | </li> <a href="http://doc.bazaar.canonical.com/en/">Documentation</a> | </li> <li><a href="../index.html">Table of Contents (2.6.0)</a> »</li> </ul> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body"> <div class="section" id="what-s-new-in-bazaar-2-2"> <h1>What’s New in Bazaar 2.2?<a class="headerlink" href="#what-s-new-in-bazaar-2-2" title="Permalink to this headline">¶</a></h1> <p>Bazaar 2.2.0, released on the 6th of August 2010, marks the start of another long-term-stable series. From here, we will only make bugfix releases on the 2.2 series (2.2.1, etc), while 2.3 will become our new development series. The 2.0 and 2.1 series will also continue to get bugfixes. (Currently 2.0 is planned to be supported for another 6 months.)</p> <p>The main changes in 2.2 are: <strong>better local and network performance</strong>, <strong>reduced memory usage</strong>, and several user-interface improvements.</p> <p>Users are encouraged to upgrade from the other stable series. This document outlines the improvements in Bazaar 2.2 vs Bazaar 2.1. As well as summarizing improvements made to the core product, it highlights enhancements within the broader Bazaar world of potential interest to those upgrading.</p> <p>Bazaar 2.2.0 includes all the fixes from 2.1.2 and 2.0.6.</p> <p>Over 120 bugs have been fixed in total. See the <a class="reference internal" href="../release-notes/index.html"><em>Bazaar Release Notes</em></a> for a full list.</p> <p>Bazaar 2.2.1 includes all the fixes from 2.1.3 and 2.0.6 (that weren’t included in 2.2.0).</p> <p>See the <a class="reference internal" href="../release-notes/index.html"><em>Bazaar Release Notes</em></a> for details.</p> <p>Bazaar 2.2.2 focused on fixes to improve our Ubuntu release workflow (which should also help all other distributions).</p> <p>See the <a class="reference internal" href="../release-notes/index.html"><em>Bazaar Release Notes</em></a> for details.</p> <p>Bazaar 2.2.3 focused on fixes related to interactions with the launchpad server and python-2.7 compatibility.</p> <p>Bazaar 2.2.4 fixed a regression for some interactions with the launchpad server.</p> <p>Bazaar 2.2.5 fixed a regression in some rare conflict resolutions and warns when branching an out-of-date ubuntu packaging branch.</p> <p>See the <a class="reference internal" href="../release-notes/index.html"><em>Bazaar Release Notes</em></a> for details.</p> <p>Bazaar 2.2 is fully compatible both locally and on the network with 2.0 and 2.1, and can read and write repositories generated by all previous versions.</p> <div class="section" id="behaviour-changes"> <h2>Behaviour changes<a class="headerlink" href="#behaviour-changes" title="Permalink to this headline">¶</a></h2> <p>There are some compatibility changes in this release.</p> <ul class="simple"> <li>For commandline users we no longer guess user identity for <tt class="docutils literal"><span class="pre">bzr</span> <span class="pre">commit</span></tt>: users must specify their identity using <tt class="docutils literal"><span class="pre">bzr</span> <span class="pre">whoami</span></tt> (you don’t need to specify your identity for readonly operations). This avoids problems where the previous guessed default caused commits be recorded as coming from, for example <tt class="docutils literal"><span class="pre"><sam@localhost></span></tt>.</li> </ul> </div> <div class="section" id="improved-conflict-handling"> <h2>Improved conflict handling<a class="headerlink" href="#improved-conflict-handling" title="Permalink to this headline">¶</a></h2> <p>Tree-shape conflicts can be resolved by providing <tt class="docutils literal"><span class="pre">--take-this</span></tt> and <tt class="docutils literal"><span class="pre">--take-other</span></tt> to the <tt class="docutils literal"><span class="pre">bzr</span> <span class="pre">resolve</span></tt> command. Just marking the conflict as resolved is still accessible via the <tt class="docutils literal"><span class="pre">--done</span></tt> default action.</p> </div> <div class="section" id="local-performance"> <h2>Local performance<a class="headerlink" href="#local-performance" title="Permalink to this headline">¶</a></h2> <ul class="simple"> <li><tt class="docutils literal"><span class="pre">bzr</span> <span class="pre">init</span></tt> does not recursively scan directory contents anymore leading to faster init for directories with existing content. (Martin [gz], Parth Malwankar, #501307)</li> <li>Less code is loaded at startup, so there’s less overhead on running all bzr commands. (Andrew Bennetts, Martin Pool)</li> <li>Reduce peak memory by one copy of compressed text. (John Arbash Meinel, #566940)</li> <li>Avoid repeated locking of local objects in <tt class="docutils literal"><span class="pre">diff</span></tt>, <tt class="docutils literal"><span class="pre">missing</span></tt>, and <tt class="docutils literal"><span class="pre">pull</span></tt>, so those options are faster. (Andrew Bennetts)</li> </ul> </div> <div class="section" id="network-performance"> <h2>Network performance<a class="headerlink" href="#network-performance" title="Permalink to this headline">¶</a></h2> <ul class="simple"> <li>Bazaar now reads data from SSH connections more efficiently on platforms that provide the <tt class="docutils literal"><span class="pre">socketpair</span></tt> function, and when using paramiko. (Andrew Bennetts, #590637)</li> <li>Index lookups in pack repositories search recently hit pack files first. In repositories with many pack files this can greatly reduce the number of files accessed, the number of bytes read, and the number of read calls. An incremental pull via plain HTTP takes half the time and bytes for a moderately large repository. (Andrew Bennetts)</li> <li>Index lookups only re-order the indexes when the hit files aren’t already first. Reduces the cost of reordering (John Arbash Meinel, #562429)</li> </ul> </div> <div class="section" id="command-improvements"> <h2>Command improvements<a class="headerlink" href="#command-improvements" title="Permalink to this headline">¶</a></h2> <ul class="simple"> <li>Added <tt class="docutils literal"><span class="pre">bzr</span> <span class="pre">remove-branch</span></tt> command that can remove a local or remote branch. (Jelmer Vernooij, #276295)</li> <li><tt class="docutils literal"><span class="pre">bzr</span> <span class="pre">export</span></tt> now takes an optional argument <tt class="docutils literal"><span class="pre">--per-file-timestamps</span></tt> to set file mtimes to the last timestamp of the last revision in which they were changed rather than the current time. (Jelmer Vernooij)</li> <li>Tag names can now be determined automatically by <tt class="docutils literal"><span class="pre">automatic_tag_name</span></tt> hooks on <tt class="docutils literal"><span class="pre">Branch</span></tt> if they are not specified on the command line. (Jelmer Vernooij)</li> <li>Tree-shape conflicts can be resolved by providing <tt class="docutils literal"><span class="pre">--take-this</span></tt> and <tt class="docutils literal"><span class="pre">--take-other</span></tt> to the <tt class="docutils literal"><span class="pre">bzr</span> <span class="pre">resolve</span></tt> command. Just marking the conflict as resolved is still accessible via the <tt class="docutils literal"><span class="pre">--done</span></tt> default action. (Vincent Ladeuil)</li> <li>The <tt class="docutils literal"><span class="pre">--directory</span></tt> option is supported for a number of additional commands: added, annotate, bind, cat, cat-revision, clean-tree, conflicts, deleted, export, ignore, ignored, lookup-revision, ls, merge-directive, missing, modified, nick, re-sign, resolve, shelve, switch, unbind, unknowns, unshelve, whoami. (Martin von Gagern, #527878)</li> <li><tt class="docutils literal"><span class="pre">bzr</span> <span class="pre">commit</span></tt> accepts <tt class="docutils literal"><span class="pre">-p</span></tt> (for “patch”) as a shorter name for <tt class="docutils literal"><span class="pre">--show-diff</span></tt>. (Parth Malwankar, #571467)</li> <li><tt class="docutils literal"><span class="pre">bzr</span> <span class="pre">ignore</span></tt> now supports a <tt class="docutils literal"><span class="pre">--default-rules</span></tt> option that displays the default ignore rules used by bzr. The flag <tt class="docutils literal"><span class="pre">--old-default-rules</span></tt> is no longer supported by <tt class="docutils literal"><span class="pre">ignore</span></tt>. (Parth Malwankar, #538703)</li> <li><tt class="docutils literal"><span class="pre">bzr</span> <span class="pre">pack</span></tt> now supports a <tt class="docutils literal"><span class="pre">--clean-obsolete-packs</span></tt> option that can save disk space by deleting obsolete pack files created during the pack operation. (Parth Malwankar, #304320)</li> <li>New command line option <tt class="docutils literal"><span class="pre">--authors</span></tt> to <tt class="docutils literal"><span class="pre">bzr</span> <span class="pre">log</span></tt> allows users to select which of the apparent authors and committer should be included in the log. Defaults depend on format. (Martin von Gagern, #513322)</li> <li>The bash_completion plugin from the bzr-bash-completion project has been merged into the tree. It provides a bash-completion command and replaces the outdated <tt class="docutils literal"><span class="pre">contrib/bash/bzr</span></tt> script with a version using the plugin. (Martin von Gagern, #560030)</li> <li>A new transport based on GIO (the gnome i/o library) provides access to samba shares, webdav using gio+smb and gio+dav. It is also possible to use gio for some already existing transport methods as gio+file, gio+sftp, gio+ftp. (Mattias Eriksson)</li> </ul> </div> <div class="section" id="controlling-plugins"> <h2>Controlling plugins<a class="headerlink" href="#controlling-plugins" title="Permalink to this headline">¶</a></h2> <ul class="simple"> <li>Plugins can be disabled by defining <tt class="docutils literal"><span class="pre">BZR_DISABLE_PLUGINS</span></tt> as a list of plugin names separated by ‘:’ (‘;’ on windows). (Vincent Ladeuil, #411413)</li> <li>Plugins can be loaded from arbitrary locations by defining <tt class="docutils literal"><span class="pre">BZR_PLUGINS_AT</span></tt> as a list of <tt class="docutils literal"><span class="pre">name@path</span></tt> separated by ‘:’ (‘;’ on Microsoft Windows). This takes precedence over <tt class="docutils literal"><span class="pre">BZR_PLUGIN_PATH</span></tt> for the specified plugins, and is expected to be most useful for plugin developers. (Vincent Ladeuil, #82693)</li> </ul> </div> <div class="section" id="apport-crash-reporting"> <h2>Apport crash reporting<a class="headerlink" href="#apport-crash-reporting" title="Permalink to this headline">¶</a></h2> <ul class="simple"> <li>If the Apport crash-reporting tool is available, bzr crashes are now stored into the <tt class="docutils literal"><span class="pre">/var/crash</span></tt> apport spool directory, and the user is invited to report them to the developers from there, either automatically or by running <tt class="docutils literal"><span class="pre">apport-bug</span></tt>. No information is sent without specific permission from the user. (Martin Pool, #515052)</li> </ul> </div> <div class="section" id="improved-launchpad-integration"> <h2>Improved Launchpad integration<a class="headerlink" href="#improved-launchpad-integration" title="Permalink to this headline">¶</a></h2> <ul class="simple"> <li>Merges can be proposed on Launchpad with the new <tt class="docutils literal"><span class="pre">lp-propose-merge</span></tt> command.</li> </ul> </div> <div class="section" id="better-documentation"> <h2>Better documentation<a class="headerlink" href="#better-documentation" title="Permalink to this headline">¶</a></h2> <ul class="simple"> <li><tt class="docutils literal"><span class="pre">bzr</span> <span class="pre">help</span> <span class="pre">patterns</span></tt> now explains case insensitive patterns and points to Python regular expression documentation. (Parth Malwankar, #594386)</li> <li>Numerous improvements have been made to the developer documentation.</li> </ul> </div> <div class="section" id="changes-to-plugins"> <h2>Changes to plugins<a class="headerlink" href="#changes-to-plugins" title="Permalink to this headline">¶</a></h2> <div class="section" id="bzr-grep"> <h3>bzr grep<a class="headerlink" href="#bzr-grep" title="Permalink to this headline">¶</a></h3> <p>The <a class="reference external" href="https://launchpad.net/bzr-grep">grep plugin</a> has developed well during the bzr 2.2 cycle. bzr grep can search the versioned files in the working tree, or in one or a series of revisions, or it can search through only the changes in a revision range.</p> </div> <div class="section" id="qbzr"> <h3>qbzr<a class="headerlink" href="#qbzr" title="Permalink to this headline">¶</a></h3> <p><a class="reference external" href="https://launchpad.net/qbzr">qbzr</a>, a cross-platform graphical interface to Bazaar, gained many features and fixes in its 0.19 release, including:</p> <ul class="simple"> <li>qannotate has new look and feel; with new features: find text and goto to line.</li> <li>Improved performance of qlog, and treewidget-based dialogs (qcommit, qadd, qrevert etc.)</li> <li>qpush, qmerge, etc.: when there are uncommitted changes in the working tree, user has the option to commit, or revert.</li> <li>qcommit: user can update bound branch/checkout if it is not up to date.</li> <li>Better support of Mac OS X: dialog windows no more start in background.</li> <li>qlog: Context menu actions for tag and revert will now show a branch menu if more than one branch is open.</li> <li>qlog: more context menu actions for update, cherry-pick, and reverse cherry-pick.</li> <li>Language of GUI can be set in DEFAULT section of bazaar.conf as <tt class="docutils literal"><span class="pre">language</span> <span class="pre">=</span> <span class="pre">code</span></tt>. Language codes are the same as for <tt class="docutils literal"><span class="pre">LANG</span></tt> environment variable. Environment variable <tt class="docutils literal"><span class="pre">LANGUAGE</span></tt> still preferred over settings in bazaar.conf.</li> </ul> </div> </div> <div class="section" id="platform-specific-changes"> <h2>Platform-specific changes<a class="headerlink" href="#platform-specific-changes" title="Permalink to this headline">¶</a></h2> <div class="section" id="microsoft-windows"> <h3>Microsoft Windows<a class="headerlink" href="#microsoft-windows" title="Permalink to this headline">¶</a></h3> <ul class="simple"> <li>There’s a new py2exe windows program <tt class="docutils literal"><span class="pre">bzrw.exe</span></tt>, which allows for starting a Bazaar GUI with out have a console open in the background. (Gary van der Merwe, #433781`)</li> <li>The all-in-one Windows installer will now be built with docstrings stripped from the library zip, reducing the size and slightly improving cold startup time. Bundled plugins are unchanged for the moment, but if adding other new plugins to an all-in-one installation, ensure they are compiled and installed with -O1 or help may not work. (Martin [gz])</li> <li>Parsing of command lines, for example in <tt class="docutils literal"><span class="pre">diff</span> <span class="pre">--using</span></tt>, no longer treats backslash as an escape character on Windows. (Gordon Tyler, #392248)</li> </ul> </div> </div> <div class="section" id="api-changes"> <h2>API changes<a class="headerlink" href="#api-changes" title="Permalink to this headline">¶</a></h2> <ul class="simple"> <li>BzrError subclasses no longer support the name “message” to be used as an argument for __init__ or in _fmt format specification as this breaks in some Python versions. errors.LockError.__init__ argument is now named “msg” instead of earlier “message”. (Parth Malwankar, #603461)</li> <li>The old <tt class="docutils literal"><span class="pre">bzr</span> <span class="pre">selftest</span> <span class="pre">--benchmark</span></tt> option has been removed. <<a class="reference external" href="https://launchpad.net/bzr-usertest">https://launchpad.net/bzr-usertest</a>> is an actively-maintained macrobenchmark suite. (Martin Pool)</li> <li>bzrlib library users now need to call <tt class="docutils literal"><span class="pre">__enter__</span></tt> and <tt class="docutils literal"><span class="pre">__exit__</span></tt> on the result of <tt class="docutils literal"><span class="pre">bzrlib.initialize</span></tt>. This change was made when fixing the bad habit recent bzr versions have had of leaving progress bars behind on the screen. That required calling another function before exiting the program, and it made sense to provide a full context manager at the same time. (Robert Collins)</li> <li>The <tt class="docutils literal"><span class="pre">bzr</span></tt> front end now requires a <tt class="docutils literal"><span class="pre">bzrlib.ui.ui_factory</span></tt> which is a context manager in the Python 2.5 and above sense. The bzrlib base class is such a manager, but third party UI factories which do not derive from <tt class="docutils literal"><span class="pre">bzrlib.ui.UIFactory</span></tt> will be incompatible with the command line front end.</li> <li>URLs like <tt class="docutils literal"><span class="pre">foo:bar/baz</span></tt> are now always parsed as a URL with scheme “foo” and path “bar/baz”, even if bzr does not recognize “foo” as a known URL scheme. Previously these URLs would be treated as local paths. (Gordon Tyler)</li> </ul> </div> <div class="section" id="further-information"> <h2>Further information<a class="headerlink" href="#further-information" title="Permalink to this headline">¶</a></h2> <p>For more detailed information on the changes made, see the the <a class="reference internal" href="../release-notes/index.html"><em>Bazaar Release Notes</em></a> for:</p> <ul class="simple"> <li>the interim bzr <a class="reference external" href="https://launchpad.net/bzr/2.2">milestones</a></li> <li>the plugins you use.</li> </ul> <p>For a summary of changes made in earlier releases, see:</p> <ul class="simple"> <li><a class="reference internal" href="whats-new-in-2.1.html"><em>What’s New in Bazaar 2.1?</em></a></li> </ul> </div> </div> </div> </div> </div> <div class="sphinxsidebar"> <div class="sphinxsidebarwrapper"> <h3><a href="../index.html">Table Of Contents</a></h3> <ul> <li><a class="reference internal" href="#">What’s New in Bazaar 2.2?</a><ul> <li><a class="reference internal" href="#behaviour-changes">Behaviour changes</a></li> <li><a class="reference internal" href="#improved-conflict-handling">Improved conflict handling</a></li> <li><a class="reference internal" href="#local-performance">Local performance</a></li> <li><a class="reference internal" href="#network-performance">Network performance</a></li> <li><a class="reference internal" href="#command-improvements">Command improvements</a></li> <li><a class="reference internal" href="#controlling-plugins">Controlling plugins</a></li> <li><a class="reference internal" href="#apport-crash-reporting">Apport crash reporting</a></li> <li><a class="reference internal" href="#improved-launchpad-integration">Improved Launchpad integration</a></li> <li><a class="reference internal" href="#better-documentation">Better documentation</a></li> <li><a class="reference internal" href="#changes-to-plugins">Changes to plugins</a><ul> <li><a class="reference internal" href="#bzr-grep">bzr grep</a></li> <li><a class="reference internal" href="#qbzr">qbzr</a></li> </ul> </li> <li><a class="reference internal" href="#platform-specific-changes">Platform-specific changes</a><ul> <li><a class="reference internal" href="#microsoft-windows">Microsoft Windows</a></li> </ul> </li> <li><a class="reference internal" href="#api-changes">API changes</a></li> <li><a class="reference internal" href="#further-information">Further information</a></li> </ul> </li> </ul> <h3>This Page</h3> <ul class="this-page-menu"> <li><a href="../_sources/whats-new/whats-new-in-2.2.txt" rel="nofollow">Show Source</a></li> </ul> <div id="searchbox" style="display: none"> <h3>Quick search</h3> <form class="search" action="../search.html" method="get"> <input type="text" name="q" /> <input type="submit" value="Go" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> <p class="searchtip" style="font-size: 90%"> Enter search terms or a module, class or function name. </p> </div> <script type="text/javascript">$('#searchbox').show(0);</script> </div> </div> <div class="clearer"></div> </div> <div class="related"> <h3>Navigation</h3> <ul> <li><a href="http://bazaar.canonical.com/"> <img src="../_static/bzr icon 16.png" /> Home</a> | </li> <a href="http://doc.bazaar.canonical.com/en/">Documentation</a> | </li> <li><a href="../index.html">Table of Contents (2.6.0)</a> »</li> </ul> </div> <div class="footer"> © Copyright 2009-2011 Canonical Ltd. Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3. </div> </body> </html>