Bazaar Changelog

What's new in Bazaar 2.7.0

Feb 16, 2016
  • Improvements:
  • bzrlib.patches.parse_patches can optionally return a list of 'dirty' patch headers (prefixed with '==='). (Kit Randel, #1400567)
  • Bug Fixes:
  • 'acceptable_keys' from 'bazaar.conf' is now properly handled. (Vincent Ladeuil, #1249732)
  • Option names are now checked to be valid identifiers (including embedded dots or hyphens). Also ignore invalid references (i.e. using invalid option names) while expanding option values. (Vincent Ladeuil, #1235099)
  • Fix pyrex version checking to be more robust. (Andrew Starr-Bochicchio, #1030521 )
  • Forbid more operations for ReadonlyTransportDecorator so no more write methods can be used my mistake. (Vincent Ladeuil, #150196)
  • Internals:
  • Make all transport put_bytes() raises TypeError instead of AssertionError or UnicodeEncodeError when given unicode strings rather than bytes. (Vincent Ladeuil, #106898)
  • Use ssl.match_hostname from the python ssl module and stop carrying a specific version that has become obsolete. (Vincent Ladeuil, #1538480)
  • Changed Behaviour:
  • Also honor $XDG_CONFIG_HOME specification on Mac OS X platform. (Fabien Meghazi)
  • Testing:
  • Fix gpgme test failure starting on wily. (Vincent Ladeuil)
  • Fix racy http tests (TestBadStatusServer is so simple, it exposes a race in python 2.7.9. This happens only when both the http server and client are run in the same process.). Only tests are affected. (Vincent Ladeuil, #1451448)
  • Fix warnings on stderr caused by the atexit handler triggering for the wrong reason: the 'config' command should explicitly save the changes when modifying or removing an option and not rely on the atexit handler. (Vincent Ladeuil, #1331999)
  • Handle (minor) incompatible change in python 2.7.6 leading to test failures. Only tests are affected. (Vincent Ladeuil, #1303879)
  • Remove wrong assumption about how TCP server and client interact when run inside the same process. (Vincent Ladeuil, #1269886).
  • Rename assertWarns in bt.test_config so it doesn't clash with the assertWarns introduced in recent python (Vincent Ladeuil, #1514210)
  • Restrict access to '.netrc' in tests or recent python (2.7.5-8) will complain. (Vincent Ladeuil, #1233413)
  • Skip windows-only tests that start failing with python 2.7.9, there is no way to fix them without testing on windows itself. (Vincent Ladeuil, #1451448)
  • Take python 2.7.6 late (better than never) bugfix in ntpath.py into account. Only tests are affected (Vincent Ladeuil, #1303879).

New in Bazaar 2.6.0 (Aug 5, 2013)

  • External Compatibility Breaks:
  • ``bzr lp-propose --approve`` now also adds an "Approve" vote to the merge proposal. (Jonathan Lange)
  • New Features:
  • ``bzr switch --store`` now stores uncommitted changes in the branch, and restores them when switching back to the branch. (Aaron Bentley)
  • New option '--context' for 'bzr diff' command, to configure the amount of context (i.e. showing lines that have not changed). Also available as the named parameter 'context_lines' to bzrlib.diff.internal_diff(). (Paul Nixon)
  • The 'grep' plugin is now shipped with bzr. (Jelmer Vernooij)
  • The 'ping' plugin is now shipped with bzr. (Jelmer Vernooij)
  • Improvements:
  • ``bzr help env-variables`` now points users at ``bzr help configuration`` which has much more detailed information on the same stuff. (Robert Collins)
  • ``bzr lp-find-proposal`` now only cares about the revision-id that is specified, not the branch you use. This was enabled by a new API call in Launchpad's web service. (Aaron Bentley)
  • Implement authentication.conf password obfuscation, the password_encoding option can now be set to base64. (Florian Dorn)
  • Local configurations files (i.e. accessed on the local file system like ``bazaar.conf`` and ``locations.conf``) are now shared, reducing the number of IOs when querying a configuation option. (Vincent Ladeuil, #832042)
  • ``bzr lp-propose --approve`` now correctly specifies the approved revision and provides an "Approve" vote from the proposer, allowing for smoother interaction with downstream merge tools. (Jonathan Lange)
  • Bug Fixes:
  • Add a ``progress_bar`` configuration option defaulting to ``BZR_PROGRESS_BAR``. This can be set in ``bazaar.conf`` or specified from the command line with ``-Oprogress_bar=text``. (Vincent Ladeuil, #388275)
  • ``Authentication.Config`` now always returns unicode user names and passwords. (Vincent Ladeuil, #514301)
  • Fixed a bug where the entire contents of ``/etc/mailname`` is read in. We only want to read in the first line so that comments could be added and would be ignored. (Haw Loeung, #932515)
  • Fixed a syntax error in ``doc/ja/user-guide/http_smart_server.txt`` that causes breakage with docutils 0.9.1. (Vincent Ladeuil, Jelmer Vernooij, #1066307)
  • Support utf8 characters in platform names even without looking inside the box (Fedora's Schrödinger's Cat). (Toshio Kuratomi, Vincent Ladeuil, #1195783)
  • Warn when ``--show-base`` is used for ``pull`` in a treeless branch instead of failing. It's useless but harmless. (Vincent Ladeuil, #1022160)
  • When a missing referenced chk root error is encountered, bzr now suggests running ``bzr reconcile --canonicalize-chks``. (Jelmer Vernooij)
  • When pushing a specific revision, create the new working tree at that revision. (#484516, Neil Martinsen-Burrell)
  • Documentation:
  • Clarify ``bzr config`` usages especially around other option references expansion. (Vincent Ladeuil, #996401)
  • Internals:
  • Add __iter__ to http ResponseFile. (Jelmer Vernooij, #1184021)
  • The launchpad plugin now requires API 1.6.0 or later. This version shipped with Ubuntu 9.10. (Aaron Bentley)
  • Better align with upstream gzip.py in tuned_gzip.py. We may lose a bit of performance but that's for knit and weave formats and already partly deprecated, better keep compatibility than failing fast ;) (Vincent Ladeuil, #1116079)
  • Testing:
  • Fix test failures occurring only with LC_ALL=C, when prompting a user, ``stderr`` encoding should be preferred over terminal encoding if available. (Vincent Ladeuil, #1086209)

New in Bazaar 2.6 Beta 2 (Jul 25, 2012)

  • New Features:
  • New option ``--overwrite-tags`` for ``bzr pull`` and ``bzr push``. (Jelmer Vernooij, #681792)
  • Improvements:
  • Colocated branches can now be addressed using the 'co:NAME' rather than the more complex 'file://.,branch=NAME'. (Jelmer Vernooij, #833665)
  • Bug Fixes:
  • "bzr missing" now shows tag names when displaying revision information. (#559072, Neil Martinsen-Burrell)
  • Fix ``branch.conf`` saving when unlocking the branch for BranchFormat4. (Vincent Ladeuil, #1020007)
  • Implement ``ResponseFile.readline`` and ``ReponseFile.tell``, fixing some clones over HTTP. (Jelmer Vernooij, #963769)
  • Option values set on locked branches should be saved only when the branch is finally unlocked. (Vincent Ladeuil, #948339)
  • Documentation:
  • Document "bzr lp-propose", "bzr register-branch" and the other Launchpad plugin commands in bzr(1). (Jelmer Vernooij, #843801, #163995)
  • Force format registration to avoid generate_docs.py traceback when the registry is empty. (Vincent Ladeuil, #956860)
  • Generate ``ENVIRONMENT`` section in bzr(1) from known environment variable list rather than hardcoding. (Jelmer Vernooij, #197618)
  • API Changes:
  • ``register_filter_stack_map`` and ``lazy_register_filter_stack_map`` are noew deprecated. Instead, use ``filter_stacks_registry.register`` and ``filter_stacks_registry.register_lazy``. (Jelmer Vernooij)
  • Remove deprecated Branch.import_last_revision(). (Jelmer Vernooij)
  • Remove deprecated ``RepositoryFormat.register_format``. (Jelmer Vernooij)
  • Remove deprecated Repository.get_ancestry(). (Jelmer Vernooij)
  • Remove deprecated Repository.iter_reverse_revision_history(). (Jelmer Vernooij)
  • The previously deprecated ``bzrlib.annotate.annotate_file`` function has been removed. (Jelmer Vernooij)

New in Bazaar 2.5.1 (May 30, 2012)

  • IMPROVEMENTS:
  • ``bzr rmbranch`` now supports removing colocated branches. (Jelmer Vernooij, #920653)
  • ``bzr rmbranch`` no longer removes active branches unless ``--force`` is specified. (Jelmer Vernooij, #922953)
  • BUG FIXES:
  • Connecting with HTTPS via HTTP now correctly uses the host name of the destination rather than the proxy when checking certificates. (Martin Packman, #944696)
  • Fixed merge tool availability checking and invocation to search the Windows App Path registry in addition to the PATH. (Gordon Tyler, #939605)
  • Fixed problem with getting errors about failing to open /dev/tty when using Bazaar Explorer to sign commits. (Mark Grandi, #847388)
  • Fix UnicodeEncodeError when translated progress task messages contain non-ascii text. (Martin Packman, #966934)
  • Make sure configuration options can provide their own help topic. (Jelmer Vernooij, #941672)
  • DOCUMENTATION:
  • The alpha-quality texinfo sphinx builder has been deprecated. Sphinx >= 1.1.2 now provides a better one. Most of the documentation can now be generated to the texinfo format with ``make texinfo-sphinx``. This will generate both the ``.texi`` files and the ``.info`` ones. (Vincent Ladeuil, #940164)
  • TESTING:
  • Add support for pyftpdlib >= 0.7.0 and drop support for previous pyftpdlib versions. (Vincent Ladeuil, #956027)
  • Run smoketest for setup.py isolated in a tempdir. (Martin Packman, #140874)

New in Bazaar 2.6 Beta 1 (Mar 21, 2012)

  • Improvements:
  • Access to HTTPS URLs now uses the urrllib implementation by default. For the old pycurl-based implementation, specify ``https+pycurl://`` as the URL scheme when accessing a HTTPS location. (Jelmer Vernooij, #125055)
  • Add short option alias ``-N`` for ``--no-recurse``. (Jelmer Vernooij, #945904)
  • Avoid 'Invalid range access' errors when whole files are retrieved with transport.http.get() . (Vincent Ladeuil, #924746)
  • ``bzr rmbranch`` now supports removing colocated branches. (Jelmer Vernooij, #920653)
  • ``bzr rmbranch`` no longer removes active branches unless ``--force`` is specified. (Jelmer Vernooij, #922953)
  • ``bzr verify-signatures`` now shows a progress bar. (Jelmer Vernooij)
  • Two new command hooks, ``pre_command`` and ``post_command``, provide notification before and after a command has been run. (Brian de Alwis, Jelmer Vernooij)
  • Bug Fixes:
  • Fix ``bzr config`` display for ``RegistryOption`` values. (Vincent Ladeuil, #930182)
  • Documentation:
  • Prevent lines of command descriptions starting with a dot to accidentally be interpreted as a roff macro in bzr(1). (Jelmer Vernooij, #711079)
  • Properly format apostrophes in manual page. (Jelmer Vernooij, #234771)
  • API Changes:
  • ``GPGStrategy.do_verifications`` has been deprecated. (Jelmer Vernooij)
  • File ids in the ``Tree`` API can now be bytestring as previously, or tuples of bytestrings. (Jelmer Vernooij)
  • ``mail_client`` now accepts a configuration stack object rather than an old style Config object. (Jelmer Vernooij)
  • New method ``Repository.verify_revision_signatures``. (Jelmer Vernooij)
  • New configuration option class ``RegistryOption`` which is backed onto a registry. (Jelmer Vernooij)
  • New convenience API method ``WorkingTree.get_config_stack``. (Jelmer Vernooij)
  • Remove deprecated ``Branch.set_revision_history`` and ``Branch.revision_history`` methods and the ``set_rh`` hook on ``Branch``. (Jelmer Vernooij)
  • Remove ``branch.PullResult.__int__`` deprecated in 2.3.0, ``branch.PushResult.__int__`` deprecated in 2.3.0, ``branch.BranchFormat.get_default_format`` deprecated in 2.4.0, ``branch.BranchFormat.get_formats`` deprecated in 2.4.0, ``branch.BranchFormat.set_default_format`` deprecated in 2.4.0, ``branch.BranchFormat.register_format`` deprecated in 2.4.0, ``branch.BranchFormat.unregister_format`` deprecated in 2.4.0, ``bzrdir.BzrDir.generate_backup_name`` deprecated in 2.3.0, ``bzrdir.BzrProber.register_bzrdir_format`` deprecated in 2.4.0, ``bzrdir.BzrProber.unregister_bzrdir_format`` deprecated in 2.4.0, ``config.Config.get_editor`` deprecated in 2.4.0, ``hooks.known_hooks_key_to_parent_and_attribute`` deprecated in 2.3, ``hooks.Hooks.create_hook`` deprecated in 2.4, ``inventory.Inventory.__contains__`` deprecated in 2.4.0, ``merge.Merge3Merger.scalar_three_way`` deprecated in 2.2.0, ``merge.Merge3Merger.fix_root`` deprecated in 2.4.0, ``transform.TreeTransformBase.has_named_child`` deprecated in 2.3.0, ``transform.get_backup_name`` deprecated in 2.3.0, ``transform._get_backup_name`` deprecated in 2.3.0, ``workingtree.WorkingTreeFormat.get_default_format`` deprecated in 2.4.0, ``workingtree.WorkingTreeFormat.register_format`` deprecated in 2.4.0, ``workingtree.WorkingTreeFormat.register_extra_format`` deprecated in 2.4.0, ``workingtree.WorkingTreeFormat.unregister_extra_format`` deprecated in 2.4.0, ``workingtree.WorkingTreeFormat.get_formats`` deprecated in 2.4.0, ``workingtree.WorkingTreeFormat.set_default_format`` deprecated in 2.4.0, ``workingtree.WorkingTreeFormat.unregister_format`` deprecated in 2.4.0, (Vincent Ladeuil)
  • Internals:
  • ``Tree.path2id`` now once again accepts a list of path elements in addition to a path. (Jelmer Vernooij)
  • Turn config option expansion on by default. The only options for which this should be disabled are templates which should already have used conf.get(option, expand=False) or conf.get_user_option(option, expand=False). (Vincent Ladeuil)

New in Bazaar 2.5.0 (Mar 8, 2012)

  • Improvements:
  • The names of colocated branches are used as branch nicks if no nick is specified. (Aaron Bentley)
  • Bug Fixes:
  • Show locks in ``bzr info`` on control directories without a repository. (Jelmer Vernooij, #936767)
  • Disable ssl certificate verification on osx and windows until a native access to the the root certificates is provided there. (Vincent Ladeuil, #929179)
  • Testing:
  • Stop depending on the particular CPython ordering of dictionary keys when testing the result of BzrDir.get_branches. (Wouter van Heyst)

New in Bazaar 2.5 Beta 6 (Feb 13, 2012)

  • New Features:
  • Support for colocated branches is now available in the default format ("2a"). (Jelmer Vernooij)
  • Improvements:
  • ``bzr switch -b`` in a standalone tree will now create a colocated branch. (Jelmer Vernooij, #918197)
  • ``bzr info`` now reports when there are present (but unused) colocated branches. (Jelmer Vernooij, #891646)
  • Checkouts can now be into target directories that already have a control directory (but no branch or working tree). (Jelmer Vernooij, #913980)
  • Colocated branches can now have names including forward slashes, to allow for namespaces. (Jelmer Vernooij, #907980)
  • New HPSS call for ``BzrDir.get_branches``. (Jelmer Vernooij, #894460)
  • Checkouts of colocated branches are now always lightweight. (Jelmer Vernooij, #918828)
  • Bug Fixes:
  • ``bzr branch`` now fetches revisions when branching into an empty control directory. (Jelmer Vernooij, #905594)
  • A sane default is provided for ``ssl.ca_certs`` which should points to the Certificate Authority bundle for supported platforms. (Vincent Ladeuil, #920455)
  • ``bzr branch`` generates correct target branch locations again if not specified. (Jelmer Vernooij, #919218)
  • ``bzr send`` works on treeless branches again. (Jelmer Vernooij, #921591)
  • ``bzr version`` no longer throws a UnicodeDecodeError if the .bzr.log path contains non-ascii characters. (Martin Packman, #312841)
  • Support scripts that don't call bzrlib.initialize() but still call run_bzr(). (Vincent Ladeuil, #917733)
  • Test for equality instead of object identity where ROOT_PARENT is concerned. (Wouter van Heyst, #881142)
  • urllib-based HTTPS client connections now verify the server certificate validity as well as the hostname. (Jelmer Vernooij, Vincent Ladeuil, #651161)
  • API Changes:
  • ``config.config_dir`` and related functions now always return paths as unicode. (Martin Packman, #825826)
  • ``ControlDir`` now has a new method ``set_branch_reference`` which can be used for setting branch references. (Jelmer Vernooij)
  • ``ControlDir.destroy_branch`` now raises ``NotBranchError`` rather than ``NoSuchFile`` if the branch didn't exist. (Jelmer Vernooij, #921693)
  • Internals:
  • A new matcher ``RevisionHistoryMatches`` has been added. (Jelmer Vernooij)
  • Add new module ``bzrlib.url_policy_open``. (Jelmer Vernooij, #850843)
  • ``MutableTree`` has two new hooks ``pre_transform`` and ``post_transform`` that are called for tree transform operations. (Jelmer Vernooij, #912084)
  • Testing:
  • Be more careful about closing open files for pypy interoperability. (Wouter van Heyst)

New in Bazaar 2.5 Beta 5 (Jan 21, 2012)

  • External Compatibility Breaks:
  • The '.bzr/branch/email' file is no longer read to determine the users' identity. Instead, the 'email' setting in '.bzr/branch/branch.conf' should be used. (Jelmer Vernooij, #903894)
  • New Features:
  • "bzr mkdir" now includes -p (--parents) option for recursively adding parent directories. (Jared Hance, Jelmer Vernooij, #253529)
  • ``config.Option`` can now declare ``override_from_env``, a list of environment variables which, when set, that takes precedence over values defined in configuration files. (Vincent Ladeuil, #907279)
  • Improvements:
  • New HPSS call for ``Repository.reconcile``. (Jelmer Vernooij, #894455)
  • Merge now has two new hooks ``pre_merge`` and ``post_merge`` that are called before and after a merge and can make additional modifications to the trees involved. (Jelmer Vernooij, #906877)
  • Override the value returned by ``sys.getfilesystemencoding()`` for the bzr script to utf-8 when it would otherwise be ascii on a posix system. This will mean bzr works with non-ascii files when no locale or an incorrect locale is set. (Martin Packman, #794353)
  • ``bzr branches`` now indicates the active colocated branch. (Jelmer Vernooij, #891667)
  • ``bzr push`` now suggests using :parent if there is a parent location set. (Jelmer Vernooij)
  • ``bzr send`` now only opens a single connection, rather than two, to the target branch. (Jelmer Vernooij)
  • Bug Fixes:
  • Allow configuration option default value to be a python callable at registration. (Vincent Ladeuil, #832064)
  • ``bzr config`` will now display the section ``[DEFAULT]`` used in ``bazaar.conf``. (Vincent Ladeuil, #907268)
  • Configuration stores can now provides a specific quoting mechanism. This is required to workaround ``configobj`` conflating quoting and list values automatic conversion. (Vincent Ladeuil, #906897)
  • Create obsolete_packs directory when repacking if it does not exist. (Jonathan Riddell, Jelmer Vernooij, #314314)
  • Fallback to the slower ``bzr log`` implementation when displaying a range of revisions whose ancestry is not obviously on the same developement line. (Vincent Ladeuil, #904744)
  • Make lazy imports resilient when resolved concurrently from multiple threads. Now the stand-in object will behave as a proxy for the real object after the initial access, rather than throwing. Assigning the object to multiple names should still be avoided. (Martin von Gagern, #396819)
  • Not setting ``gpg_signing_key`` or setting it to ``default`` will use the user email (obtained from the ``email`` configuration option or its default value). (Vincent Ladeuil, Jelmer Vernooij, #904550)
  • Prevent spurious InconsistentDelta error when committing a move of a non-ascii directory with contents. (Rory Yorke, #185211)
  • Properly ignore '\n' in an option reference since this cannot be part of a config option identifier. (Vincent Ladeuil, #902125)
  • Make sure that the bzr probers are always registered when bzrlib.workingtree is imported. (Jelmer Vernooij, #905218)
  • Report mistake trying to move a removed file with a non-ascii name without UnicodeEncodeError being raised. (Martin Packman, #898541)
  • Safely unquote configuration values in weird edge cases (a section seen as a dictionary which is not a supported use case for the configuration stacks). (Vincent Ladeuil, #908050)
  • Stop altering ``sys.platform`` on OSX when initialising the locale. (Martin Packman, #570495)
  • Uncommit no longer removes tags if they are part of the working trees pending merges. (Jelmer Vernooij, #905462)
  • API Changes:
  • ``Config.signature_needed``, ``Config.signing_policy``, ``Config.gpg_signing_key``, ``Config.gpg_signing_command``, ``Config.checking_policy`` and ``Config.post_commit`` are now deprecated. (Jelmer Vernooij)
  • ``Repository.get_commit_builder`` now takes a ``config_stack`` rather than a ``config`` argument. (Jelmer Vernooij)
  • Scripts using bzrlib should now ensure setlocale is called on posix platforms if they need a non-ascii user encoding. (Martin Packman)
  • Send formats now accept a new optional argument ``submit_branch``, which can be None or a Branch object for the submit branch location. (Jelmer Vernooij)
  • ``VersionedFileRepository.add_revision`` no longer takes a ``config`` argument. (Jelmer Vernooij)
  • Internals:
  • Add HPSS call for ``Branch.get_checkout_format``. (Jelmer Vernooij, #894459)
  • Add HPSS call for ``Repository.pack``. (Jelmer Vernooij, #894461)
  • Add HPSS calls for ``Repository.iter_files_bytes``, speeding up several commands including ``bzr export`` and ``bzr co --lightweight``. (Jelmer Vernooij, #608640)
  • All bzr control directories, branch formats, repository formats and working tree formats now support feature flags, which are serialized in their respective format files. See ``doc/developers/feature-flags.txt`` for details. (Jelmer Vernooij)
  • ``bzrlib.urlutils`` now includes ``quote`` and ``unquote`` functions, rather than importing them from ``urllib``. This prevents loading of the ``socket``, ``ssl`` and ``urllib`` modules for local bzr operations. (Jelmer Vernooij)
  • Configuration options can be SI units by using ``int_SI_from_unicode`` as their ``convert_from_unicode`` helper. (Vincent Ladeuil)
  • Configuration stacks can now use ``StartingPathMatcher`` to select the sections matching a location while respecting the order chosen by the user in the configuration file: from generic sections to specific sections. (Vincent Ladeuil, #832046).
  • Configuration stores can now save incremental changes by using ``save_changes()`` instead of ``save()``. This reduces the number or required input/outputs and allows stores to be shared between stacks. (Vincent Ladeuil)
  • ControlDir now has a get_branches method that returns a dictionary whose keys are the names of the branches and whose values are the branches themselves. The active branch uses the key None. (Neil Martinsen-Burrell)
  • Helper ``osutils.path_from_environ`` added for extracting a unicode path from an environment variable. (Martin Packman, #832028)
  • Helper ``win32utils.get_environ_unicode`` added for avoiding encoding problems with ``os.environ.get`` use. (Martin Packman, #262874)
  • Lazy imports can now only be absolute. (Jelmer Vernooij)
  • Merge3Mergers now have an optional ``other_branch`` argument which contains the branch from which the ``other_tree`` was obtained, if any. (Jelmer Vernooij)
  • MutableTree now has a hook ``post_build_tree`` which is called after a new mutable tree has been created. (Jelmer Vernooij, #912765)
  • New HPSS call ``BzrDir.checkout_metadir``. (Jelmer Vernooij, #894459)
  • New HPSS call ``VersionedFileRepository.get_inventories``, speeding up various commands including ``bzr export``, ``bzr checkout`` and ``bzr cat``. (Jelmer Vernooij, #608640)
  • The ``ConfigCommandLineStore`` is now supported by ``bzr config`` and is seen as single no-name section of configuration options. (Vincent Ladeuil)
  • Testing:
  • New matcher ``ContainsNoVfsCalls`` which filters a list of HPSS calls for VFS requests. (Jelmer Vernooij)
  • New ``MemoryStack`` class allows for diskless tests and locally injected configuration stacks. Lower level tests for predefined set of options can be written without setting up configuration files. (Vincent Ladeuil)

New in Bazaar 2.5 Beta 4 (Dec 14, 2011)

  • New Features:
  • Provides a ``po_merge`` plugin to automatically merge ``.po`` files with ``msgmerge``. See ``bzr help po_merge`` for details. (Vincent Ladeuil, #884270)
  • Improvements:
  • ``bzr branch --stacked`` now only makes a single connection to the remote server rather than three. (Jelmer Vernooij, #444293)
  • ``bzr export --uncommitted`` will export the uncommitted tree. (Jelmer Vernooij, #555613)
  • ``bzr rmbranch`` can now remove colocated branches. (Jelmer Vernooij, #831464)
  • ``bzr status`` no longer shows shelves if files are specified. (Francis Devereux)
  • ``bzr switch`` now accepts colocated branch names to switch to. (Jelmer Vernooij, #826814)
  • Plugins can now register additional "location aliases". (Jelmer Vernooij)
  • Revision specifiers will now only browse as much history as they need to, rather than grabbing the whole history unnecessarily in some cases. (Jelmer Vernooij)
  • When using ``bzr switch`` to switch to a sibling of the current branch, the relative branch name should no longer be url-encoded. (Jelmer Vernooij)
  • Bug Fixes:
  • A new section local option ``basename`` is available to help support some ``bzr-pipeline`` workflows and more generally help mapping local paths to remote ones. See ``bzr help configuration`` for more details. (Vincent Ladeuil, #843211)
  • Add HPSS call for looking up revision numbers from revision ids on remote repositories. (Jelmer Vernooij, #640253)
  • Add HPSS call for retrieving file contents from remote repositories. Should improve performance for lightweight checkouts and exports of from remote repositories. (Jelmer Vernooij, #368717, #762330, #608640)
  • Allow lazy compiled patterns from ``bzrlib.lazy_regex`` to be pickled. (Jelmer Vernooij, #893149)
  • ``bzr info`` no longer shows empty output if only a control directory is present. (Jelmer Vernooij, #159098)
  • Cope with missing revision ids being specified to ``Repository.gather_stats`` HPSS call. (Jelmer Vernooij, #411290)
  • Fix test failures on windows related to locations.conf handling. (Vincent Ladeuil, #892992)
  • Fixed parsing of the timestamp given to ``commit --commit-time``. Now prohibits several invalid strings, reads the correct number of seconds, and gives a better error message if the time zone offset is not given. (Matt Giuca, #892657)
  • Give meaningful file/line references when reporting deprecation warnings for _CompatabilityThunkFeature based test features. (Vincent Ladeuil, #897718)
  • Make reporting of mistakes involving unversioned files with non-ascii filenames work again without 'Unprintable exception' being shown. (Martin Packman, #898408)
  • Provide names for lazily registered hooks. (Neil Martinsen-Burrell, #894609)
  • Raise BadIndexKey exception in btree_index when a key is too large, fixing an infinite recursion issue. (Shannon Weyrick, #720853)
  • Resolve regression from colocated branch path handling, by ensuring that unreserved characters are unquoted in URLs. (Martin Packman, #842223)
  • Split segments from URLs for colocated branches without assuming the combined form is a valid. (Martin Packman, #842233)
  • Support looking up revision numbers by revision id in empty branches. (Jelmer Vernooij, #535031)
  • Support verifying signatures on remote repositories. (Jelmer Vernooij, #889694)
  • Teach the bzr client how to reconnect if we get ``ConnectionReset`` while making an RPC request. This doesn't handle all possible network disconnects, but it should at least handle when the server is asked to shutdown gracefully. (John Arbash Meinel, #819604)
  • When a remote format is unknown, bzr will now print a single-line error message rather than a backtrace. (Jelmer Vernooij, #687226)
  • API Changes:
  • ``BzrDir.open_branch`` and ``BranchFormat.open`` now take an optional ``possible_transports`` argument. (Jelmer Vernooij)
  • New method ``Transport.set_segment_parameter``. (Jelmer Vernooij)
  • ``Repository.verify_revision`` has been renamed to ``Repository.verify_revision_signature``. (Jelmer Vernooij)
  • ``RevisionSpec.wants_revision_history`` now defaults to ``False`` and is deprecated. The ``revs`` argument of ``RevisionInfo.from_revision_id`` is now deprecated. (Jelmer Vernooij)
  • ``Tree.get_file_by_path`` is now deprecated. Use ``Tree.get_file`` instead. (Jelmer Vernooij, #666897)
  • Some global options for use with commands have been removed, construct an ``Option`` with the name instead. (Martin Packman)
  • The unused exception ``HistoryMissing`` has been removed. (Jelmer Vernooij)
  • Internals:
  • Add HPSS call for ``Repository.pack``. (Jelmer Vernooij, #894461)
  • ``bzr config`` uses the new configuration implementation. (Vincent Ladeuil)
  • Custom HPSS error handlers can now be installed in the smart server client using the ``error_translators`` and ``no_context_error_translators`` registries. (Jelmer Vernooij)
  • New HPSS calls ``Repository.has_signature_for_revision_id``, ``Repository.make_working_trees``, ``BzrDir.destroy_repository``, ``BzrDir.has_workingtree``, ``Repository.get_physical_lock_status``, ``Branch.get_physical_lock_status``, ``Branch.put_config_file``, ``Branch.break_lock``, ``BzrDir.destroy_branch``, ``Repository.break_lock``, ``VersionedFileRepository.get_serializer_format``, ``Repository.all_revision_ids``, ``Repository.start_write_group``, ``Repository.commit_write_group``, ``Repository.abort_write_group`` ``Repository.check_write_group``, ``Repository.iter_revisions``, ``Repository.add_signature_revision_text`` and ``Repository.get_revision_signature_text``. (Jelmer Vernooij)
  • ``RemoteBranch.get_config_stack`` and ``RemoteBzrDir.get_config_stack`` will now use HPSS calls where possible. (Jelmer Vernooij)
  • The registry of merge types has been moved to ``merge`` from ``option`` but ``merge.get_merge_type_registry`` remains as an accessor. (Martin Packman)
  • Testing:
  • Avoid failures in test_transform when OS error messages are localised. (Martin Packman, #891582)
  • Tests are now subject to a time limit: by default 300s, and 120s when run from 'make check', controlled by the `selftest.timeout` configuration option. This is currently not supported on Windows. (Martin Pool)

New in Bazaar 2.5 Beta 3 (Nov 15, 2011)

  • New Features:
  • The ``log_format`` configuration can be used with ``-Olog_format=line`` to change the format ``push`` and ``pull`` use to display the revisions. I.e.: ``bzr pull -v -Olog_format=short`` will use the ``short`` format instead of the default ``long`` one. (Vincent Ladeuil, #861472)
  • The new config scheme allows an alternative syntax for the 'appenpath' policy relying on option expansion and defining a new 'relpath' option local to a section. Instead of using ':policy=appendpath', the option value can de defined as 'option=xxxx/{relpath}'. (Vincent Ladeuil, #832013)
  • Improvements:
  • ``bzr info -v`` now shows the number of colocated branches for control directories that support them. (Jelmer Vernooij, #863285)
  • ``bzr version-info`` now takes a ``--revision`` argument. (Jelmer Vernooij, #238705)
  • ``bzr revno`` now takes a ``--revision`` argument. (Jelmer Vernooij, #870649)
  • ``bzr serve`` now can serve from URLs rather than just from the file system. I.e.: ``bzr serve -d lp:bzr`` or ``bzr serve -d file:///data/bzr`` (Jelmer Vernooij)
  • all input prompts are now char-based when possible, and can be forced to line-based mode by setting the ``BZR_TEXTUI_INPUT`` environment variable to 'line-based'. This replace the previous shelf UI only patch using ``INSIDE_EMACS``. (Benoît Pierre)
  • Bug Fixes:
  • ``bzr info`` now shows the master branch location too for treeless local branches. (Jelmer Vernooij, #258355)
  • ``bzr mkdir --quiet`` now does not print a line for every created directory. (Martin von Gagern, #869915)
  • ``bzr mv`` does not crash when attempting to move the root of a branch. (Jonathan Riddell, #809728)
  • ``bzr shelve`` now use ``UIFactory.choose`` for input handling, making it usable when creating a custom ``UIFactory`` implementation. (Benoît Pierre)
  • ``bzr clean-tree`` now use ``UIFactory.get_boolean`` for confirmation prompt, making it usable when using a custom ``UIFactory`` implementation. (Benoît Pierre)
  • If sending a crash through Apport fails report the Apport failure to bzr.log rather than stderr. (Jonathan Riddell, #766735)
  • ``bzr upgrade`` no longer treats 'already up-to-date' exceptions as errors. (Benoît Pierre, #716560).
  • ``bzr version-info`` no longer populates the clean state for custom templates unless {clean} is explicitly asked for. (Lawrence Mitchell, #882541)
  • Fix finding the CPU count when using Python >= 2.6 on BSD-based systems. (Jelmer Vernooij, #887151)
  • ``WorkingTree.clone()`` now supports its ``revision_id`` being set to the null revision. (Jelmer Vernooij, #876423)
  • ``WorkingTree.pull`` can now pull ``NULL_REVISION``. (Jelmer Vernooij, #887556)
  • API Changes:
  • ``Branch.revision_history`` is now deprecated. (Jelmer Vernooij, #799519)
  • Methods ``add`` and ``items`` of ``LRUCache`` and ``LRUSizeCache`` are deprecated. Use normal dict-style access instead. (Martin Packman)
  • New flag ``RepositoryFormat.supports_unreferenced_revisions`` which indicates whether revisions can be present in a repository without being referenced from e.g. a branch history at the same time. (Jelmer Vernooij)
  • ``UIFactory.choose`` has been added: prompt the user for a list of choices. (Benoît Pierre)
  • Internals:
  • ``ControlDirFormat`` now has a new method ``supports_transport`` which format implementations can use whether or not they can access a control dir over a particular transport. (Jelmer Vernooij)
  • ``BranchBuilder.build_commit`` now take ``parent_ids`` and ``allow_leftmost_as_ghost`` arguments. (Jelmer Vernooij)
  • Testing:
  • Ensure TestCase instances are deallocated immediately after running where possible. This greatly reduces the peak resource needs of a full test suite run. The new ``-Euncollected_cases`` selftest flag will add failures if any case which persists pasts its expected lifetime. (Martin Packman, #613247)
  • Report exceptions from child processes during fork instead of swallowing the error and reporting that everything went okay. (Martin Packman, #804130)

New in Bazaar 2.5 Beta 2 (Nov 2, 2011)

  • New Features:
  • A new ``-O`` standard option (common to all commands) have been added. It provides a value for a config option in the ``-Oname=value`` form that takes precedence over all definitions found in config files. It can be used multiple times to override different options. (Vincent Ladeuil, #491196)
  • ``bzr log`` now has an option called ``--omit-merges`` to omit those commits that merged branches, i.e. those having more than one parent. In order to avoid confusion, the previous command line option ``--include-merges`` has been renamed to ``--include-merged``. The old name of the command line option will still be accepted. The name change also affects ``bzr missing``. (Martin von Gagern)
  • ``bzr serve`` will now disconnect clients if they have not issued an RPC request after 5minutes. On POSIX platforms, this will also happen for ``bzr serve --inet``. This can be overridden with the configuration variable ``serve.client_timeout`` or in the command line parameter ``bzr serve --client-timeout=X``. Further, it is possible to request ``bzr serve [--inet]`` to shutdown gracefully by sending SIGHUP. It will finish the current request, and then close the connection. (John Arbash Meinel, #824797, #795025)
  • The new experimental format ``development-colo`` supports colocated branches. This format will eventually be merged back into the ``2a`` format when it has stabilized and there is adequate UI support for colocated branches. (Jelmer Vernooij, #831481)
  • Improvements:
  • Fixed a bug where ``bzr tags -r x..y`` loaded the branch history once for every revision in the range; it's now much faster. (Vincent Ladeuil, #857335)
  • ``bzr info -v`` can now be run against branches that don't support ``last_revision_info``, in which case the branch information will simply not be displayed. (Jelmer Vernooij)
  • Bug Fixes:
  • ``bzr shelve`` can now be used in emacs shells as the input handling is turned into a line-based one when ``INSIDE_EMACS`` is set (which is the case for all recent emacs versions). (Vincent Ladeuil, #856261)
  • ``bzr tags`` can now be used against remote repositories that do not provide access to the revision graph. (Jelmer Vernooij, #858942)
  • ``bzr update PATH`` will stop if you seem to be asking it to update anything less than a whole tree, because that's not supported by ``bzr``'s concept that the whole tree has a single basis revision. Previously, it would go ahead and update the whole tree, which was surprising. (Martin Pool, #557886)
  • Don't crash if ``bzrlib.initialize()`` has not been called while accessing configs. (Vincent Ladeuil, #863401)
  • Redirects between http and https no longer discard path information in some cases. (Jelmer Vernooij, #853765)
  • The ``--overwrite`` argument to ``bzr push`` and ``bzr pull`` no longer reports all tags as changed. (Jelmer Vernooij, #845396)
  • ``WorkingTree.get_file_mtime`` now raises NoSuchId if a file id is specified that is unknown. (Jelmer Vernooij, #847435)
  • API Changes:
  • ``Branch.get_revision_delta`` has been deprecated. Use ``Repository.get_revision_delta`` instead. (Jelmer Vernooij, #859712)
  • Plugins that implement custom protocols for ``bzr serve`` should now also take an argument ``timeout``. This is used by the the bzr protocol to close a connection if a client has been idle for more than X seconds. (Default 5minutes). (John Arbash Meinel)
  • ``Repository.fileids_altered_by_revision_ids`` has been moved to ``VersionedFileRepository`` and is no longer part of the standard ``Repository`` interface. (Jelmer Vernooij)
  • The argument ``include_merges`` to ``missing.find_unmerged`` has been renamed to ``include_merged``. The old name is still supported for now but will cause a deprecation warning. (Martin von Gagern)
  • The new method ``ControlDirFormat.is_initializable()`` returns a boolean indicating whether or not it is possible to use any of the initialization methods of that format to create a new control dir. (Jelmer Vernooij)
  • Internals:
  • ``Branch`` objects can now use a config stack with the newly introduced ``get_config_stack()``. Both ``get_config`` and ``get_config_stack`` can be used for the same branch but it's recommended to stick to one for a given option.
  • Testing:
  • Test scripts can now use ``bzr shelve`` and provide their input as complete lines. (Vincent Ladeuil, #856261)
  • Really corrupt the pack file without depending on a special length or value. (Vincent Ladeuil, #807032)

New in Bazaar 2.5 Beta 1 (Sep 21, 2011)

  • New Features:
  • A ``from_unicode`` parameter can be specified when registering a config option. This implements boolean, integer and list config options when the provided ``bool_from_store``, ``int_from_store`` and ``list_from_store`` are used for this parameter. (Vincent Ladeuil)
  • Accessing a packaging branch on Launchpad (eg, ``lp:ubuntu/bzr``) now checks to see if the most recent published source package version for that project is present in the branch tags. This should help developers trust whether the packaging branch is up-to-date and can be used for new changes. The level of verbosity is controlled by the config item ``launchpad.packaging_verbosity``.
  • Add a config option gpg_signing_key for setting which GPG key should be used to sign commits. Also default to using the gpg user identity which matches user_email() as set by whoami. (Jonathan Riddell, #68501)
  • An ``invalid`` parameter can be specified when registering a config option to decide what should be done when invalid values are encountered. 'warning' and 'error' will respectively emit a warning and ignore the value or errors out. (Vincent Ladeuil)
  • bzr add now skips large files in recursive mode. The default "large" size is 20MB, and is configurable via the add.maximum_file_size option. A value of 0 disables skipping. Named items passed to add are never skipped. (Shannon Weyrick, #54624)
  • ``bzr help configuration/`` display the help for ``option`` for all registered configuration options. (Vincent Ladeuil, #747050)
  • ``bzr log -m`` now matches message, author, committer and bugs instead of just matching the message. ``--message`` keeps its original meaning, while ``--match-message, --match-author, --match-committer`` and ``--match-bugs`` match each of those fields. (Jacek Sieka)
  • ``config.Option`` can now declare ``default_from_env``, a list of environment variables to get a default value from. (Vincent Ladeuil)
  • ``config.NameMatcher`` can be used to implement config stores and stacks that need to provide specific option values for arbitrary unique IDs (svn repository UUIDs, etc). (Vincent Ladeuil, #843638)
  • New builtin ``bzr branches`` command, which lists all colocated branches in a directory. (Jelmer Vernooij, #826820)
  • Relative local paths can now be specified in URL syntax by using the "file:" prefix. (Jelmer Vernooij)
  • Report commits signed with expired keys in ``verify-signatures``. (Jonathan Riddell, #804254)
  • Translations are now enabled for command help, errors and globally for any message using gettext given on output. (Jonathan Riddell, INADA Naoki, #83941)
  • Improvements:
  • ``bzr add`` will now warn about nested subtrees that are skipped. (Jelmer Vernooij, #187342)
  • ``bzr commit -m ''`` can now be used to force an empty commit message. Entering an empty commit message in the message editor still triggers an error. (Jelmer Vernooij)
  • ``bzr pull`` will now mention how many tags it has updated. (Jelmer Vernooij, #164450)
  • ``bzr tag`` no longer errors if a tag already exists but refers to the same revision, and will mention when a tag has been updated rather than created. (Jelmer Vernooij, #381203)
  • ``bzr uncommit`` will now remove tags that refer to removed revisions. The ``--keep-tags`` option can be used to prevent this behaviour. (Jelmer Vernooij, #605814)
  • Do not run i18n initialisation twice. (Jonathan Riddell)
  • Install translation .mo files. (Jonathan Riddell)
  • Locations printed by ``bzr upgrade`` are now formatted before display. (Jelmer Vernooij)
  • ``Repository.get_parent_map`` now estimates the size of the returned content more accurately. This means that we get closer to the desired 64kB/request. For repositories converted from svn, this can be an improvement of approx 5:1 in round trips to discover the whole history. (John Arbash Meinel)
  • Support a ``bugtracker`` option which is used by ``bzr commit --fixes`` if no bug tracker was specified on the command line. (Jelmer Vernooij, #334860)
  • Use gettext.NullTranslations in i18n to allow use of i18n even when translations are not turned on. (Jonathan Riddell)
  • Bug Fixes:
  • ``bzr commit`` now correctly reports missing files as "removed", not "modified". (Jelmer Vernooij, #553955)
  • ``bzr reconfigure`` will now allow multiple non-conflicting requests in a single invocation, e.g. ``--branch`` and ``--use-shared``. (Martin von Gagern, #842993)
  • A call to CHKInventory's filter-method will not result in a DuplicateFileId error, if you move a subfolder and change a file in that subfolder. (Bastian Bowe, #809901)
  • Branching from a stacked branch no longer does a ``get_parent_map`` request for each revisions that is in the stacked-on repository while determining what revisions need to be fetched. This mostly impacts branching initialy into an empty shared repository when the source is not the development focus. (John Arbash Meinel, #388269)
  • Decode ``BZR_HOME`` with fs encoding on posix platforms to avoid unicode errors. (Vincent Ladeuil, #822571)
  • Fix fallout from URL handling changes in 2.5 that caused an IndexError to be raised whenever a transport at the drive root was opened on windows. (Martin [gz], #841322)
  • Fixed loading of external merge tools from config to properly decode command-lines which contain embedded quotes. (Gordon Tyler, #828803)
  • Rather than an error being raised, a warning is now printed when the current user does not have permission to read a configuration file. (Jelmer Vernooij, #837324)
  • The pull command will now always use separate connections for the case where the destination is a heavyweight checkout of some remote branch on the same host as the source branch. (Martin von Gagern, #483661)
  • TreeTransformBase.fixup_new_roots no longer forces trees to have a root, so operations that use it, like merge, can now create trees without a root. (Aaron Bentley)
  • Documentation:
  • Release instructions refreshed. (Vincent Ladeuil)
  • API Changes:
  • ``BranchFormat.initialize`` now takes a ``append_revisions_only`` argument. (Jelmer Vernooij)
  • ``Branch._get_checkout_format`` now takes a ``lightweight`` argument which indicates if the format should be for a lightweight or a heavyweight checkout. (Jelmer Vernooij)
  • ``ControlDir.create_branch`` now takes a ``append_revisions_only`` argument. (Jelmer Vernooij)
  • New class ``URL`` in ``bzrlib.utils`` for managing parsed URLs. (Jelmer Vernooij)
  • New method ``Config.get_user_option_as_int_from_SI`` added for expanding a value in SI format (i.e. "20MB", "1GB") into its integer equivalent. (Shannon Weyrick)
  • New method ``InterTree.file_content_matches`` which checks that two files in different trees have the same contents. (Jelmer Vernooij)
  • New method ``Tree.get_file_verifier`` which allows tree implementations to return non-sha1 checksums to verify files. (Jelmer Vernooij, #720831)
  • New methods ``get_transport_from_path`` and ``get_transport_from_url`` have been added that only support opening from a path or a URL, unlike ``get_transport``. (Jelmer Vernooij)
  • New registry ``OptionRegistry`` specialized for configuration options. (Vincent Ladeuil)
  • Remove ``AtomicFile.closed`` which has been deprecated in bzr 0.10. (Vincent Ladeuil)
  • Remove ``commands._builtin_commands``, ``commands.shlex_split_unicode``, ``Command._maybe_expand_globs`` and ``Command.run_direct`` deprecated in 2.10 and 2.2.0. (Vincent Ladeuil)
  • Remove ``diff.get_trees_and_branches_to_diff`` deprecated in 2.2.0.
  • Remove ``log.calculate_view_revisions``, ``log._filter_revision_range``, ``log.get_view_revisions`` which have been deprecated in bzr 2.1.0. Also remove ``log.show_one_log`` which was never properly deprecated but wasn't used and is easy to inline if needed. (Vincent Ladeuil)
  • Remove ``trace.info``, ``trace.error`` and ``trace.show_log_error`` deprecated in 2.1.0. (Vincent Ladeuil)
  • Remove ``TransportListRegistry.set_default_transport``, as the concept of a default transport is currently unused. (Jelmer Vernooij)
  • Remove ``UIFactory.warn_cross_format_fetch`` and ``UIFactory.warn_experimental_format_fetch`` in favor of ``UIFactory.show_user_warning``. (Jelmer Vernooij)
  • ``Tags`` containers can now declare whether they support versioned tags and whether tags can refer to ghost tags. (Jelmer Vernooij)
  • ``Tags.merge_to`` now returns a dictionary with the updated tags and a set of conflicts, rather than just conflicts. (Jelmer Vernooij)
  • There is a new class `ContentFilterTree` that provides a facade for content filtering. The `filtered` parameter to `export` is deprecated in favor of passing a filtered tree, and the specific exporter plugins no longer support it. (Martin Pool)
  • ``Transport`` now has a ``_parsed_url`` attribute instead of separate ``_user``, ``_password``, ``_port``, ``_scheme``, ``_host`` and ``_path`` attributes. Proxies are provided for the moment but may be removed in the future. (Jelmer Vernooij)
  • Internals:
  • A new debug flag ``hpss_client_no_vfs`` will now cause the HPSS client to raise a ``HpssVfsRequestNotAllowed`` exception when a VFS request is attempted. (Jelmer Vernooij)
  • New method ``ControlDir._get_selected_branch`` which returns the colocated branch selected using path segment parameters. (Jelmer Vernooij, #380871)
  • Testing:
  • Blackbox tests (including test scripts) can be debugged interactively (see bzrlib.debug.BzrPdb for details). (Vincent Ladeuil)
  • `BranchBuilder.build_snapshot` now supports a "flush" action. This cleanly and reliably allows tests using `BranchBuilder` to construct branches that e.g. rename files out of a directory and unversion that directory in the same revision. Previously some changes were impossible due to the order that `build_snapshot` performs its actions. (Andrew Bennetts)
  • Don't require ``os.fdatasync`` to be defined on all supported OSes (BSD-based OSes don't define it). (Vincent Ladeuil, #822649)
  • Fix compatibility with testtools 0.9.12. (Jelmer Vernooij, #815423)
  • ``LockDir`` can now be run when the local hostname is ``localhost``. (Jelmer Vernooij, #825994)
  • ``ModuleAvailableFeature`` won't try to import already imported modules, allowing it to be used for modules with side-effects. (Vincent Ladeuil, #712474)
  • Output time stamps while running ``make check`` to get better timings from pqm. (Vincent Ladeuil, #837926)
  • `TestCaseWithMemoryTransport` is faster now: `_check_safety_net` now just compares the bytes in the dirstate file to its pristine state, rather than opening the WorkingTree and calling ``last_revision()``. This reduces the overall test suite time by about 10% on my laptop. (Andrew Bennetts)
  • Update `TestCase.knownFailure` to the testtools way of handling expected failures to resolve Python 2.7 incompatibility. (Martin [gz], #607400)

New in Bazaar 2.4.1 (Sep 14, 2011)

  • Bug Fixes:
  • ``config.LocationMatcher`` properly excludes unrelated sections. (Vincent Ladeuil, #829237)
  • ``dirstate.fdatasync`` and ``repository.fdatasync`` can now properly be disabled. (Vincent Ladeuil, #824513)
  • Disable ``os.fsync`` and ``os.fdatasync`` by default when running ``bzr selftest``. You can use ``--sync`` to re-enable them. (John Arbash Meinel, #837293)
  • Fix i18n use when no environment variables are set. (Jelmer Vernooij, #810701)
  • Avoid UnicodeDecode error when reporting EINVAL from transports. (IWATA Hidetaka, #829237)
  • Documentation:
  • Corrected documentation for BZR_PROGRESS_BAR. (Dennis Benzinger, #735417)
  • Testing:
  • The test suite should now be able to run under weird environments where ``/etc/passwd`` doesn't contain the ``uid`` for the user running selftest or where ``fakeroot`` is used but ``/root`` is inacessible. (Vincent Ladeuil, #825027)

New in Bazaar 2.4.0 (Aug 30, 2011)

  • Bug Fixes:
  • A call to CHKInventory's filter-method will not result in a DuplicateFileId error, if you move a subfolder and change a file in that subfolder. (Bastian Bowe, #809901)
  • Accessing a packaging branch on Launchpad (eg, ``lp:ubuntu/bzr``) now checks to see if the most recent published source package version for that project is present in the branch tags. This should help developers trust whether the packaging branch is up-to-date and can be used for new changes. The level of verbosity is controlled by the config item ``launchpad.packaging_verbosity``. Cope with not all Python versions having a ``clear`` method on ``TestCase._type_equality_funcs``. (Martin [gz], Jelmer Vernooij, #809048)
  • Fetching tags when fetching the tip revision of a branch is now controlled by the config setting ``branch.fetch_tags``. The behavior has been reverted to 2.3's not-fetching tagged revisions by default. (John Arbash Meinel, #771184)
  • The fix for bug #513709 caused us to open a new connection when switching a lightweight checkout that was pointing at a bound branch. This isn't necessary because we know the master URL without opening it, avoiding an extra SSH connection, etc. (John Arbash Meinel, #812285)
  • Testing:
  • `BranchBuilder.build_snapshot` now supports a "flush" action. This cleanly and reliably allows tests using `BranchBuilder` to construct branches that e.g. rename files out of a directory and unversion that directory in the same revision. Previously some changes were impossible due to the order that `build_snapshot` performs its actions. (Andrew Bennetts)
  • `TestCaseWithMemoryTransport` is faster now: `_check_safety_net` now just compares the bytes in the dirstate file to its pristine state, rather than opening the WorkingTree and calling ``last_revision()``. This reduces the overall test suite time by about 10% on my laptop. (Andrew Bennetts)

New in Bazaar 2.3.4 (Jul 20, 2011)

  • Bug Fixes:
  • Accept some differences for ``bound_location`` from the config files that were leading to a 'ReadOnlyError: A write attempt was made in a read only transaction' error. (Vincent Ladeuil, #786980)
  • Don't fail with traceback if `bzr serve` is running as a service on Windows, and there is no USERNAME, nor BZR_EMAIL or other whoami-related environment variables set. (Alexander Belchenko, Bug #660174)
  • Documentation:
  • Updated the "Using stacked branches" section of the user guide to describe committing to stacked branches and expanded its discussion of pushing a stacked branch. (Andrew Bennetts)
  • Testing:
  • Remove the deprecation decorators for ``failUnlessExists`` and ``failIfExists``. The deprecation "will" occur in 2.4, not before. Providing the wrappers is enough as far as 2.3 is concerned. (Vincent Ladeuil #794960)

New in Bazaar 2.4 Beta 5 (Jul 11, 2011)

  • New Features:
  • New command ``verify-signatures`` to check if all commits or specified commits have digital signatures from trusted keys. Requires python-gpgme to be installed.
  • New option ``--signatures`` for ``bzr log`` to display digital signature verification results for each commit.
  • Config option acceptable_keys to list which GPG keys are verified as trusted.
  • Config option validate_signatures_in_log to always show signatures in ``bzr log``.
  • Improvements:
  • ``Branch.open`` is now about 3x faster (about 2ms instead of 6.5ms). (Andrew Bennetts).
  • Bug Fixes:
  • Display a proper error message when a config file content cannot be decoded as UTF-8 or when it cannot be parsed. (Vincent Ladeuil, #502060, #688677, #797246)
  • Generate a single conflict (instead of two) when merging a branch modifying and renaming a file in a branch that deleted it (or vice-versa). (Vincent Ladeuil, #688101)
  • Give a more helpful message when the bzr executable doesn't match the library. (This typically happens because of a misconfigured PYTHONPATH or half-installed bzr.) (Martin Pool, #804553)
  • Properly load utf8-encoded config files. (Vincent Ladeuil, #799212)
  • ``GraphThunkIdsToKeys.merge_sort`` now properly returns keys rather than ids. (Jelmer Vernooij, #799677)
  • ``TreeTransformBase.fixup_new_roots`` can now check that a tree root is present. (Jelmer Vernooij, #801257)
  • API Changes:
  • New attributes ``WorkingTreeFormat.supports_versioned_directories`` and ``RepositoryFormat.supports_versioned_directories``. (Jelmer Vernooij, #765815)
  • The "revno" field type when using the python version-info format is now a string (to handle dotted revnos) (Benoît Pierre, #796259)
  • Internals:
  • Start implementing localization, starting with command help text (but not the command options themselves). This will allow bootstrapping the bzr internationalization process. (Inada Naoki)
  • Testing:
  • Fix test failures when running as a homeless user (debian buildd). Tests leaking into ``${HOME}/.bzr.log`` should be detected properly now. (Vincent Ladeuil, #798698)

New in Bazaar 2.4 Beta 3 (May 31, 2011)

  • External Compatibility Breaks:
  • ``bzr-2.4`` has officially dropped support for python2.4 and python2.5. We will continue to maintain ``bzr-2.3`` for people who still need to use those versions of python. (John Arbash Meinel)
  • New Features:
  • The text compressor used for 2a repositories now has a tweakable parameter that can be set in bazaar.conf. ``bzr.groupcompress.max_entries_per_source`` default of 65536. When doing compression, we build up an index of locations to match against. Setting this higher will result in slightly better compression, at a cost of more memory. Note that a value of 65k represents fully sampling a 1MB file. So this only has an effect when compressing texts larger than N*16 bytes. (John Arbash Meinel, #602614)
  • Improvements:
  • ``bzr branch --stacked`` from a smart server uses the network a little more efficiently. For a simple branch it reduces the number of round-trips by about 20%. (Andrew Bennetts)
  • ``bzr log --line`` scales the width of the author field with the size of the line. This means that the full author name is shown when the environment variable BZR_COLUMNS=0. (Neil Martinsen-Burrell)
  • ``bzr pull`` now properly triggers the fast ``CHKInventory.iter_changes`` rather than the slow generic inter-Inventory changes. It used to use a ``DirStateRevisionTree`` as one of the source trees, which is faster when we have to read the whole inventory anyway, but much slower when we can get just the delta out of the repository. On a 70k record tree, this changes ``bzr pull`` from 28s down to 17s. (John Arbash Meinel, #780677)
  • Slightly reduced memory consumption when fetching into a 2a repository by reusing existing caching a little better. (Andrew Bennetts)
  • Speed up ``bzr status`` by a little bit when there are a couple of modified files. We now track how many files we have seen that need updating, and only rewrite the dirstate file if enough of them have changed. The default is 10, and can be overridden by setting the branch option "``bzr.workingtree.worth_saving_limit``". (Ian Clatworthy, John Arbash Meinel, #380202)
  • Speed up ``bzr uncommit``. Instead of resetting the dirstate from scratch, use ``update_basis_by_delta``, computing the delta from the repository. (John Arbash Meinel, #780544)
  • Bug Fixes:
  • All Tree types can now be exported as tar.*, zip or directories. (Aaron Bentley)
  • ``bzr merge --no-remember location`` never sets ``submit_branch``. (Vincent Ladeuil, #782169)
  • ``bzr pull --no-remember location`` never sets ``parent_location``. ``bzr push --no-remember location`` never sets ``push_location``. ``bzr send --no-remember submit_location public_location`` never sets ``submit_branch`` nor ``public_branch``. (Vincent Ladeuil)
  • Conflicts involving non-ascii filenames are now properly reported rather than failing with a UnicodeEncodeError. (Martin [GZ], #686161)
  • Correct parent is now set when using 'switch -b' with bound branches. (A. S. Budden, #513709)
  • Fix `bzr plugins` regression in bzr 2.4 which resulted in a traceback from writelines on ckj terminals. (Martin [GZ], #754082)
  • ``WT.inventory`` and ``WT.iter_entries_by_dir()`` was not correctly reporting subdirectories that were tree references (in formats that supported them). (John Arbash Meinel, #764677)
  • Merging into empty branches now gives an error as this is currently not supported. (Jonathan Riddell, #242175)
  • Do not show exception to user on pointless commit error (Jonathan Riddell #317357)
  • ``WT.update_basis_by_delta`` no longer requires that the deltas match the current WT state. This allows ``update_basis_by_delta`` to be used by more commands than just commit. Updating with a delta allows us to not load the whole inventory, which can take 10+s with large trees. (Jonathan Riddell, John Arbash Meinel, #781168)
  • Documentation:
  • Restore the workaround for option names including dots (--1.14) which was disabled when we stopped listing --1.9 as a format. (Vincent Ladeuil, #782289)
  • API Changes:
  • ``annotate_file`` has been deprecated in favor of ``annotate_file_revision_tree``. (Jelmer Vernooij, #775598)
  • ``Branch.fetch`` now takes an optional ``limit`` argument. (Andrew Bennetts, Jelmer Vernooij, #750175)
  • ``Inter.get`` now raises ``NoCompatibleInter`` if there are no compatible optimisers rather than an instance of the class it is called on. (Jelmer Vernooij)
  • ``Branch.push`` now takes a ``lossy`` argument. ``Branch.lossy_push`` has been removed. (Jelmer Vernooij)
  • New method ``Repository.get_file_graph`` which can return the per-file revision graph. (Jelmer Vernooij, #775578)
  • The default implementation of ``Branch`` is now oriented to storing the branch tip. Branch implementations which store the full history should now subclass ``FullHistoryBzrBranch``. ``Branch._last_revision_info`` has been renamed to ``Branch._read_last_revision_info`` (Jelmer Vernooij)
  • ``Tree.__iter__`` has been deprecated; use ``Tree.all_file_ids`` instead. (Jelmer Vernooij)
  • ``Tree.get_symlink_target`` now takes an optional ``path`` argument. (Jelmer Vernooij)
  • Internals:
  • Removed ``bzrlib.branch._run_with_write_locked_target`` as ``bzrlib.cleanup`` provides the same functionality in a more general way. (Andrew Bennetts)
  • Testing:
  • A test that was expected to fail but passes instead now counts as a failure catching up with new testtools and subunit handling. (Martin [GZ], #654474)
  • Make it easier for plugins to reuse the per_workingtree scenarios by restoring the wt_scenarios helper that was accidentally deleted. (Vincent Ladeuil, #783472)
  • Removed ``test_breakin`` tests that were excessively prone to hanging, did not work on Wine, and partly already disabled. (Martin Pool, #408814, #746985)
  • Windows locations are different and should be tested accordingly. (Vincent Ladeuil, #788131)

New in Bazaar 2.3.3 (May 20, 2011)

  • This fixed a bug in the test suite triggered by python-2.7 deprecating some
  • tests helpers.
  • Testing: Stop using `failIf`, `failUnless`, `failIfEqual`, etc, that give `PendingDeprecationWarnings` on Python2.7. (Martin Pool, #760435)

New in Bazaar 2.4 Beta 2 (Apr 29, 2011)

  • External Compatibility Breaks:
  • Two command synonyms for ``bzr branch`` have been deprecated, to avoid confusion and to allow the names to later be reused. The removed names are: ``get`` and ``clone``. (Martin Pool, #506265)
  • New Features:
  • ``bzr commit`` now supports a ``--lossy`` argument that can be used to discard any data that can not be natively represented when committing to a foreign VCS. (Jelmer Vernooij, #587721)
  • Improvements:
  • ``bzr merge`` in large trees is now significantly faster. On a 70k entry tree, the time went from ~3min down to 30s. (John Arbash Meinel, #759091)
  • Resolve ``lp:FOO`` urls locally rather than doing an XMLRPC request if the user has done ``bzr launchpad-login``. The bzr+ssh URLs were already being handed off to the remote server anyway (xmlrpc has been mapping ``lp:bzr`` to ``bzr+ssh://bazaar.launchpad.net/+branch/bzr``, rather than ``bzr+ssh://bazaar.launchpad.net/~bzr-pqm/bzr/bzr.dev`` for a few months now.) By doing it ourselves, we can cut out substantial startup time. From Netherlands to London it was taking 368ms to do the XMLRPC call as much as 2s from Sydney. You can test the local logic by using ``-Dlaunchpad``. (John Arbash Meinel, #397739)
  • When building a new WorkingTree (such as during ``bzr co`` or ``bzr branch``) we now properly store the stat and hash of files that are old enough. This saves a fair amount of time on the first ``bzr status`` (on a 500MB tree, it saves about 30+s). (John Arbash Meinel, #740932)
  • Bug Fixes:
  • Arguments that can't be decoded to unicode in the current posix locale give a clearer error message without a traceback. (Martin [gz], #745712)
  • ``bzrlib.log._DEFAULT_REQUEST_PARAMS`` is no longer accidentally mutated by ``bzrlib.log._apply_log_request_defaults``. In practice these default values aren't relied on very often so this probably wasn't causing any trouble. (Andrew Bennetts)
  • ``bzr log`` now works on revisions which are not in the current branch. (Matt Giuca, #241998)
  • Lazy hooks are now reset between test runs. (Jelmer Vernooij, #745566)
  • ``bzrlib.merge.Merge`` now calls ``iter_changes`` without ``include_unversioned=True``. This makes it significantly faster in many cases, because it only looks at modified files, rather than building information about all files. This can cause failures in other TreeTransform code, because it had been expecting to know the names of things which had not changed (such as parent directories). All cases we know about so far have been fixed, but there may be fallout for edge cases that we are missing. (John Arbash Meinel, #759091)
  • Standalone bzr.exe installation on Windows: user can put additional python libraries into ``site-packages`` subdirectory of the installation directory, this might be required for "installing" extra dependencies for some plugins. (Alexander Belchenko, #743256)
  • ``TreeTransform.create_file/new_file`` can now take an optional ``sha1`` parameter. If supplied, when the transform is applied, it will then call ``self._tree._observed_sha1`` for those files. This lets us update the hash-cache for content that we create, preventing us from re-reading the content in the next ``bzr status``. (John Arbash Meinel, #740932)
  • Documentation:
  • Added a section about using a shared SSH account on a server for bzr+ssh access. (Russell Smith)
  • The documentation now recommends using SSH rather than SFTP in the tutorials and the examples, because that will generally be much faster and better in cases where it can be used. SFTP is still available and mentioned as an alternative. (Martin Pool, #636712)
  • API Changes:
  • Commands now have an `invoked_as` attribute, showing the name under which they were called before alias expansion. (Martin Pool)
  • ``Hooks.create_hook`` is now deprecated in favour of ``Hooks.add_hook``. (Jelmer Vernooij)
  • If you call `bzrlib.initialize` but forget to enter the resulting object as a context manager, bzrlib will now be initialized anyhow. (Previously simple programs calling bzrlib might find the library was mysteriously silent.) (Martin Pool)
  • Inventory-specific functionality has been split out of ``Tree`` into a new ``InventoryTree`` class. Tree instances no longer necessarily provide an ``inventory`` attribute. (Jelmer Vernooij)
  • Inventory-specific functionality has been split out of ``RevisionTree`` into a new ``InventoryRevisionTree`` class. RevisionTree instances no longer necessarily provide an ``inventory`` attribute. (Jelmer Vernooij)
  • New method ``Hooks.uninstall_named_hook``. (Jelmer Vernooij, #301472)
  • ``revision_graph_can_have_wrong_parents`` is now an attribute on ``RepositoryFormat`` rather than a method on ``Repository``. (Jelmer Vernooij)
  • ``Testament`` now takes a ``tree`` rather than an ``inventory``. (Jelmer Vernooij, #762608)
  • ``TestCase.failUnlessExists`` and ``failIfExists`` are deprecated in favour of ``assertPathExists`` and ``assertPathDoesNotExist`` respectively. (Martin Pool)
  • The ``revno`` parameter of ``log.LogRevision`` may now be None, representing a revision which is not in the current branch. (Matt Giuca, #241998)
  • The various knit pack repository format classes have been moved from ``bzrlib.repofmt.pack_repo`` to ``bzrlib.repofmt.knitpack_repo``. (Jelmer Vernooij)
  • ``RevisionTree`` now has a new method ``get_file_revision``. (Jelmer Vernooij)
  • ``WorkingTree`` no longer provides an ``inventory``. Instead, all inventory-related functionality is now on the subclass ``InventoryWorkingTree`` that all native Bazaar working tree implementations derive from. (Jelmer Vernooij)
  • Internals:
  • Added ``osutils.lstat`` and ``osutils.fstat``. These are just the ``os`` functions on Linux, but they are wrapped on Windows so that fstat matches lstat results across all python versions. (John Arbash Meinel)
  • ``WorkingTree._observed_sha1`` also updates the 'size' column. It happened to be updated as a side-effect of commit, but if we start using the function elsewhere we might as well do it directly. (John Arbash Meinel)
  • Testing:
  • Stop using `failIf`, `failUnless`, `failIfEqual`, etc, that give `PendingDeprecationWarnings` on Python2.7. (Martin Pool, #760435)

New in Bazaar 2.4 Beta 1 (Mar 29, 2011)

  • New Features:
  • Added ``changelog_merge`` plugin for merging changes to ``Changelog`` files in GNU format. See ``bzr help changelog_merge`` for details. (Andrew Bennetts)
  • Configuration options can now use references to other options in the same file by enclosing them with curly brackets (``{other_opt}``). This makes it possible to use, for example, ``push_location=lp:~vila/bzr/config-{nickname}`` in ``branch.conf`` when using a loom. During the beta period, the default behaviour is to disable this feature. It can be activated by declaring ``bzr.config.expand = True`` in ``bazaar.conf``. (Vincent Ladeuil)
  • External merge tools can now be configured in bazaar.conf. See ``bzr help configuration`` for more information. (Gordon Tyler, #489915)
  • The ``lp:`` directory service now supports Launchpad's QA staging. (Jelmer Vernooij, #667483)
  • Improvements:
  • A new hidden command ``bzr repair-workingtree``. This is a way to force the dirstate file to be rebuilt, rather than using a ``bzr checkout`` workaround. (John Arbash Meinel)
  • Added a ``Branch.heads_to_fetch`` RPC to the smart server protocol. This allows formats from plugins (such as looms) to efficiently tell the client which revisions need to be fetched. (Andrew Bennetts)
  • Branching, merging and pulling a branch now copies revisions named in tags, not just the tag metadata. (Andrew Bennetts, #309682)
  • ``bzr cat-revision`` no longer requires a working tree. (Jelmer Vernooij, #704405)
  • ``bzr export --per-file-timestamps`` for .tar.gz files will now override the mtime for trees exported on Python 2.7 and later, which expose the 'mtime' field in gzip files. This makes the output of ``bzr export --per-file-timestamps`` for a particular tree deterministic. (Jelmer Vernooij, #711226)
  • ``bzr export --format=zip`` can now export to standard output, like the other exporters can. (Jelmer Vernooij, #513752)
  • ``bzr export`` can now create ``.tar.xz`` and ``.tar.lzma`` files. (Jelmer Vernooij, #551714)
  • Bug Fixes:
  • A MemoryError thrown on the server during a remote operation will now be usefully reported, and other unexpected errors will include the class name. (Martin [gz], #722416)
  • ``bzr annotate -r-1 file`` will now properly annotate a deleted file. (Andrew King, #537442)
  • ``bzr export`` to zip files will now set a mode on directories. (Jelmer Vernooij, #207253)
  • ``bzr export`` to tgz files will only write out the basename of the tarfile to the gzip file. (Jelmer Vernooij, #102234)
  • ``bzr push --overwrite`` with an older revision specified will now correctly roll back the target branch. (Jelmer Vernooij, #386576)
  • ``bzr lp-propose`` can now propose merges against packaging branches on Launchpad without requiring the target branch to be specified. (Jelmer Vernooij, #704647)
  • ``bzr lp-propose`` no longer requires a reviewer to be specified. It will instead leave setting the reviewer up to Launchpad if it was not specified. (Jelmer Vernooij, #583772)
  • ``bzr pull`` will now exit with exit code 1 if there were tag conflicts. (Jelmer Vernooij, #213185)
  • ``bzr mv`` user errors no longer throw UnicodeEncodeError with non-ascii paths, however they may still print junk if not on a UTF-8 terminal. (Martin [gz], #707954)
  • ``bzr reconfigure --unstacked`` now copies revisions (and their ancestors) named in tags into the unstacked repository, not just the ancestry of the branch's tip. (Andrew Bennetts, #401646)
  • ``bzr serve`` no longer crashes when a server_started hook is installed and IPv6 support is available on the system. (Jelmer Vernooij, #293697)
  • ``bzr tags`` will no longer choke on branches with ghost revisions in their mainline and tags on revisions not in the branch ancestry. (Jelmer Vernooij, #397556)
  • ``bzr whoami`` will now display an error if both a new identity and ``--email`` were specified. (Jelmer Vernooij, #680449)
  • ``launchpadlib`` doesn't provide the ``uris`` module in some old versions. (Vincent Ladeuil, #706835)
  • Empty entries in the ``NO_PROXY`` variable are no longer treated as matching every host. (Martin Pool, #586341)
  • Plugins incompatible with the current version of bzr no longer produce a warning on every command invocation. Instead, a message is shown by ``bzr plugins`` and in crash reports. (#704195, Martin Pool)
  • The "pretty" version of ``needs_read_lock`` and ``needs_write_lock`` now preserves the identity of default parameter values. (Andrew Bennetts, #718569)
  • ``bzr dump-btree --raw`` no longer tracebacks on a B-Tree file containing no rows. (Eric Siegerman, #715508)
  • Fix ``bzr lp-mirror`` to work on command line branch URLs and branches without an explicit public location. (Max Bowsher)
  • On Python 2.6 and higher, use multiprocessing.cpu_count() to retrieve the number of available processors. (Jelmer Vernooij, #693140)
  • API Changes:
  • Added ``Branch.heads_to_fetch`` method. Implementions of the Branch API must now inherit or implement this method. (Andrew Bennetts, #721328)
  • Added ``bzrlib.mergetools`` module with helper functions for working with the list of external merge tools. (Gordon Tyler, #489915)
  • All methods and arguments that were deprecated before 2.0 have been removed. (Jelmer Vernooij)
  • Branch formats should now be registered on the format registry (``bzrlib.branch.format_registry``) rather than using the class methods on ``BranchFormat``. (Jelmer Vernooij, #714729)
  • ``BranchFormat.supports_leaving_lock()`` and ``RepositoryFormat.supports_leaving_lock`` flags have been added. (Jelmer Vernooij)
  • ``Branch.fetch`` implementations must now accept an optional ``fetch_spec`` keyword argument. (Andrew Bennetts)
  • ``Branch.import_last_revision_info`` is deprecated. Use the ``import_last_revision_info_and_tags`` method instead. (Andrew Bennetts)
  • ``ControlDirFormat.register_format`` has been removed. Instead, ``Prober`` implementations should now implement a ``known_formats`` method. (Jelmer Vernooij)
  • ``bzrlib.revionspec.dwim_revspecs`` is deprecated. Use ``bzrlib.revisionspec.RevisionSpec_dwim.append_possible_revspec`` and ``bzrlib.revisionspec.RevisionSpec_dwim.append_possible_lazy_revspec`` instead. (Jelmer Vernooij, #721971)
  • ``BzrDirFormat`` has a new attribute ``fixed_components`` that indicates whether the components of the bzrdir can be upgraded independent of the ``BzrDir``. (Jelmer Vernooij)
  • ``BzrProber.register_format`` and ``BzrProber.unregister_format`` are now deprecated in favour of the ``BzrProber.formats`` format registry. (Jelmer Vernooij)
  • ``ControlDir`` implementations no longer have to provide the ``get_branch_transport``, ``get_workingtree_transport`` and ``get_repository_transport`` methods. (Jelmer Vernooij, #730325)
  • ``Converter`` has been moved from ``bzrlib.bzrdir`` to ``bzrlib.controldir``. (Jelmer Vernooij)
  • Repository formats can now provide ``_get_extra_interrepo_test_combinations`` in the same module to provide extra test combinations for ``bzrlib.tests.per_repository``. (Jelmer Vernooij)
  • Repository formats should now be registered on the format registry (``bzrlib.repository.format_registry``) rather than using the class methods on ``RepositoryFormat``. (Jelmer Vernooij)
  • Repository formats can now indicate they do not support the full VersionedFiles API by setting the ``supports_full_versioned_files`` attribute to False. A subset of the VersionedFiles API (signatures and text graphs) still needs to be supported. (Jelmer Vernooij)
  • Repository formats have a new method ``is_deprecated`` that implementations can override to return True to trigger a deprecation warning. (Jelmer Vernooij)
  • The ``revision_id`` parameter of ``Repository.search_missing_revision_ids`` and ``InterRepository.search_missing_revision_ids`` is deprecated. It is replaced by the ``revision_ids`` parameter. (Andrew Bennetts)
  • Working tree formats should now be registered on the format registry (``bzrlib.working_tree.format_registry``) rather than using the class methods on ``WorkingTreeFormat``. (Jelmer Vernooij, #714730)
  • Internals:
  • ``CatchingExceptionThread`` (formerly ThreadWithException) has been moved out of the ``bzrlib.tests`` hierarchy to make it clearer that it can be used outside of tests. This class makes it easier to track exceptions in threads by cacthing them so they can be re-raised in the controlling thread. It's available in the ``bzrlib.cethread`` module. (Vincent Ladeuil)
  • ``HookPoint.lazy_hook`` and ``Hooks.install_named_lazy_hook`` can install hooks for which the callable is loaded lazily. (Jelmer Vernooij)
  • Testing:
  • The Range parsing for HTTP requests will correctly parse incomplete ranges. (Vincent Ladeuil, #731240)

New in Bazaar 2.3.1 (Mar 15, 2011)

  • Bug Fixes:
  • Correctly resolve text conflicts for files in subdirs. (Vincent Ladeuil, #715058)
  • Fix "AssertionError: repository.user_url ... does not match URL from server response" when reusing a smart transport. (Andrew Bennetts, #726584)
  • Restore proper logging of bytes transferred. We accidentally reset the counter when commands finished before we logged the total transferred. (John Arbash Meinel, #713258)

New in Bazaar 2.3.0 (Feb 8, 2011)

  • This release marks the start of another long-term-stable series. From here, we will only make bugfix releases on the 2.3 series (2.3.1, etc, and support it until August 2012), while 2.4 will become our new development series. The 2.1 and 2.2 series will also continue to get bugfixes. (Currently 2.0 is planned to be EOLed circa September 2011 and will receive only critical bugfixes.)
  • This is a bugfix and polish release over the 2.2 series, with a large number of bugs fixed (>130), and some performance improvements. Some features have been enhanced including commits on stacked branches, upgrades of related branches, shortcut URL schemes for ubuntu and debian on launchpad and better conflict resolution.
  • Only bugfixes from other stables series have been included since 2.3b5 so all known fixed bugs are included here.

New in Bazaar 2.2.3 (Jan 28, 2011)

  • Compatibility Breaks:
  • Launchpad has announced that the ``edge.launchpad.net`` instance is deprecated and may be shut down in the future . Bazaar has therefore been updated in this release to talk to the main (``launchpad.net``) servers, rather than the ``edge`` ones. (Vincent Ladeuil, #583667)
  • Bug Fixes:
  • Avoid UnicodeDecodeError in ``bzr add`` with multiple files under a non-ascii path on windows from symlink support addition. (Martin [gz], #686611)
  • Correctly resolve content (and path) conflicts for files in subdirs. (Vincent Ladeuil, #660935)
  • Don't probe for a repository from within ``NotBranchError.__repr__``, because this can cause knock-on errors at awkward times. (Andrew Bennetts, #687653)
  • Fix a crash during ``RepositoryPackCollection.pack`` caused by a concurrent repository pack operation. This was particularly affecting ``bzr-svn`` users. (Andrew Bennetts, #701940)
  • ``https`` access works again with recent versions of python2.7. (Vincent Ladeuil, #693880)
  • RevisionTree.is_executable no longer returns None for directories and symlinks. Instead, it returns False, like other Trees and methods. (Aaron Bentley, #681885)

New in Bazaar 2.3 Beta 5 (Jan 20, 2011)

  • Improvements:
  • A redundant parent inventories calculation was removed from ``fetch.py``, as ``Repository.insert_stream`` already reports any missing inventories. This removes at least one network roundtrip when pushing to a stacked branch. (Andrew Bennetts)
  • ``ControlDir.sprout`` no longer opens the target repository more than once. This avoids some unnecessary IO, and removes a network roundtrip when doing ``bzr branch`` to a smart server URL. (Andrew Bennetts)
  • ``bzr modified`` now read-locks the working tree (and branch and repository) just once. (Andrew Bennetts)
  • ``bzr resolve`` now accepts ``--take-this`` and ``--take-other`` actions for text conflicts. This *replace* the whole file with the content designated by the action. This will *ignore* all differences that would have been merge cleanly otherwise. (Vincent Ladeuil, #638451)
  • ``bzr tags``'s "sort" argument now allows registering custom sort methods using the ``bzrlib.tag.tag_sort_methods`` registry. (Jelmer Vernooij, #701244)
  • ``bt.test_http`` was breaking ``os.environ`` by erasing the values saved by ``TestCase`` leading to ``bt.test_import_tariff`` failures. (Vincent Ladeuil, #690563)
  • ``upgrade`` now upgrades dependent branches when a shared repository is specified. It also supports new options: ``--dry-run`` for showing what will happen and ``--clean`` to remove the backup directory on successful completion. (Ian Clatworthy, Matthew Fuller, #89830, #374734, #422450)
  • Bug Fixes:
  • .. Fixes for situations where bzr would previously crash or give incorrect or undesirable results.
  • Avoid leaking SSH subprocess communication socket into unrelated child processes, which could cause bzr to hang on exit. (Max Bowsher, #696285)
  • ``bzr break-lock`` on a corrupted lock file works correctly, rather than raising a PermissionDenied error. We were accidentally holding open the file we were trying to delete. (John Arbash Meinel, #659978)
  • ``bzr update`` in a checkout of a readonly branch works again, without trying to set the tags in the master branch. This had been broken by the bug fix for bug #603395. (John Arbash Meinel, #701212)
  • Per-transport tests now prefer to use ``Transport.get_bytes()`` rather than ``Transport.get().read()``. The SFTP code uses an async message to close the file handle if you let the handle die from refcounting, while it uses a synchronous message if you close it directly. This should help prevent random test suite failures from race conditions. (John Arbash Meinel, #681047)
  • Stop using ``bzrlib.tuned_gzip.GzipFile``. It is incompatible with python-2.7 and was only used for Knit format repositories, which haven't been recommended since 2007. The file itself will be removed in the next release. (John Arbash Meinel)
  • The BZR_COLUMNS environment variable can be set to 0 to indicate no limitation on the width of the terminal. (Neil Martinsen-Burrell, #675652)
  • Treat WSAECONNABORTED the same as WSAECONNRESET for the purposes of considering a smart data stream as being interrupted. This fixes a failure in the windows test suite, that was trying to ensure we cleanly handled a server disconnect. (John Arbash Meinel, #581311, #686587)
  • Unshelving changes that occur in a now-unversioned directory now restore the directory properly rather than crashing. (John Arbash Meinel, #389674)
  • You are now able to commit directly to a stacked branch. Any needed parent inventories will be filled in as part of the commit process. (John Arbash Meinel, #375013)
  • Documentation:
  • Better document the rules to update the bzr freshmeat page when doing a release. (Vincent Ladeuil, #690515)
  • API Changes:
  • ``Branch.sprout``, ``BranchFormat.initalize`` and ``ControlDir.create_branch`` now take an optional ``repository`` keyword argument, and ``BranchFormat.open`` now takes an optional ``found_repository`` keyword argument. These provide the repository object for new branch object to use (for cases when the caller has already opened that repository). Implementations of these APIs will need to be updated to accept these arguments. (Andrew Bennetts)
  • ``bzrlib.tuned_gzip.GzipFile`` is now deprecated and will be removed in the bzr-2.4 series. Code that was using it can just use the python stdlib ``gzip.GzipFile``. (John Arbash Meinel)
  • Testing:
  • ``bzrlib.tests`` defines ``isolated_environ`` with the definitions of all the environment variables the tests should care about. It also defines ``override_os_environ`` and ``restore_os_environ`` to properly implement isolation from ``os.environ`` for tests. ``bzrlib.tests`` now defines a ``DocTestSuite`` class using this facility for all ``bzrlib`` doctests. (Vincent Ladeuil, #321320)
  • Catch exceptions related to bug #637821 during test cleanup to avoid spurious failures. (Vincent Ladeuil, #686008).
  • Check sphinx compatibility for tests requiring older sphinx versions. (Vincent Ladeuil, #688072)
  • ``test_onto_transport`` in the Launchpad plugin can now run with Python 2.7. (Vincent Ladeuil, #654733)
  • ``TestCase._captureVar`` and ``TestCase._old_env`` have been deleted due to bug #690563. Test writers are encouraged to use ``TestCase.overrideEnv`` instead. (Vincent Ladeuil)
  • ``TestDebuntuExpansions`` was escaping the test isolation by calling the wrong base class ``setUp``. (Vincent Ladeuil, #684662)

New in Bazaar 2.3 Beta 4 (Dec 9, 2010)

  • Improvements:
  • Bazaar now caches a branch's tags while that branch is read-locked. This removes 1 network roundtrip from most interactions with a remote branch. (Andrew Bennetts)
  • ``bzr config `` will now display only the value itself so scripts can use it to query the currently active configuration. Displaying several options matching a given regular expression is now controlled via the ``--all`` option. (Vincent Ladeuil, bug #670251)
  • ``bzr resolve`` now reports the number of conflicts resolved and the number of remaining conflicts. This provides a better feedback about the whole resolution process. (Vincent Ladeuil)
  • Read configuration files in $XDG_CONFIG_HOME/bazaar on Unix if there is already a directory there. (Neil Martinsen-Burrell, #195397)
  • Bug Fixes:
  • Better message if there is an error while setting ownership of ``.bazaar`` directory. (Parth Malwankar, #657553)
  • ``bzr config`` properly displays list values. (Vincent Ladeuil, #672382)
  • ``bzr config`` will now respect option policies when displaying the value and display the definition sections when appropriate. (Vincent Ladeuil, #671050)
  • Don't create commit message files in the current directory to avoid nasty interactions with emacs (which tries to establish the status of the file during the commit which breaks on windows). (Vincent Ladeuil, #673637)
  • ``bzr resolve --take-other `` will not crash anymore if ```` is involved in a text conflict (but the conflict is still not resolved). (Vincent Ladeuil, #646961)
  • Merge will now correctly locate a lca where there is a criss-cross merge of a new root. (Gary van der Merwe, #588698)
  • Report error if non-ASCII command option given. (Rory Yorke, #140563)
  • ``tools/check-newsbug.py`` is now based on ``lp:hydrazine`` and no longer crashes when encountering private bugs (they are just displayed as such). (Vincent Ladeuil, #354985)
  • Internals:
  • ``BranchBuilder.build_snapshot`` now accepts parent_ids == []. This can be used to create a new root in the graph. (Gary van der Merwe)
  • Old repository development formats RepositoryFormatCHK1 and RepositoryFormatCHK2 have been removed, and so have the corresponding metadir format options ``development-rich-root``, ``development6-rich-root``, and ``development7-rich-root``.
  • Testing:
  • Add a null_output_matches_anything keyword argument with default False to bzrlib.tests.script.ScriptRunner.run_script to specify that the command output should not be checked (as opposed to expecting an empty output). (Neil Martinsen-Burrell, #662509)
  • Blank output section in scriptrunner tests no longer match any output. Instead, use '...' as a wildcard if you don't care about the output. (Martin Pool, #637830)
  • Bump minimum testtools version required to run ``bzr selftest`` from 0.9.2 to 0.9.5 which will allow tests that need the fixed unicode handling to be written. (Martin [gz])
  • Printing selftest results to a non-UTF-8 console will now escape characters that can't be encoded rather than aborting the test run with an exception. (Martin [gz], #633216)

New in Bazaar 2.2.2 (Dec 1, 2010)

  • Bug Fixes|:
  • ``bzr resolve --take-other `` will not crash anymore if ```` is involved in a text conflict (but the conflict is still not resolved). (Vincent Ladeuil, #646961)
  • Commit in a bound branch or heavyweight checkout now propagates tags (e.g. from a merge) to the master branch (and informs the user if there is a conflict). (Andrew Bennetts, #603395)
  • Correctly set the Content-Type header when http POSTing to comply with stricter web frameworks. (Vincent Ladeuil, #665100)
  • ``NotBranchError`` no longer allows errors from calling ``bzrdir.open_repository()`` to propagate. This is unhelpful at best, and at worst can trigger infinite loops in callers. (Andrew Bennetts)
  • Skip tests that needs a bzr source tree when there isn't one. This is needed to succesfully run the test suite for installed versions. (Vincent Ladeuil, #644855).
  • Skip the tests that requires respecting the chmod bits when running as root. Including the one that wasn't present in 2.1. (Vincent Ladeuil, #646133)
  • Using bzr with `lp:` urls behind an http proxy should work. (Robert Collins, #558343)
  • Windows installers no longer requires the Microsoft vcredist to be installed. (Martin [gz], Gary van der Merwe, #632465)
  • Close leaked socket to SSH subprocesses, which caused dput sftp uploads to hang. (Max Bowsher, #659590)
  • Testing:
  • Add ``tests/ssl_certs/ca.crt`` to the required test files list. Test involving the pycurl https test server fail otherwise when running selftest from an installed version. (Vincent Ladeuil, #651706)
  • Fix tests that failed when run under ``LANG=C``. (Andrew Bennetts, #632387)

New in Bazaar 2.3 Beta 3 (Nov 9, 2010)

  • New Features:
  • Add --no-tree option to 'bzr push' and 'bzr init' for creating a new or mirrored branch without working trees. (Matthew Gordon, #506730)
  • ``bzr config`` is a new command that displays the configuration options for a given directory. It accepts a glob to match against multiple options at once. It can also be used to set or delete a configuration option in any configuration file. (Vincent Ladeuil)
  • New shortcut url schemes ``ubuntu:`` and ``debianlp:`` access source branches on Launchpad. E.g. ``bzr branch ubuntu:foo`` gives you the source branch for project ``foo`` in the current distroseries for Ubuntu while ``bzr branch debianlp:lenny/foo`` gives you the source branch (on Launchpad) for project ``foo`` in Debian Lenny. (Barry Warsaw, #609186)
  • Provide a configuration option "default_format" that controls the default format for new branches created with ``bzr init``. (Neil Martinsen-Burrell, #484101)
  • Bug Fixes:
  • Always set PATH in start_bzr.bat on Windows. (Matthäus G. Chajdas, #470264)
  • ``bzr status -r X..Y`` was failing because RevisionTree didn't implement ``get_shelf_manager``. (John Arbash Meinel, #662053)
  • Correctly add directory contents when the name was previously added as a normal file, rather than throwing ``AttributeError: children`` during smart_add. (Martin [gz], #251864)
  • Correctly handle the ``--directory`` option for all code paths of ``resolve`` and ``shelve``, this was previously ignored when paths were provided as parameters. When both are provided, ``--directory`` becomes the base directory for the other paths. (Vincent Ladeuil, #670851)
  • Correctly set the Content-Type header when http POSTing to comply with stricter web frameworks. (Vincent Ladeuil, #655100)
  • Don't force openssh to use protocol=2, since that is now the default. (Neil Martinsen-Burrell, #561061)
  • Fix ``KeyError: 'port'`` when getting the stored password for an http URL. (Martin Pool, #654684)
  • Make ``bzr tag --quiet`` really quiet. (Neil Martinsen-Burrell, #239523)
  • Missing files (files bzr add'ed and then OS deleted) are now shown in ``bzr status`` output. (Rory Yorke, #134168)
  • ``NotBranchError`` no longer allows errors from calling ``bzrdir.open_repository()`` to propagate. This is unhelpful at best, and at worst can trigger infinite loops in callers. (Andrew Bennetts)
  • Windows installers no longer requires the Microsoft vcredist to be installed. (Martin [gz], Gary van der Merwe, #632465)
  • Documentation:
  • Add documentation of the ability to edit hunks when shelving. (Neil Martinsen-Burrell, #517660)
  • Be more specific about the meaning of revision ranges for ``bzr diff``. (Neil Martinsen-Burrell, #247282)
  • Document the comment character in the .bzrignore file, including a workaround for ignore patterns that begin with #. (Neil Martinsen-Burrell, #621515)
  • API Changes:
  • Add ``bzrlib.pyutils`` module with helper functions for some Python tasks such as resolving a dotted name to a Python object (``get_named_object``). (Andrew Bennetts)
  • ``bzrlib.tests.ForwardingResult`` no longer exists. Use ``testtools.ExtendedToOriginalDecorator`` instead. (Andrew Bennetts)
  • ``known_hooks_key_to_parent_and_attribute`` in ``bzrlib.hooks`` has been deprecated in favour of ``known_hooks.key_to_parent_and_attribute`` in the same module. (Andrew Bennetts)
  • Internals:
  • ``tools/fixed-in.py`` find a bug in NEWS from its number or a regexp matching the news entry and display the corresponding release, date, fix authors and the news entry itself. (Vincent Ladeuil)
  • Testing:
  • Blank output section in scriptrunner tests no longer match any output. Instead, use '...' as a wildcard if you don't care about the output. (Martin Pool, #637830)
  • ``bzr test-script script`` is a new command that runs a shell-like script from an the ``script`` file. (Vincent Ladeuil)
  • Fix spurious test failures on babune related to the http pipe cleanup and get rid of some 'bytes left on the HTTP socket' useless log messages. (Vincent Ladeuil, #655557)
  • ``bzrlib.tests.per_workingtree.TestCaseWithWorkingTree.make_branch_builder`` respects its ``relpath`` parameter. (Vincent Ladeuil)

New in Bazaar 2.3 Beta 2 (Nov 4, 2010)

  • Compatibility Breaks:
  • The ``bzr tags`` command sorts tag names using a natural sort by default (so tag2 sorts before tag10). The previous default was strictly "asciibetical". That behavior is still available as ``bzr tags --sort=alpha``. (Neil Martinsen-Burrell, #640760)
  • New Features:
  • Add ``mainline`` revision specifier, which selects the revision that merged a specified revision into the mainline. (Aaron Bentley)
  • Add ``annotate`` revision specifier, which selects the revision that introduced a specified line of a file. (Aaron Bentley)
  • ``bzr status`` now displays a summary of existing shelves after the other status information. This is done using a ``post_status`` hook. (Parth Malwankar, #403687)
  • GNU lsh is now a supported lsh client; just set BZR_SSH to 'lsh'. Also, bzr will recognize if the 'ssh' comand is a symlink to lsh. (Matthew Gordon, #374700)
  • The ``pull`` and ``update`` commands now take a ``-show-base`` option that, in the case of conflicts, shows the base revision text. (Rory Yorke, #202374)
  • Bug Fixes:
  • ``bzr break-lock --force`` breaks the lock without prompting. (Before using this, make sure the process holding the lock really is dead.) (Martin Pool, #397315)
  • Don't force openssh to use protocol=2, since that is now the default. (Neil Martinsen-Burrell, #561061)
  • Fix signature of RemoteBzrDir.create_workingtree to match that of its superclass. (Neil Martinsen-Burrell, Martin Pool, #524627)
  • Fix traceback with python-2.7's xmlrpclib (Toshio Kuratomi, #612096)
  • Print junk rather than throwing a UnicodeDecodeError from ``bzr version-info`` when using the rio format (with non-ascii information) on a non-utf-8 terminal. (Andrej A Antonov, #518609)
  • Skip tests that needs a bzr source tree when there isn't one. This is needed to succesfully run the test suite for installed versions. (Vincent Ladeuil, #644855).
  • Skip the tests that requires respecting the chmod bits when running as root. (Vincent Ladeuil, #646133)
  • Treat all IO, OS, and socket errors consistently when establishing SSH/SFTP connections via a subprocess. (Andrew Bennetts)
  • ``unshelve --preview`` now can show diff in a non-ascii encoding. (Andrej A Antonov, #518916)
  • Improvements:
  • ``bzr remove`` now takes a ``--no-backup`` option for when you don't want it to backup anything, just delete it. This option used to be called ``--force`` which is now deprecated. (Marius Kruger, #400554)
  • Documentation:
  • Provide more detailed help on the Launchpad plugin at "bzr help plugins/launchpad". (Neil Martinsen-Burrell, #589379)
  • Suggest ``bzr revert`` for restoring locally deleted files in help text for ``bzr update``. (John C Barstow, #191466)
  • API Changes:
  • ``WorkingTree`` methods ``pull``, ``update``, and ``_update_tree`` now have an optional argument, ``show_base``, which is by default False. This is flag is ultimately passed to ``merge.merge_inner`` in each case. (Rory Yorke, #202374)
  • Internals:
  • Small change to GroupCompressBlock to work more in terms of 'chunks' rather than 'content' for its compressed storage. (John Arbash Meinel)
  • When running ``bzr selftest --subunit`` the subunit stream will no longer include the "log" information for tests which are considered to be 'successes' (success, xfail, skip, etc) (John Arbash Meinel)
  • Testing:
  • Add ``tests/ssl_certs/ca.crt`` to the required test files list. Test involving the pycurl https test server fail otherwise when running selftest from an installed version. (Vincent Ladeuil, #651706)
  • Fix tests that failed when run under ``LANG=C``. (Andrew Bennetts, #632387)
  • Suppress the "maximum recursion depth exceeded in __subclasscheck__" warning on stderr emitted during ``test_dict_deepnested`` in ``bzrlib/tests/test__bencode.py``. (Andrew Bennetts)
  • Use tests.TestCaseInTempDir for tests that requires disk resources. (Vincent Ladeuil, #650001)

New in Bazaar 2.3 Beta 1 (Sep 30, 2010)

  • Compatibility Breaks:
  • 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)
  • Additional merges after an unrelated branch has been merged with its history no longer crash when deleted files are involved. (Vincent Ladeuil, John Arbash Meinel, #375898)
  • ``bzr add SYMLINK/FILE`` now works properly when the symlink points to a previously-unversioned directory within the tree: the directory is marked versioned too. (Martin Pool, #192859)
  • ``bzr commit SYMLINK`` now works, rather than trying to commit the target of the symlink. (Martin Pool, John Arbash Meinel, #128562)
  • ``bzr upgrade`` now creates the ``backup.bzr`` directory with the same permissions as ``.bzr`` directory on a POSIX OS. (Parth Malwankar, #262450)
  • ``bzrlib.transform.TreeTransformBase.final_kind``, ``bzrlib.transform.TreeTransform.tree_kind`` and ``bzrlib.transform.TransformPreview.tree_kind`` now return None instead of raising NoSuchFile. (Vincent Ladeuil)
  • CommitBuilder now uses the committer instead of _config.username to generate the revision-id. (Aaron Bentley, #614404)
  • Configuration files in ``${BZR_HOME}`` are now written in an atomic way which should help avoid problems with concurrent writers. (Vincent Ladeuil, #525571)
  • `ControlDirFormat` and `ControlDir` have been split out of `BzrDirFormat` and `BzrDir`, respectively. `ControlDirFormat` and `ControlDir` should be used as the base classes for new non-.bzr implementations.
  • `BzrDirFormat.register_control_format` has been renamed to `ControlDirFormat.register_format`.
  • `BzrDirFormat.register_server_control_format` has been removed.
  • Probing for control directories is now done by separate objects derived from `bzrlib.controldir.Prober` and registered using `bzrlib.controldir.ControlDirFormat.register_prober` or `bzrlib.controldir.ControlDirFormat.register_server_prober`. `BzrDirFormat.probe_transport` has been moved onto `Prober`.
  • `BzrDirFormat.register_format` has been renamed to `BzrProber.register_bzrdir_format`.
  • `bzrlib.bzrdir.network_format_registry` has been moved to `bzrlib.controldir`.
  • (Jelmer Vernooij)
  • Cope with Microsoft FTP server that returns reply '250 Directory created' when mkdir succeeds. (Martin Pool, #224373)
  • Don't traceback when a lockdir's ``held/info`` file is corrupt (e.g. contains only NUL bytes). Instead warn the user, and allow ``bzr break-lock`` to remove it. (Andrew Bennetts, #619872)
  • `decode` parameter to get() method in FtpTransport and GioTransport classes is deprecated. (Alexander Belchenko)
  • `FileInWrongBranch` is deprecated in favour of `PathNotChild` and no longer raised. (Martin Pool)
  • Fix ``AttributeError on parent.children`` when adding a file under a directory that was a symlink in the previous commit. (Martin Pool, #192859)
  • Fix ``AttributeError: 'NoneType' object has no attribute 'close'`` in ``_close_ssh_proc`` when using ``bzr+ssh://``. This was causing connections to pre-1.6 bzr+ssh servers to fail, and causing warnings on stderr in some other circumstances. (Andrew Bennetts, #633745)
  • Only call ``setlocale`` in the bzr startup script on posix systems. This avoids an issue with the newer windows C runtimes used by Python 2.6 and later which can mangle bytestrings printed to the console. (Martin [gz], #631350)
  • Prevent ``CHKMap.apply_delta`` from generating non-canonical CHK maps, which can result in "missing referenced chk root keys" errors when fetching from repositories with affected revisions. (Andrew Bennetts, #522637)
  • Raise ValueError instead of a string exception. (John Arbash Meinel, #586926)
  • Reduce peak memory by one copy of compressed text. (John Arbash Meinel, #566940)
  • Repositories accessed via a smart server now reject being stacked on a repository in an incompatible format, as is the case when accessing them via other methods. This was causing fetches from those repositories via a smart server (e.g. using ``bzr branch``) to receive invalid data. (Andrew Bennetts, #562380)
  • Selftest with versions of subunit that support ``stopTestRun`` will no longer error. This error was caused by 2.0 not being updated when upstream python merged the end of run patch, which chose ``stopTestRun`` rather than ``done``. (Robert Collins, #571437)
  • Stop ``AttributeError: 'module' object has no attribute 'ElementTree'`` being thrown from ``xml_serializer`` on certain cElementTree setups. (Martin [gz], #254278)
  • The old ``bzr selftest --benchmark`` option has been removed. is an actively-maintained macrobenchmark suite. (Martin Pool)
  • `tree_files` and `internal_tree_files` are now deprecated in favor of `WorkingTree.open_containing_paths`. (Martin Pool)
  • Upgrading or fetching from a non-rich-root repository to a rich-root repository (e.g. from pack-0.92 to 2a) no longer fails with ``'Inter1and2Helper' object has no attribute 'source_repo'``. This was a regression from Bazaar 2.1. (Andrew Bennetts, #636930)
  • When passing a file to ``UTF8DirReader`` make sure to close the current directory file handle after the chdir fails. Otherwise when passing many filenames into a command line ``bzr status`` we would leak descriptors. (John Arbash Meinel, #583486)
  • New Features
  • ************
  • Added ``pre_status`` and ``post_status`` hooks. This allows plugins to register custom handlers which will be invoked before/after the standard status output is displayed. (Parth Malwankar)
  • ``bzr break-lock --config [location]`` can now break config files locks. (Vincent Ladeuil, #525571)
  • ``bzrlib.config.LockableConfig`` is a base class for config files that needs to be protected against multiple writers. All methods that change a configuration variable value must be decorated with @needs_write_lock (set_option() for example). (Vincent Ladeuil, #525571)
  • The ``lp:`` prefix will now use your known username (from ``bzr launchpad-login``) to expand ``~`` to your username. For example: ``bzr launchpad-login user && bzr push lp:~/project/branch`` will now push to ``lp:~user/project/branch``. (John Arbash Meinel)
  • New development format ``development8-subtree`` which is similar to the ``2a`` format and adds subtree support. (Jelmer Vernooij)
  • Bug Fixes:
  • Allow using both --using and --diff-options. (Matthäus G. Chajdas, #234708)
  • Allow using non-integer bug ID with generic bug trackers. (Alexandre Garnier, #440472)
  • ``bzr add SYMLINK/FILE`` now works properly when the symlink points to a previously-unversioned directory within the tree: the directory is marked versioned too. (Martin Pool, #192859)
  • ``bzr ignore PATTERNS`` exits with error if a bad pattern is supplied. ``InvalidPattern`` exception error message now shows faulting regular expression. (Parth Malwankar #300062)
  • ``clean-tree`` issues a warning if it is unable to delete a file due to ``errno.EACCES`` instead of exiting with an error on Windows. (Parth Malwankar, #430785)
  • CommitBuilder now uses the committer instead of _config.username to generate the revision-id. (Aaron Bentley, #614404)
  • Configuration files in ``${BZR_HOME}`` are now protected against concurrent writers by using a lock. (Vincent Ladeuil, #525571)
  • Cope with Microsoft FTP Server and VSFTPd that return reply '250 Directory created' when mkdir succeeds. (Martin Pool, #224373)
  • Decrease peak memory during ``bzr send``. The old code was caching all text content and all inventory strings for all revisions before computing the diffs. Now we only cache as long as there is a child that will need them. Sending 2000 bzr revisions drops from 1.2GB peak to 256MB peak. (John Arbash Meinel, #614576)
  • Don't print internal object name when print an invalid revision spec error. (Neil Martinsen-Burrell, #598701)
  • Don't traceback when a lockdir's ``held/info`` file is corrupt (e.g. contains only NUL bytes). Instead warn the user, and allow ``bzr break-lock`` to remove it. (Andrew Bennetts, #619872)
  • ``EPIPE`` can be raised during test server shutdown. This happened on gentoo only so far. (Vincent Ladeuil, #627277)
  • Errors occurring during http(s) test server starts should now be handled cleanly. (Vincent Ladeuil, #392402)
  • Fix ``AttributeError on parent.children`` when adding a file under a directory that was a symlink in the previous commit. (Martin Pool, #192859)
  • Fix ``AttributeError: 'NoneType' object has no attribute 'close'`` in ``_close_ssh_proc`` when using ``bzr+ssh://``. This was causing connections to pre-1.6 bzr+ssh servers to fail, and causing warnings on stderr in some other circumstances. (Andrew Bennetts, #633745)
  • Fix spurious paramiko warning on hardy by ensuring that ``selftest`` properly remove its warning filter. (Vincent Ladeuil, #625686)
  • ``HTTP/1.1`` test servers now set a ``Content-Length`` header to comply with pedantic ``HTTP/1.1`` clients. (Vincent Ladeuil, #568421)
  • Most of the leaked threads during selftest are now fixed, allowing the full test suite to pass on gentoo. (Vincent Ladeuil, #392127)
  • Only call ``setlocale`` in the bzr startup script on posix systems. This avoids an issue with the newer windows C runtimes used by Python 2.6 and later which can mangle bytestrings printed to the console. (Martin [gz], #631350)
  • `PathNotChild` should not give a traceback. (Martin Pool, #98735)
  • ``PQM`` will no longer ignore syntax errors in submissions. (Vincent Ladeuil, #626667)
  • Prevent ``CHKMap.apply_delta`` from generating non-canonical CHK maps, which can result in "missing referenced chk root keys" errors when fetching from repositories with affected revisions. (Andrew Bennetts, #522637)
  • strace test-helper tests cope with the new Ubuntu policy of not allowing users to attach to their own processes by default. (Martin Pool, #626679)
  • Test classes like ``TestCase``, ``TestLoader``, and ``TestSuite`` should be available from ``bzrlib.tests.*``. They used to be, but were accidentally removed. (John Arbash Meinel, #627438)
  • ``Transport.stat`` on a symlink, including a transport pointing directly to a symlink, now returns information about the symlink. (Martin Pool)
  • Upgrading or fetching from a non-rich-root repository to a rich-root repository (e.g. from pack-0.92 to 2a) no longer fails with ``'Inter1and2Helper' object has no attribute 'source_repo'``. (Andrew Bennetts, #636930)
  • Wait for the SSH server to actually finish, rather than just waiting for it to negotiate the key exchange. (John Arbash Meinel, #626876)
  • Improvements:
  • ``bzr remove`` now just backs up changed files instead of exiting, forcing you to choose to either keep or delete them. Bazaar will now delete the files if they can easily be recovered using revert, otherwise they will be backed up (adding an extention of the form .~#~). (Marius Kruger, #400554)
  • ``bzr revert`` and ``bzr status`` are up to 15% faster on large trees with many changes by not repeatedly building a list of all file-ids. (Andrew Bennetts)
  • Decrease memory consumption when many chk index pages are loaded. (Such as during ``bzr co`` or ``bzr ls -R`` of a large tree.) Often we need to read many chk pages because the individual chk map nodes will be spread randomly. Peak memory for 'bzr ls -R' on a large tree dropped from 396MB down to 247MB, expect even more significant savings on 64-bit platforms. (John Arbash Meinel)
  • ``DirState`` internals use a little bit less memory. For bzr.dev it drops the memory from 1MB down to about 800kB. And replaces a few thousand tuples and sets with StaticTuple. (John Arbash Meinel)
  • Inventory entries now consume less memory (on 32-bit Ubuntu file entries have dropped from 68 bytes to 40, and directory entries from 120 bytes to 48). (Andrew Bennetts)
  • When building new working trees, default to reading from the repository rather than the source tree unless explicitly requested. (via ``--files-from`` and ``--hardlink`` for ``bzr branch`` and ``bzr checkout``. Generally, 2a format repositories extract content faster than seeking and reading content from another tree, especially in cold-cache situations. (John Arbash Meinel, #607298)
  • Add ``__pycache__`` to the default ``ignores`` file. Future releases of Python will use this directory to store bytecodes. (Andrea Corbellini, #626687)
  • Documentation:
  • Added a builder/writer sphinx extension that can generate texinfo files. The generated files are syntactically correct but the info navigation nodes needs more work. (Vincent Ladeuil, #219334)
  • First tests defined for sphinx, including a new bzrlib.tests.features.sphinx to make the tests conditional. (Vincent Ladeuil)
  • Fix a lot of references in the docs to the old http://bazaar-vcs.org to the new http://bazaar.canonical.com or http://wiki.bazaar.canonical.com (John Arbash Meinel, #617503)
  • API Changes:
  • Configuration files should now use the ``from_string`` constructor rather than the ``file`` parameter of the ``_get_parser`` method. The later has been deprecated. ``from_string`` also accept a ``save=True`` parameter to have the configuration file immediately written to disk. (Vincent Ladeuil)
  • Deprecate treating a `PushResult` and `PullResult` as an integer for the relative change in revno. (Martin Pool) ```IniBaseConfig`` objects should now use the ``from_string`` constructor the rather than the ``file`` parameter of the ``_get_parser`` method. The later has been deprecated. (Vincent Ladeuil)
  • InventoryEntry instances now raise AttributeError if you try to assign to attributes that are irrelevant to that kind of entry. e.g. setting ``symlink_target`` on an InventoryFile will fail. It is still okay to read those attributes on any kind of InventoryEntry. The complete list of affected attributes is: ``executable``, ``text_id``, ``text_sha1``, ``text_size`` (only valid for kind == file); ``symlink_target`` (only valid for kind == link); and ``reference_revision`` (only valid for kind == tree-reference). (Andrew Bennetts)
  • InventoryEntry objects no longer have ``_put_in_tar`` or ``_put_on_disk`` methods. (Andrew Bennetts)
  • The ``get_filename`` parameter in the ``config.IniBaseConfig`` constructor has been deprecated, use the ``file_name`` parameter instead. (Vincent Ladeuil)
  • Internals:
  • Remove used and broken code path in ``BranchInitHookParams.__repr__``. (Andrew Bennetts)
  • Testing:
  • ``build_tree_contents`` can create symlinks. (Martin Pool, John Arbash Meinel)
  • Catch socket errors to avoid bt.test_sftp_transport.SSHVendorBadConnection.test_bad_connection_ssh random failures. (Vincent Ladeuil, #601804)
  • HTTP test servers will leak less threads (and sockets) and will not hang on AIX anymore. (Vincent Ladeuil, #405745)
  • On platforms that don't support forking give a nice error message saying so when ``bzr selftest --parallel=fork`` is used. (Martin [gz], #528730)
  • Rearrange thread leak detection code to eliminate global state and make it possible to extend the reporting. (Marting [gz], #633462)
  • The test suite now simply holds log files in memory, rather than writing them out to disk and then reading them back in and deleting them. (Andrew Bennetts)
  • The way ``bzr selftest --parallel`` generates N partitions of tests to run in parallel has changed. Instead of splitting the list of tests at N-1 points, it distributes the tests one-by-one into the partitions in a round robin fashion. This reduces the total time to run the tests in parallel because a series of slow tests in the test suite will be distributed evenly among the parallel test suites, rather than slowing down just one suite. (Andrew Bennetts)
  • Tracebacks from a parameterized test are no longer reported against every parameterization of that test. This was done by adding a hack to ``bzrlib.tests.clone_test`` so that it no longer causes testtools.TestCase instances to share a details dict. (Andrew Bennetts, #625574)

New in Bazaar 2.2.1 (Sep 30, 2010)

  • Bug Fixes:
  • Additional merges after an unrelated branch has been merged with its history no longer crash when deleted files are involved. (Vincent Ladeuil, John Arbash Meinel, #375898)
  • ``bzr add SYMLINK/FILE`` now works properly when the symlink points to a previously-unversioned directory within the tree: the directory is marked versioned too. (Martin Pool, #192859)
  • ``bzr commit SYMLINK`` now works, rather than trying to commit the target of the symlink. (Martin Pool, John Arbash Meinel, #128562)
  • ``bzr upgrade`` now creates the ``backup.bzr`` directory with the same permissions as ``.bzr`` directory on a POSIX OS. (Parth Malwankar, #262450)
  • CommitBuilder now uses the committer instead of _config.username to generate the revision-id. (Aaron Bentley, #614404)
  • Configuration files in ``${BZR_HOME}`` are now written in an atomic way which should help avoid problems with concurrent writers. (Vincent Ladeuil, #525571)
  • Cope with Microsoft FTP server that returns reply '250 Directory created' when mkdir succeeds. (Martin Pool, #224373)
  • Don't traceback trying to unversion children files of an already unversioned directory. (Vincent Ladeuil, #494221)
  • Don't traceback when a lockdir's ``held/info`` file is corrupt (e.g. contains only NUL bytes). Instead warn the user, and allow ``bzr break-lock`` to remove it. (Andrew Bennetts, #619872)
  • Fix ``AttributeError on parent.children`` when adding a file under a directory that was a symlink in the previous commit. (Martin Pool, #192859)
  • Fix ``AttributeError: 'NoneType' object has no attribute 'close'`` in ``_close_ssh_proc`` when using ``bzr+ssh://``. This was causing connections to pre-1.6 bzr+ssh servers to fail, and causing warnings on stderr in some other circumstances. (Andrew Bennetts, #633745)
  • Only call ``setlocale`` in the bzr startup script on posix systems. This avoids an issue with the newer windows C runtimes used by Python 2.6 and later which can mangle bytestrings printed to the console. (Martin [gz], #631350)
  • Prevent ``CHKMap.apply_delta`` from generating non-canonical CHK maps, which can result in "missing referenced chk root keys" errors when fetching from repositories with affected revisions. (Andrew Bennetts, #522637)
  • Raise ValueError instead of a string exception. (John Arbash Meinel, #586926)
  • Reduce peak memory by one copy of compressed text. (John Arbash Meinel, #566940)
  • Repositories accessed via a smart server now reject being stacked on a repository in an incompatible format, as is the case when accessing them via other methods. This was causing fetches from those repositories via a smart server (e.g. using ``bzr branch``) to receive invalid data. (Andrew Bennetts, #562380)
  • Selftest with versions of subunit that support ``stopTestRun`` will no longer error. This error was caused by 2.0 not being updated when upstream python merged the end of run patch, which chose ``stopTestRun`` rather than ``done``. (Robert Collins, #571437)
  • Stop ``AttributeError: 'module' object has no attribute 'ElementTree'`` being thrown from ``xml_serializer`` on certain cElementTree setups. (Martin [gz], #254278)
  • Upgrading or fetching from a non-rich-root repository to a rich-root repository (e.g. from pack-0.92 to 2a) no longer fails with ``'Inter1and2Helper' object has no attribute 'source_repo'``. This was a regression from Bazaar 2.1. (Andrew Bennetts, #636930)
  • When passing a file to ``UTF8DirReader`` make sure to close the current directory file handle after the chdir fails. Otherwise when passing many filenames into a command line ``bzr status`` we would leak descriptors. (John Arbash Meinel, #583486)
  • Documentation:
  • Fix a lot of references in the docs to the old http://bazaar-vcs.org to the new http://bazaar.canonical.com or http://wiki.bazaar.canonical.com (John Arbash Meinel, #617503)
  • Internals:
  • Remove used and broken code path in ``BranchInitHookParams.__repr__``. (Andrew Bennetts)
  • Testing:
  • ``build_tree_contents`` can create symlinks. (Martin Pool, John Arbash Meinel)
  • Tracebacks from a parameterized test are no longer reported against every parameterization of that test. This was done by adding a hack to ``bzrlib.tests.clone_test`` so that it no longer causes testtools.TestCase instances to share a details dict. (Andrew Bennetts, #625574)

New in Bazaar 2.2.0 (Aug 13, 2010)

  • This release 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.)
  • This is primarily a bugfix and polish release over the 2.1 series, with a large number of bugs fixed (>120), and some performance improvements.
  • There are some compatibility changes in this release. For users of bzrlib as a library, we now request that they call "bzrlib.initialize" and use the returned context manager appropriately. For commandline users we no longer guess user identity for "bzr commit", users must specify their identity using "bzr whoami" (you don't need to...

New in Bazaar 2.2 Beta 4 (Jul 30, 2010)

  • Now stabilizes the internal APIs. Plugin authors are recommended to ensure their releases are compatible, so that 2.2rc1 can be a true release candidate, containing stable and compatible plugin versions.
  • For users of bzrlib as a library, one of the primary changes is to request that they call ``bzrlib.initialize`` and use the returned context manager appropriately.
  • Better interaction with ``bzr-loom`` to make sure branching from a loom even over a smart server still yields a local loom. Not to mention lots of bugfixes over 2.2b3.

New in Bazaar 2.1.2 (Jun 16, 2010)

  • This release fixes two critical networking issues with older servers and with interrupted system call errors when pushing or pulling. We recommend upgrading to anyone running a 2.1.x version of bzr.

New in Bazaar 2.2 Beta 3 (May 28, 2010)

  • This third beta in the 2.2 series brings with it all the goodness of 2.1.2 and 2.0.6 (though it preceeds 2.0.6 slightly). Of particular note for users are compatibility fixes with bzr 1.5 and below servers, a hopeful end to the EINTR errors caused by SIGWINCH interactions, a shiny new bash completion script and bzr will no longer guess at identity details - it was too unreliable in reality. Use ``bzr whoami`` on every new install. For developers we have some API changes which may impact plugins as well as a bunch of our regular improvements to internal clarity and test suppor

New in Bazaar 2.2 Beta 2 (Apr 23, 2010)

  • New Features:
  • ``bzr diff`` now supports a --format option, which can be used to select alternative diff formats. (Jelmer Vernooij, #555994)
  • Bug Fixes:
  • ``bzr dpush``, ``bzr push`` and ``bzr send`` will now issue a warning instead of failing when dirty trees are involved. The corresponding ``dpush_strict``, ``push_strict`` and ``send_strict`` should be set to True explicitly to get the previous behaviour. (Vincent Ladeuil, #519319)
  • ``bzr export`` to tar file does not fail if any parent directory contains unicode characters. This works around upstream Python bug http://bugs.python.org/issue8396 . (Parth Malwankar, #413406)
  • ``bzr update`` when a pending merge in the working tree has been merged into the master branch will no longer claim that old commits have become pending merges. (Robert Collins, #562079)
  • ``bzrlib.mutabletree.MutableTree.commit`` will now support a passed in config as in previous versions of bzrlib. (Robert Collins)
  • Fix glitch in the warning about unclean trees display. (Vincent Ladeuil, #562665)
  • Fixed Python2.4 incompatibilities in the bzr2.2b1 source tarball. (Martin Pool)
  • Help messages generated by ``RegistryOption.from_kwargs`` list the switches in alphabetical order, rather than in an undefined order. (Martin von Gagern, #559409)
  • Make sure the ``ExecutablePath`` and ``InterpreterPath`` are set in Apport crash reports, to avoid "This problem report applies to a program which is not installed any more" error. (Martin Pool, James Westby, #528114)
  • Reset ``siginterrupt`` flag to False every time we handle a signal installed with ``set_signal_handler(..., restart_syscall=True)`` (from ``bzrlib.osutils``. Reduces the likelihood of "Interrupted System Call" errors after two window resizes. (Andrew Bennetts)
  • When invoked with a range revision, ``bzr log`` doesn't show revisions that are not part of the ancestry anymore. (Vincent Ladeuil, #474807)
  • Improvements:
  • ``bzr commit`` will prompt before using a commit message that was generated by a template and not edited by the user. (Robert Collins, #530265)
  • ``bzr diff`` read-locks the trees and branches only once, saving about 10-20ms on ``bzr diff`` in a bzr.dev tree. (Andrew Bennetts)
  • ``bzr missing`` read-locks the branches only once. (Andrew Bennetts)
  • ``bzr pull`` locks the branches and tree only once. (Andrew Bennetts)
  • 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)
  • Index lookups only re-order the indexes when the hit files aren't already first. Reduces the cost of reordering (John Arbash Meinel, #562429)
  • Less code is loaded at startup. (Cold-cache start time is about 10-20% less.) (Martin Pool, #553017)
  • API Changes:
  • ``bzrlib.diff.get_trees_and_branches_to_diff`` is deprecated. Use ``get_trees_and_branches_to_diff_locked`` instead. (Andrew Bennetts)
  • Internals:
  • ``bzrlib.commands.Command.run_direct`` is no longer needed - the pre 2.1 method of calling run() to perform testing or direct use via the API is now possible again. As part of this, the _operation attribute on Command is now transient and only exists for the duration of ``run()``. (Robert Collins)

New in Bazaar 2.1.1 (Apr 1, 2010)

  • Bug Fixes:Allow syscalls to automatically restart when ``TextUIFactory``'s SIGWINCH handler is invoked, avoiding ``EINTR`` errors during blocking IO, which are often poorly handled by Python's libraries and parts of bzrlib. (Andrew Bennetts, #496813)
  • Avoid ``malloc(0)`` in ``patiencediff``, which is non-portable. (Martin Pool, #331095)
  • Fix plugin packaging on Windows. (Ian Clatworthy, #524162)
  • Fix stub sftp test server to call os.getcwdu(). (Vincent Ladeuil, #526211, #526353)
  • Fixed CHM generation by moving the NEWS section template into a separate file. (Ian Clatworthy, #524184)
  • Merge correctly when this_tree is not a WorkingTree. (Aaron Bentley)
  • Register SIGWINCH handler only when creating a ``TextUIFactory``; avoids problems importing bzrlib from a non-main thread. (Elliot Murphy, #521989)
  • Standardize the error handling when creating a new ``StaticTuple`` (problems will raise TypeError). (Matt Nordhoff, #457979)
  • Warn if pyrex is too old to compile the new ``SimpleSet`` and ``StaticTuple`` extensions, rather than having the build fail randomly. (John Arbash Meinel, #449776)
  • Documentation:Added a link to the Desktop Guide. (Ian Clatworthy)
  • Added What's New in Bazaar 2.1 document. (Ian Clatworthy)
  • Drop Google Analytics from the core docs as they caused problems in the CHM files. (Ian Clatworthy, #502010)
  • API Changes:Added ``bzrlib.osutils.set_signal_handler``, a convenience function that can set a signal handler and call ``signal.siginterrupt(signum, False)`` for it, if the platform and Python version supports it. (Andrew Bennetts, #496813)

New in Bazaar 2.1.0 (Feb 17, 2010)

  • Bug Fixes:
  • Don't require testtools to use sftp. (Vincent Ladeuil, #516183)
  • Fix "AttributeError in Inter1and2Helper" during fetch. (Martin Pool, #513432)
  • Handle renames correctly when there are files or directories that differ only in case. (Chris Jones, Martin Pool, #368931)
  • If ``bzr push --create-prefix`` triggers an unexpected ``NoSuchFile`` error, report that error rather than failing with an unhelpful ``UnboundLocalError``. (Andrew Bennetts, #423563)
  • Ignore ``KeyError`` from ``remove_index`` during ``_abort_write_group`` in a pack repository, which can happen harmlessly if the abort occurs during finishing the write group. Also use ``bzrlib.cleanup`` so that any other errors that occur while aborting the individual packs won't be hidden by secondary failures when removing the corresponding indices. (Andrew Bennetts, #423015)
  • Using the ``bzrlib.chk_map`` module from within multiple threads at the same time was broken due to race conditions with a module level page cache. This shows up as a KeyError in the ``bzrlib.lru_cache`` code with ``bzrlib.chk_map`` in the backtrace, and can be triggered without using the same high level objects such as ``bzrlib.repository.Repository`` from different threads. chk_map now uses a thread local cache which may increase memory pressure on processes using threads. (Robert Collins, John Arbash Meinel, #514090)
  • The new ``merge_file_content`` should now be ok with tests to avoid regressions. (Vincent Ladeuil, #515597)
  • Documentation:
  • Added ``location-alias`` help topic. (Andrew Bennetts, #337834)
  • Internals:
  • Use ``bzrlib.cleanup`` rather than less robust ``try``/``finally`` blocks in several places in ``bzrlib.merge``. This avoids masking prior errors when errors like ``ImmortalPendingDeletion`` occur during cleanup in ``do_merge``. (Andrew Bennetts, #517275)
  • API Changes:
  • The ``remove_index`` method of ``bzrlib.repofmt.pack_repo.AggregateIndex`` no longer takes a ``pack`` argument. This argument was always ignored. (Andrew Bennetts, #423015)

New in Bazaar 2.1.0 RC2 (Jan 30, 2010)

  • API Changes:
  • The new merge_file_content hook point has been altered to provide a better API where state for extensions can be stored rather than the too-simple function based approach. This fixes a performance regression where branch configuration would be parsed per-file during merge. As part of this the included news_merger has been refactored into a base helper class bzrlib.merge.ConfigurableFileMerger. (Robert Collins, John Arbash Meinel, #513822)

New in Bazaar 2.1.0 RC1 (Jan 22, 2010)

  • New Features:
  • Add bug information to log output when available. (Neil Martinsen-Burrell, Guillermo Gonzalez, #251729)
  • Added merge_file_content hook point to Merger, allowing plugins to register custom merge logic, e.g. to provide smarter merging for particular files.
  • Bazaar now includes the news_merge plugin. It is disabled by default, to enable it add a news_merge_files option to your configuration. Consult bzr help news_merge for more information. (Andrew Bennetts)
  • bzr branch now takes a --bind option. This lets you branch and bind all in one command. (Ian Clatworthy)
  • bzr switch now takes a --revision option, to allow switching to a specific revision of a branch. (Daniel Watkins, #183559)
  • bzr unshelve --preview can now be used to show how a patch on the shelf would be applied to the working tree. (Guilherme Salgado, #308122)
  • bzr update now takes a --revision argument. This lets you change the revision of the working tree to any revision in the ancestry of the current or master branch. (Matthieu Moy, Mark Hammond, Martin Pool, #45719)
  • -Dbytes can now be used to display the total number of bytes transferred for the current command. This information is always logged to .bzr.log for later inspection. (John Arbash Meinel)
  • New ignore patterns. Patterns prefixed with ‘!’ are exceptions to ignore patterns and take precedence over regular ignores. Such exceptions are used to specify files that should be versioned which would otherwise be ignored. Patterns prefixed with ‘!!’ act as regular ignore patterns, but have highest precedence, even over the ‘!’ exception patterns. (John Whitley, #428031)
  • The supress_warnings configuration option has been introduced to disable various warnings (it currently only supports the format_deprecation warning). The new option can be set in any of the following locations: bazaar.conf, locations.conf and/or branch.conf. (Ted Gould, Matthew Fuller, Vincent Ladeuil)
  • Bug Fixes:
  • Always show a message if an OS error occurs while trying to run a user-specified commit message editor. (Martin Pool, #504842)
  • bzr diff will now use the epoch when it is unable to determine the timestamp of a file, if the revision it was introduced in is a ghost. (Jelmer Vernooij, #295611)
  • bzr switch -b can now create branches that are located using directory services such as lp:, even when the branch name doesn’t contain a ‘/’. (Neil Martinsen-Burrell, #495263)
  • bzr unshelve has improved messages about what it is doing. (Neil Martinsen-Burrell, #496917)
  • Concurrent autopacking is more resilient to already-renamed pack files. If we find that a file we are about to obsolete is already obsoleted, we do not try to rename it, and we leave the file in obsolete_packs. The code is also fault tolerant if a file goes missing, assuming that another process already removed the file. (John Arbash Meinel, Gareth White, #507557)
  • Fix “Too many concurrent requests” in reconcile when network connection fails. (Andrew Bennetts, #503878)
  • Fixed a side effect mutation of RemoteBzrDirFormat._network_name that caused some tests to fail when run in a non-default order. Probably no user impact. (Martin Pool, #504102)
  • Fixed ObjectNotLocked error in bzr cat -rbranch:../foo FILE. (Andrew Bennetts, #506274)
  • FTP transports support Unicode paths by encoding/decoding them as utf8. (Vincent Ladeuil, #472161)
  • Listen to the SIGWINCH signal to update the terminal width. (Vincent Ladeuil, #316357)
  • Progress bars are now hidden when --quiet is given. (Martin Pool, #320035)
  • SilentUIFactory now supports make_output_stream and discards whatever is written to it. This un-breaks some plugin tests that depended on this behaviour. (Martin Pool, #499757)
  • When operations update the working tree, all affected files should end up with the same mtime. (eg. when versioning a generated file, if you update the source and the generated file together, the generated file should appear up-to-date.) (John Arbash Meinel, Martin , #488724)
  • Improvements:
  • Added add_cleanup and cleanup_now to bzrlib.command.Command. All the builtin commands now use add_cleanup rather than try/finally blocks where applicable as it is simpler and more robust. (Andrew Bennetts)
  • All except a small number of storage formats are now hidden, making the help for numerous commands far more digestible. (Ian Clatworthy)
  • Attempts to open a shared repository as a branch (e.g. bzr branch path/to/repo) will now include “location is a repository” as a hint in the error message. (Brian de Alwis, Andrew Bennetts, #440952)
  • Push will now inform the user when they are trying to push to a foreign VCS for which roundtripping is not supported, and will suggest them to use dpush. (Jelmer Vernooij)
  • The version of bzr being run is now written to the log file. (__monty__, #257170)
  • Transport network activity indicator is shown more of the time when Bazaar is doing network IO. (Martin Pool)
  • Documentation:
  • Add documentation on creating merges with more than one parent. (Neil Martinsen-Burrell, #481526)
  • Better explain the –uncommitted option of merge. (Neil Martinsen-Burrell, #505088)
  • Improve discussion of pending merges in the documentation for revert. (Neil Martinsen-Burrell, #505093)
  • Improved help for bzr send. (Martin Pool, Bojan Nikolic)
  • There is a System Administrator’s Guide in doc/en/admin-guide, including discussions of installation, relevant plugins, security and backup. (Neil Martinsen-Burrell)
  • The conflicts help topic has been renamed to conflict-types. (Ian Clatworthy)
  • The User Reference is now presented as a series of topics. Many of the included topics have link and format tweaks applied. (Ian Clatworthy)
  • API Changes:
  • Added cachedproperty decorator to bzrlib.decorators. (Andrew Bennetts)
  • Many test features were renamed from FooFeature to foo_feature to be consistent with instances being lower case and classes being CamelCase. For the features that were more likely to be used, we added a deprecation thunk, but not all. (John Arbash Meinel)
  • Merger classes (such as Merge3Merger) now expect a this_branch parameter in their constructors, and provide this_branch as an attribute. (Andrew Bennetts)
  • The Branch hooks pre_change_branch_tip no longer masks exceptions raised by plugins - the original exceptions are now preserved. (Robert Collins)
  • The Transport Server.tearDown method is now renamed to stop_server and setUp to start_server for consistency with our normal naming pattern, and to avoid confusion with Python’s TestCase.tearDown. (Martin Pool)
  • WorkingTree.update implementations must now accept a revision parameter.
  • Internals:
  • Added BzrDir.open_branchV3 smart server request, which can receive a string of details (such as “location is a repository”) as part of a nobranch response. (Andrew Bennetts, #440952)
  • New helper osutils.UnicodeOrBytesToBytesWriter which encodes unicode objects but passes str objects straight through. This is used for selftest but may be useful for diff and other operations that generate mixed output. (Robert Collins)
  • New exception NoRoundtrippingSupport, for use by foreign branch plugins. (Jelmer Vernooij)
  • Testing:
  • bzrlib.tests.permute_for_extension is a helper that simplifies running all tests in the current module, once against a pure python implementation, and once against an extension (pyrex/C) implementation. It can be used to dramatically simplify the implementation of load_tests. (John Arbash Meinel)
  • bzrlib.tests.TestCase now subclasses testtools.testcase.TestCase. This permits features in testtools such as getUniqueInteger and getUniqueString to be used. Because of this, testtools version 0.9.2 or newer is now a dependency to run bzr selftest. Running with versions of testtools less than 0.9.2 will cause bzr to error while loading the test suite. (Robert Collins)
  • Shell-like tests now support the command “mv” for moving files. The syntax for mv file1 file2, mv dir1 dir2 and mv file dir is supported. (Neil Martinsen-Burrell)
  • The test progress bar no longer distinguishes tests that ‘errored’ from tests that ‘failed’ - they’re all just failures. (Martin Pool)

New in Bazaar 2.0.4 (Jan 22, 2010)

  • Bug Fixes:
  • bzr annotate on another branch with -r branch:... no longer fails with an ObjectNotLocked error. (Andrew Bennetts, #496590)
  • bzr export dir now requests all file content as a record stream, rather than requsting the file content one file-at-a-time. This can make exporting over the network significantly faster (54min => 9min in one case). (John Arbash Meinel, #343218)
  • bzr serve no longer slowly leaks memory. The compiled bzrlib.bencode.Encoder() class was using __del__ to cleanup and free resources, and it should have been using __dealloc__. This will likely have an impact on any other process that is serving for an extended period of time. (John Arbash Meinel, #494406)
  • Check for SIGINT (Ctrl-C) and other signals immediately if readdir returns EINTR by calling PyErr_CheckSignals. This affected the optional _readdir_pyx extension. (Andrew Bennetts, #495023)
  • Concurrent autopacks will no longer lose a newly created pack file. There was a race condition, where if the reload happened at the right time, the second packer would forget the name of the newly added pack file. (John Arbash Meinel, Gareth White, #507566)
  • Give a clearer message if the lockdir disappears after being apparently successfully taken. (Martin Pool, #498378)
  • Give a warning when fetching between repositories (local or remote) with sufficiently different formats that the content will need to be serialized (ie InterDifferingSerializer or inventory-deltas), so the user has a clue that upgrading could make it faster. (Martin Pool, #456077)
  • If we fail to open ~/.bzr.log write a clear message to stderr rather than using warning(). The log file is opened before logging is set up, and it leads to very confusing: ‘no handlers for “bzr”’ messages for users, rather than something nicer. (John Arbash Meinel, Barry Warsaw, #503886)
  • Refuse to build with any Pyrex 0.9.4 release, as they have known bugs. (Martin Pool, John Arbash Meinel, #449372)
  • setup.py bdist_rpm now properly finds extra files needed for the build. (there is still the distutils bug http://bugs.python.org/issue644744) (Joe Julian, #175839)
  • The 2a format wasn’t properly restarting autopacks when something changed underneath it (like another autopack). Now concurrent autopackers will properly succeed. (John Arbash Meinel, #495000)
  • TreeTransform can now handle when a delta says that the file id for the tree root changes. Rather than trying to rename your working directory, or failing early saying that you can’t have multiple tree roots. This also fixes revert, update, and pull when the root id changes. (John Arbash Meinel, #494269, #504390)
  • _update_current_block no longer suppresses exceptions, so ^C at just the right time will get propagated, rather than silently failing to move the block pointer. (John Arbash Meinel, Gareth White, #495023)
  • Testing:
  • We have a new test_source that ensures all pyrex cdef functions handle exceptions somehow. (Possibly by setting # cannot_raise rather than an except ?: clause.) This should help prevent bugs like bug #495023. (John Arbash Meinel)

New in Bazaar 2.1.0 Beta 4 (Dec 16, 2009)

  • Compatibility Breaks:
  • The BZR_SSH environmental variable may now be set to the path of a secure shell client. If currently set to the value ssh it will now guess the vendor of the program with that name, to restore the old behaviour that indicated the SSH Corporation client use sshcorp instead as the magic string. (Martin , #176292)
  • New Features:
  • bzr commit now has a --commit-time option. (Alexander Sack, #459276)
  • -Dhpss now increases logging done when run on the bzr server, similarly to how it works on the client. (John Arbash Meinel)
  • New option bzr unshelve --keep applies the changes and leaves them on the shelf. (Martin Pool, Oscar Fuentes, #492091)
  • The BZR_COLUMNS envrionment variable can be set to force bzr to respect a given terminal width. This can be useful when output is redirected or in obscure cases where the default value is not appropriate. Pagers can use it to get a better control of the line lengths. (Vincent Ladeuil)
  • Bug Fixes:
  • After renaming a file, the dirstate could accidentally reference source\path rather than source/path on Windows. This might be a source of some dirstate-related failures. (John Arbash Meinel)
  • bzr commit now detects commit messages that looks like file names and issues a warning. (Gioele Barabucci, #73073)
  • bzr ignore / no longer causes an IndexError. (Gorder Tyler, #456036)
  • bzr log -n0 -rN should not return revisions beyond its merged revisions. (#325618, #484109, Marius Kruger)
  • bzr merge --weave and --lca will now create .BASE files for files with conflicts (similar to --merge3). The contents of the file is a synthesis of all bases used for the merge. (John Arbash Meinel, #40412)
  • bzr mv --quiet really is quiet now. (Gordon Tyler, #271790)
  • bzr serve is more clear about the risk of supplying –allow-writes. (Robert Collins, #84659)
  • bzr serve --quiet really is quiet now. (Gordon Tyler, #252834)
  • Fix bug with redirected URLs over authenticated HTTP. (Glen Mailer, Neil Martinsen-Burrell, Vincent Ladeuil, #395714)
  • Interactive merge doesn’t leave branch locks behind. (Aaron Bentley)
  • Lots of bugfixes for the test suite on Windows. We should once again have a test suite with no failures on Windows. (John Arbash Meinel)
  • osutils.terminal_width() obeys the BZR_COLUMNS environment variable but returns None if the terminal is not a tty (when output is redirected for example). Also fixes its usage under OSes that doesn’t provide termios.TIOCGWINSZ. Make sure the corresponding tests runs on windows too. (Joke de Buhr, Vincent Ladeuil, #353370, #62539) (John Arbash Meinel, Vincent Ladeuil, #492561)
  • Terminate ssh subprocesses when no references to them remain, fixing subprocess and file descriptor leaks. (Andrew Bennetts, #426662)
  • The --hardlink option of bzr branch and bzr checkout now works for 2a format trees. Only files unaffected by content filters will be hardlinked. (Andrew Bennetts, #408193)
  • The new glob expansion on Windows would replace all characters with / even if it there wasn’t a glob to expand, the arg was quoted, etc. Now only change slashes if there is something being glob expanded. (John Arbash Meinel, #485771)
  • Use our faster KnownGraph.heads() functionality when computing the new rich-root heads. This can cut a conversion time in half (mysql from 13.5h => 6.2h) (John Arbash Meinel, #487632)
  • When launching a external diff tool via bzr diff –using, temporary files are no longer created, rather, the path to the file in the working tree is passed to the external diff tool. This allows the file to be edited if the diff tool provides for this. (Gary van der Merwe, #490738)
  • The launchpad-open command can now be used from a subdirectory of a branch, not just from the root of the branch. (Neil Martinsen-Burrell, #489102)
  • Improvements:
  • bzr log is now faster. (Ian Clatworthy)
  • bzr update provides feedback on which branch it is up to date with. (Neil Martinsen-Burrell)
  • bzr upgrade from pre-2a to 2a can be significantly faster (4x). For details see the xml8 patch and heads() improvements. (John Arbash Meinel)
  • bzrlib.urlutils.local_path_from_url now accepts ‘file://localhost/‘ as well as ‘file:///‘ URLs on POSIX. (Michael Hudson)
  • The progress bar now shows only a spinner and per-operation counts, not an overall progress bar. The previous bar was often not correlated with real overall operation progress, either because the operations take nonlinear time, or because at the start of the operation Bazaar couldn’t estimate how much work there was to do. (Martin Pool)
  • Documentation:
  • Lots of documentation tweaks for inline help topics and command help information.
  • API Changes:
  • bzrlib.textui (vestigial module) removed. (Martin Pool)
  • Internals:
  • New test Feature: ModuleAvailableFeature. It is designed to make it easier to handle what tests you want to run based on what modules can be imported. (Rather than lots of custom-implemented features that were basically copy-and-pasted.) (John Arbash Meinel)
  • osutils.timer_func() can be used to get either time.time() or time.clock() when you want to do performance timing. time.time() is limited to 15ms resolution on Windows, but time.clock() gives CPU and not wall-clock time on other platforms. (John Arbash Meinel)
  • Several code paths that were calling Transport.get().read() have been changed to the equalivent Transport.get_bytes(). The main difference is that the latter will explicitly call file.close(), rather than expecting the garbage collector to handle it. This helps with some race conditions on Windows during the test suite and sftp tests. (John Arbash Meinel)
  • Testing:
  • TestCaseWithMemoryTransport no longer sets $HOME and $BZR_HOME to unicode strings. (Michael Hudson, #464174)

New in Bazaar 2.0.3 (Dec 16, 2009)

  • bzr push --use-existing-dir no longer crashes if the directory exists but contains an invalid .bzr directory. (Andrew Bennetts, #423563)
  • Content filters are now applied correctly after pull, merge and switch. (Ian Clatworthy, #385879)
  • Fix a potential segfault in the groupcompress hash map handling code. When inserting new entries, if the final hash bucket was empty, we could end up trying to access if (last_entry+1)->ptr == NULL. (John Arbash Meinel, #490228)
  • Improve “Binary files differ” hunk handling. (Aaron Bentley, #436325)

New in Bazaar 2.1.0 Beta 3 (Dec 15, 2009)

  • New Features:
  • Users can define a shelve editor to provide shelf functionality at a granularity finer than per-patch-hunk. (Aaron Bentley)
  • Bug Fixes:
  • Fix for shell completion and short options. (Benoît PIERRE)
  • Hooks daughter classes should always call the base constructor. (Alexander Belchenko, Vincent Ladeuil, #389648)
  • Improve “Binary files differ” hunk handling. (Aaron Bentley, #436325)
  • On Windows, do glob expansion at the command-line level (as is usually done in bash, etc.) This means that all commands get glob expansion (bzr status, bzr add, bzr mv, etc). It uses a custom command line parser, which allows us to know if a given section was quoted. It means you can now do bzr ignore "*.py". (John Arbash Meinel, #425510, #426410, #194450)
  • Sanitize commit messages that come in from the ‘-m’ flag. We translate ‘rn’ => ‘n’ and a plain ‘r’ => ‘n’. The storage layer doesn’t allow those because XML store silently translate it anyway. (The parser auto-translates rn => n in ways that are hard for us to catch.)
  • Show correct branch and repository format descriptions in bzr info -v on a smart server location. (Andrew Bennetts, #196080)
  • The fix for bug #186920 accidentally broke compatibility with python 2.4. (Vincent Ladeuil, #475585)
  • Using Repository.get_commit_builder().record_iter_changes() now correctly sets self.inv_sha1 to a sha1 string and self.new_inventory to an Inventory instance after calling self.finish_inventory(). (Previously it accidently set both values as a tuple on self.inv_sha1. This was missed because repo.add_revision ignores the supplied inventory sha1 and recomputes the sha1 from the repo directly. (John Arbash Meinel)
  • Shelve command refuse to run if there is no real terminal. (Alexander Belchenko)
  • Avoid unnecessarily flushing of trace file; it’s now unbuffered at the Python level. (Martin Pool)
  • Documentation:
  • Include Japanese translations for documentation (Inada Naoki)
  • New API ui_factory.make_output_stream to be used for sending bulk (rather than user-interaction) data to stdout. This automatically coordinates with progress bars or other terminal activity, and can be overridden by GUIs. (Martin Pool, 493944)
  • Internals:
  • Some of the core groupcompress functionality now releases the GIL before operation. Similar to how zlib and bz2 operate without the GIL in the core compression and decompression routines. (John Arbash Meinel)
  • Testing:
  • -Dhpssvfs will now trigger on RemoteBzrDir._ensure_real, providing more debugging of VFS access triggers. (Robert Collins)
  • KnownFailure is now signalled to ExtendedTestResult using the same method that Python 2.7 uses - addExpectedFailure. (Robert Collins)
  • --parallel=fork is now compatible with –subunit. (Robert Collins, Vincent Ladeuil, #419776)
  • TestNotApplicable is now handled within the TestCase.run method rather than being looked for within ExtendedTestResult.addError. This provides better handling with other TestResult objects, degrading to sucess rather than error. (Robert Collins)
  • The private method _testConcluded on ExtendedTestResult has been removed - it was empty and unused. (Robert Collins)
  • UnavailableFeature is now handled within the TestCase.run method rather than being looked for within addError. If the Result object does not have an addNotSupported method, addSkip is attempted instead, and failing that addSuccess. (Robert Collins)
  • When a TestResult does not have an addSkip method, skipped tests are now reported as successful tests, rather than as errors. This change is to make it possible to get a clean test run with a less capable TestResult. (Robert Collins)

New in Bazaar 2.0.2 (Nov 9, 2009)

  • Bug Fixes:
  • Avoid “NoneType has no attribute st_mode” error when files disappear from a directory while it’s being read. (Martin Pool, #446033)
  • Content filters are now applied correctly after revert. (Ian Clatworthy)
  • Diff parsing handles “Binary files differ” hunks. (Aaron Bentley, #436325)
  • Fetching from stacked pre-2a repository via a smart server no longer fails intermittently with “second push failed to complete”. (Andrew Bennetts, #437626)
  • Fix typos left after test_selftest refactoring. (Vincent Ladeuil, Matt Nordhoff, #461149)
  • Fixed ObjectNotLocked errors during bzr log -r NNN somefile. (Andrew Bennetts, #445171)
  • PreviewTree file names are not limited by the encoding of the temp directory’s filesystem. (Aaron Bentley, #436794)
  • Improvements:
  • bzr log now read-locks branches exactly once, so makes better use of data caches. (Andrew Bennetts)
  • Documentation:
  • Filtered views user documentation upgraded to refer to format 2a instead of pre-2.0 formats. (Ian Clatworthy)

New in Bazaar 2.1.0 Beta 1 (Oct 29, 2009)

  • New Features:
  • Bazaar can now send mail through Apple OS X Mail.app. (Brian de Alwis)
  • ``bzr+ssh`` and ``bzr`` paths can now be relative to home directories specified in the URL. Paths starting with a path segment of ``~`` are relative to the home directory of the user running the server, and paths starting with ``~user`` are relative to the home directory of the named user.
  • If ``bzr serve`` was invoked with a ``--directory`` argument, then no home directories outside that directory will be accessible via this method. This is a feature of ``bzr serve``, so pre-2.1 clients will automatically benefit from this feature when ``bzr`` on the server is upgraded. (Andrew Bennetts, #109143)
  • Extensions can now be compiled if either Cython or Pyrex is available. Currently Pyrex is preferred, but that may change in the future. (Arkanes)
  • Give more control on BZR_PLUGIN_PATH by providing a way to refer to or disable the user, site and core plugin directories. (Vincent Ladeuil, #412930, #316192, #145612)
  • Bug Fixes:
  • Bazaar's native protocol code now correctly handles EINTR, which most noticeably occurs if you break in to the debugger while connected to a bzr+ssh server. You can now can continue from the debugger (by typing 'c') and the process continues. However, note that pressing C- in the shell may still kill the SSH process, which is bug 162509, so you must sent a signal to the bzr process specifically, for example by typing ``kill -QUIT PID`` in another shell. (Martin Pool, #341535)
  • ``bzr add`` in a tree that has files with `` `` or ``
  • `` in the filename will issue a warning and skip over those files. (Robert Collins, #3918)
  • ``bzr dpush`` now aborts if uncommitted changes (including pending merges) are present in the working tree. The configuration option ``dpush_strict`` can be used to set the default for this behavior. (Vincent Ladeuil, #438158)
  • ``bzr merge`` and ``bzr remove-tree`` now requires --force if pending merges are present in the working tree. (Vincent Ladeuil, #426344)
  • Clearer message when Bazaar runs out of memory, instead of a ``MemoryError`` traceback. (Martin Pool, #109115)
  • Don't give a warning on Windows when failing to import ``_readdir_pyx`` as it is never built. (John Arbash Meinel, #430645)
  • Don't restrict the command name used to run the test suite. (Vincent Ladeuil, #419950)
  • ftp transports were built differently when the kerberos python module was present leading to obscure failures related to ASCII/BINARY modes. (Vincent Ladeuil, #443041)
  • Network streams now decode adjacent records of the same type into a single stream, reducing layering churn. (Robert Collins)
  • PreviewTree behaves correctly when get_file_mtime is invoked on an unmodified file. (Aaron Bentley, #251532)
  • Registry objects should not use iteritems() when asked to use items(). (Vincent Ladeuil, #430510)
  • Weave based repositories couldn't be cloned when committers were using domains or user ids embedding '.sig'. Now they can. (Matthew Fuller, Vincent Ladeuil, #430868)
  • Improvements:
  • Bazaar gives a warning before exiting, and writes into ``.bzr.log``, if compiled extensions can't be loaded. This typically indicates a packaging or installation problem. In this case Bazaar will keep running using pure-Python versions, but this may be substantially slower. The warning can be disabled by setting ``ignore_missing_extensions = True`` in ``bazaar.conf``. See also . (Martin Pool, #406113, #430529)
  • Secondary errors that occur during Branch.unlock and Repository.unlock no longer obscure the original error. These methods now use a new decorator, ``only_raises``. This fixes many causes of ``TooManyConcurrentRequests`` and similar errors. (Andrew Bennetts, #429747)
  • Documentation:
  • Describe the new shell-like test feature. (Vincent Ladeuil)
  • Help on hooks no longer says 'Not deprecated' for hooks that are currently supported. (Ian Clatworthy, #422415)
  • API Changes:
  • ``bzrlib.user_encoding`` has been removed; use ``bzrlib.osutils.get_user_encoding`` instead. (Martin Pool)
  • ``bzrlib.tests`` now uses ``stopTestRun`` for its ``TestResult`` subclasses - the same as python's unittest module. (Robert Collins)
  • ``diff._get_trees_to_diff`` has been renamed to ``diff.get_trees_and_branches_to_diff``. It is now a public API, and it returns the old and new branches. (Gary van der Merwe)
  • ``bzrlib.trace.log_error``, ``error`` and ``info`` have been deprecated. (Martin Pool)
  • ``MutableTree.has_changes()`` does not require a tree parameter anymore. It now defaults to comparing to the basis tree. It now checks for pending merges too. ``Merger.check_basis`` has been deprecated and replaced by the corresponding has_changes() calls. ``Merge.compare_basis``, ``Merger.file_revisions`` and ``Merger.ensure_revision_trees`` have also been deprecated. (Vincent Ladeuil, #440631)
  • ``ProgressTask.note`` is deprecated. (Martin Pool)
  • Internals:
  • Added ``-Drelock`` debug flag. It will ``note`` a message every time a repository or branch object is unlocked then relocked the same way. (Andrew Bennetts)
  • ``BTreeLeafParser.extract_key`` has been tweaked slightly to reduce mallocs while parsing the index (approx 3=>1 mallocs per key read). This results in a 10% speedup while reading an index. (John Arbash Meinel)
  • The ``bzrlib.lsprof`` module has a new class ``BzrProfiler`` which makes profiling in some situations like callbacks and generators easier. (Robert Collins)
  • Testing:
  • Passing ``--lsprof-tests -v`` to bzr selftest will cause lsprof output to be output for every test. Note that this is very verbose! (Robert Collins)
  • Setting ``BZR_TEST_PDB=1`` when running selftest will cause a pdb post_mortem to be triggered when a test failure occurs. (Robert Collins)
  • Shell-like tests can now be written. Code in ``bzrlib/tests/script.py`` , documentation in ``developers/testing.txt`` for details. (Vincent Ladeuil)
  • Some tests could end up with the same id, that was dormant for a long time. (Vincent Ladeuil, #442980)
  • Stop showing the number of tests due to missing features in the test progress bar. (Martin Pool)
  • Test parameterisation now does a shallow copy, not a deep copy of the test to be parameterised. This is not expected to break external use of test parameterisation, and is substantially faster. (Robert Collins)
  • Tests that try to open a bzr dir on an arbitrary transport will now fail unless they have explicitly permitted the transport via ``self.permit_url``. The standard test factories such as ``self.get_url`` will permit the urls they provide automatically, so only exceptional tests should need to do this. (Robert Collins)
  • The break-in test no longer cares about clean shutdown of the child, instead it is happy if the debugger starts up. (Robert Collins)
  • The full test suite is expected to pass when the C extensions are not present. (Vincent Ladeuil, #430749)

New in Bazaar 2.0.1 (Oct 29, 2009)

  • Bug Fixes:
  • ``bzr add`` in a tree that has files with `` `` or ``
  • `` in the filename will issue a warning and skip over those files. (Robert Collins, #3918)
  • bzr will attempt to authenticate with SSH servers that support ``keyboard-interactive`` auth but not ``password`` auth when using Paramiko. (Andrew Bennetts, #433846)
  • Fixed fetches from a stacked branch on a smart server that were failing with some combinations of remote and local formats. This was causing "unknown object type identifier 60" errors. (Andrew Bennetts, #427736)
  • Fixed ``ObjectNotLocked`` errors when doing some log and diff operations on branches via a smart server. (Andrew Bennetts, #389413)
  • Handle things like ``bzr add foo`` and ``bzr rm foo`` when the tree is at the root of a drive. ``osutils._cicp_canonical_relpath`` always assumed that ``abspath()`` returned a path that did not have a trailing ``/``, but that is not true when working at the root of the filesystem. (John Arbash Meinel, Jason Spashett, #322807)
  • Hide deprecation warnings for 'final' releases for python2.6. (John Arbash Meinel, #440062)
  • Improve the time for ``bzr log DIR`` for 2a format repositories. We had been using the same code path as for

New in Bazaar 2.0.0 (Oct 6, 2009)

  • This release of Bazaar makes the 2a (previously 'brisbane-core') format the default when new branches or repositories are created. This format is substantially smaller and faster for many operations. Most of the work in this release focuses on bug fixes and stabilization, covering both 2a and previous formats. (See the Upgrade Guide for information on migrating existing projects.)
  • This release also improves the documentation content and presentation, including adding Windows HtmlHelp manuals.
  • The Bazaar team decided that 2.0 will be a long-term supported release, with bugfix-only 2.0.x releases based on it, continuing for at least six months or until the following stable release.

New in Bazaar 1.17 (Jul 20, 2009)

  • Change an extension to call the python frozenset() rather than the C api PyFrozenSet_New. It turns out that python2.4 did not expose the C api. (John Arbash Meinel, #399366)
  • Fixes for the Makefile and the rename of generate_docs.py to tools/generate_docs.py to allow everything to be built on Windows. (John Arbash Meinel, #399356)
  • bzr serve once again applies a ChrootServer to the given directory before serving it. (Andrew Bennetts, #400535)

New in Bazaar 1.17 RC1 (Jul 13, 2009)

  • Compatibility Breaks:
  • bzr register-branch from the Launchpad plugin now refers to "project" instead of "product" which is the correct Launchpad terminology. The --product option is deprecated and users should switch to using --project. (Neil Martinsen-Burrell, #238764)
  • New Features:
  • bzr push now aborts if uncommitted changes (including pending merges) are present in the working tree (if one is present) and no revision is speified. The configuration option push_strict can be used to set the default for this behavior. (Vincent Ladeuil, #284038, #322808, #65286)
  • bzr revno and bzr revision-info now have a --tree option to show revision info for the working tree instead of the branch. (Matthew Fuller, John Arbash Meinel)
  • bzr send now aborts if uncommitted changes (including pending merges) are present in the working tree and no revision is specified. The configuration option send_strict can be used to set the default for this behavior. (Vincent Ladeuil, #206577)
  • Bug Fixes:
  • Accept uppercase "Y/N" to prompts such as from break lock. (#335182, Tim Powell, Martin Pool)
  • Add documentation about diverged branches and how to fix them in the centralized workflow with local commits. Mention bzr help diverged-branches when a push fails because the branches have diverged. (Neil Martinsen-Burrell, #269477)
  • Annotate would sometimes 'latch on' to trivial lines, causing important lines to be incorrectly annotated. (John Arbash Meinel, #387952)
  • Automatic format upgrades triggered by default stacking policies on a 1.16rc1 (or later) smart server work again. (Andrew Bennetts, #388675)
  • Avoid progress bar artifacts being left behind on the screen. (Martin Pool, #321935)
  • Better message in bzr split error suggesting a rich root format. (Neil Martinsen-Burrell, #220067)
  • Branch.set_append_revisions_only now works with branches on a smart server. (Andrew Bennetts, #365865)
  • By default, bzr branch will fail if the target directory exists, but does not already have a control directory. The flag --use-existing-dir will allow operation to proceed. (Alexander Belchenko, #307554)
  • bzr ls DIR --from-root now shows only things in DIR, not everything. (Ian Clatworthy)
  • Fetch between repositories does not error if they have inconsistent data that should be irrelevant to the fetch operation. (Aaron Bentley)
  • Fix AttributeError exception when reconfiguring lightweight checkout of a remote repository. (Jelmer Vernooij, #332194)
  • Fix bug in decoding v3 smart server messages when receiving multiple lots of excess bytes after an end-of-message. (Andrew Bennetts)
  • Force deletion of readonly files during merge, update and other tree transforms. (Craig Hewetson, Martin Pool, #218206)
  • Force socket shutdown in threaded http test servers to avoid client hangs (pycurl). (Vincent Ladeuil, #383920).
  • LRUCache will maintain the linked list pointers even if a nodes cleanup function raises an exception. (John Arbash Meinel, #396838)
  • Progress bars are now suppressed again when the environment variable BZR_PROGRESS_BAR is set to none. (Martin Pool, #339385)
  • Reduced memory consumption during bzr commit of large files. For pre 2a formats, should be down to ~3x the size of a file. For --2a format repositories, it is down to the size of the file content plus the size of the compressed text. Related to bug #109114. (John Arbash Meinel)
  • Set hidden attribute on .bzr directory below unicode path should never fail with error. The operation should succeed even if bzr unable to set the attribute. (Alexander Belchenko, related to bug #335362).
  • Stacking will no longer accept requests to stack on the same branch/repository. Existing branches that incorrectly reference the same repository in a stacking configuration will now raise UnstackableLocationError when the branch is opened. This can be fixed by removing the stacking location inside .bzr/branch. (Robert Collins, #376243)
  • The log+ decorator, useful in debugging or profiling, could cause "AttributeError: 'list' object has no attribute 'next'". This is now fixed. The log decorator no longer shows the elapsed time or transfer rate because they're available in the log prefixes and the transport activity display respectively. (Martin Pool, #340347)
  • Unshelve works correctly when multiple zero-length files are present on the shelf. (Aaron Bentley, #363444)
  • Progress bars no longer show the network transport scheme or direction. (Martin Pool)
  • launchpad-login now respects the 'verbose' option. (Jonathan Lange, #217031)
  • Internals:
  • bzrlib.user_encoding is now officially deprecated. It is not possible to write a deprecation wrapper, but the variable will be removed in the near future. Use bzrlib.osutils.get_user_encoding() instead. (Alexander Belchenko)
  • Command lookup has had hooks added. bzrlib.Command.hooks has three new hook points: get_command, get_missing_command and list_commands, which allow just-in-time command name provision rather than requiring all command names be known a-priori. (Robert Collins)
  • get_app_path from win32utils.py now supports REG_EXPAND_SZ data type and can read path to wordpad.exe. (Alexander Belchenko, #392046)
  • graph.KnownGraph has been added. This is a class that can give answers to heads() very quickly. However, it has the assumption that the whole graph has already been loaded. This is true during annotate so it is used there with good success (as much as 2x faster for files with long ancestry and 'cherrypicked' changes.) (John Arbash Meinel, Vincent Ladeuil)
  • OS file locks are now taken out using CreateFile rather than LockFileEx on Windows. The locking remains exclusive with LockFileEx but now it also works on older versions of Windows (such as Win98). (Martin )
  • pack pack fetching is now done via a PackStreamSource rather than the Packer code. The user visible change is that we now properly fetch the minimum number of texts for non-smart fetching. (John Arbash Meinel)
  • VersionedFiles._add_text is a new api that lets us insert text into the repository as a single string, rather than a list of lines. This can improve memory overhead and performance of committing large files. (Currently a private api, used only by commit). (John Arbash Meinel)
  • Improvements:
  • bzr annotate can now be significantly faster. The time for bzr annotate NEWS is down to 7s from 22s in 1.16. Files with long histories and lots of 'duplicate insertions' will be improved more than others. (John Arbash Meinel, Vincent Ladeuil)
  • bzr ls is now faster. On OpenOffice.org, the time drops from 2.4 to 1.1 seconds. The improvement for bzr ls -r-1 is more substantial dropping from 54.3 to 1.1 seconds. (Ian Clatworthy)
  • Improve "Path(s) are not versioned" error reporting for some commands. (Benoît PIERRE)
  • Initial commit performance in --2a repositories has been improved by making it cheaper to build the initial CHKMap. (John Arbash Meinel)
  • Resolving a revno to a revision id on a branch accessed via bzr:// or bzr+ssh:// is now much faster and involves no VFS operations. This speeds up commands like bzr pull -r 123. (Andrew Bennetts)
  • revision-info now properly aligns the revnos/revids in the output and doesn't traceback when given revisions not in the current branch. Performance is also significantly improved when requesting multiple revs at once. (Matthew Fuller, John Arbash Meinel)
  • Tildes are no longer escaped by Transports. (Andy Kilner)
  • Documentation:
  • Avoid bad text wrapping in generated documentation. Slightly better formatting in the user reference. (Martin Pool, #249908)
  • Minor clarifications to the help for End-Of-Line conversions. (Ian Clatworthy)
  • API Changes:
  • Removed overspecific error class InvalidProgressBarType. (Martin Pool)
  • The method ProgressView._show_transport_activity is now show_transport_activity because it's part of the contract between this class and the UI. (Martin Pool)

New in Bazaar 1.16.1 (Jun 29, 2009)

  • We now properly request a more minimal set of file texts when fetching multiple revisions. (Robert Collins, John Arbash Meinel, #390563)
  • Repositories using CHK pages (which includes the new 2a format) will no longer error during commit or push operations when an autopack operation is triggered. (Robert Collins, #365615)
  • chk_map.iter_interesting_nodes now properly uses the intersection of referenced nodes rather than the union to determine what uninteresting pages we still need to look at. Prior to this, incrementally pushing to stacked branch would push the minimal data, but fetching everything would request extra texts. There are some unhandled cases wrt trees of different depths, but this fixes the common cases. (Robert Collins, John Arbash Meinel, #390563)
  • GroupCompress repositories now take advantage of the pack hints parameter to permit cross-format fetching to incrementally pack the converted data. (Robert Collins)
  • Repository.commit_write_group now returns opaque data about what was committed, for passing to the Repository.pack. Repositories without atomic commits will still return None. (Robert Collins)
  • Repository.pack now takes an optional hint parameter which will support doing partial packs for repositories that can do that. (Robert Collins)
  • RepositoryFormat has a new attribute 'pack_compresses' which is True when doing a pack operation changes the compression of content in the repository. (Robert Collins)
  • StreamSink and InterDifferingSerialiser will call Repository.pack with the hint returned by Repository.commit_write_group if the formats were different and the repository can increase compression by doing a pack operation. (Robert Collins, #376748)

New in Bazaar 1.16 (Jun 19, 2009)

  • Changes from 1.16rc1 to 1.16final:
  • Fix the nested tree flag check so that upgrade from development formats to 2a can work correctly. (Jelmer Vernooij, #388727)
  • Automatic format upgrades triggered by default stacking policies on a 1.16rc1 (or later) smart server work again. (Andrew Bennetts, #388675)
  • Compatibility Breaks:
  • Display prompt on stderr (instead of stdout) when querying users so that the output of commands can be safely redirected. (Vincent Ladeuil, #376582)
  • New Features:
  • A new repository format 2a has been added. This is a beta release of the the brisbane-core (aka group-compress) project. This format now suitable for wider testing by advanced users willing to deal with some bugs. We would appreciate test reports, either positive or negative. Format 2a is substantially smaller and faster for many operations on many trees. This format or an updated version will become the default in bzr 2.0.
  • This is a rich-root format, so this repository format can be used with bzr-svn. Bazaar branches in previous non-rich-root formats can be converted (including by merge, push and pull) to format 2a, but not vice versa. We recommend upgrading previous development formats to 2a.
  • Upgrading to this format can take considerable time because it expands and more concisely repacks the full history.
  • If you use stacked branches, you must upgrade the stacked branches before the stacked-on branches. (See )
  • --development7-rich-root is a new dev format, similar to --dev6 but using a Revision serializer using bencode rather than XML. (Jelmer Vernooij, John Arbash Meinel)
  • mail_client=claws now supports --body (and message body hooks). Also uses configured from address. (Barry Warsaw)
  • Improvements:
  • --development6-rich-root can now stack. (Modulo some smart-server bugs with stacking and non default formats.) (John Arbash Meinel, #373455)
  • --development6-rich-root delays generating a delta index for the first object inserted into a group. This has a beneficial impact on bzr commit since each committed texts goes to its own group. For committing a 90MB file, it drops peak memory by about 200MB, and speeds up commit from 7s => 4s. (John Arbash Meinel)
  • Numerous operations are now faster for huge projects, i.e. those with a large number of files and/or a large number of revisions, particularly when the latest development format is used.
  • Pyrex version of bencode support. This provides optimized support for both encoding and decoding, and is now found at bzrlib.bencode. bzrlib.utils.bencode is now deprecated. (Alexander Belchenko, Jelmer Vernooij, John Arbash Meinel)
  • Bug Fixes:
  • Bazaar can now pass attachment files to the mutt email client. (Edwin Grubbs, #384158)
  • Better message in bzr add output suggesting using bzr ignored to see which files can also be added. (Jason Spashett, #76616)
  • bzr pull -r 123 from a stacked branch on a smart server no longer fails. Also, the Branch.revision_history() API now works in the same situation. (Andrew Bennetts, #380314)
  • bzr serve on Windows no longer displays a traceback simply because a TCP client disconnected. (Andrew Bennetts)
  • Clarify the rules for locking and fallback repositories. Fix bugs in how RemoteRepository was handling fallbacks along with the _real_repository. (Andrew Bennetts, John Arbash Meinel, #375496)
  • Fix a small bug with fetching revisions w/ ghosts into a new stacked branch. Not often triggered, because it required ghosts to be part of the fetched revisions, not in the stacked-on ancestry. (John Arbash Meinel)
  • Fix status and commit to work with content filtered trees, addressing numerous bad bugs with line-ending support. (Ian Clatworthy, #362030)
  • Fix problem of "directory not empty" when contending for a lock over sftp. (Martin Pool, #340352)
  • Fix rule handling so that eol is optional, not mandatory. (Ian Clatworthy, #379370)
  • Pushing a new stacked branch to a 1.15 smart server was broken due to a bug in the BzrDirFormat.initialize_ex smart verb. This is fixed in 1.16, but required changes to the network protocol, so the BzrDirFormat.initialize_ex verb has been removed and replaced with a corrected BzrDirFormat.initialize_ex_1.16 verb. 1.15 clients will still work with a 1.16 server as they will fallback to slower (and bug-free) methods. (Jonathan Lange, Robert Collins, Andrew Bennetts, #385132)
  • Reconcile can now deal with text revisions that originated in revisions that are ghosts. (Jelmer Vernooij, #336749)
  • Support cloning of branches with ghosts in the left hand side history. (Jelmer Vernooij, #248540)
  • The ''bzr diff'' now catches OSError from osutils.rmtree and logs a helpful message to the trace file, unless the temp directory really was removed (which would be very strange). Since the diff operation has succeeded from the user's perspective, no output is written to stderr or stdout. (Maritza Mendez, #363837)
  • Translate errors received from a smart server in response to a BzrDirFormat.initialize or BzrDirFormat.initialize_ex request. This was causing tracebacks even for mundane errors like PermissionDenied. (Andrew Bennetts, #381329)
  • Documentation:
  • Added directory structure and started translation of docs in Russian. (Alexey Shtokalo, Alexander Iljin, Alexander Belchenko, Dmitry Vasiliev, Volodymyr Kotulskyi)
  • API Changes:
  • Added osutils.parent_directories(). (Ian Clatworthy)
  • bzrlib.progress.ProgressBar, ChildProgress, DotsProgressBar, TTYProgressBar and child_progress are now deprecated; use ui_factory.nested_progress_bar instead. (Martin Pool)
  • graph.StackedParentsProvider is now a public API, replacing graph._StackedParentsProvider. The api is now considered stable and ready for external users. (Gary van der Merwe)
  • bzrlib.user_encoding is deprecated in favor of get_user_encoding. (Alexander Belchenko)
  • TreeTransformBase no longer assumes that limbo is provided via disk. DiskTreeTransform now provides disk functionality. (Aaron Bentley)
  • Internals:
  • Remove weave.py script for accessing internals of old weave-format repositories. (Martin Pool)
  • Testing:
  • The number of cores is now correctly detected on OSX. (John Szakmeister)
  • The number of cores is also detected on Solaris and win32. (Vincent Ladeuil)
  • The number of cores is also detected on FreeBSD. (Matthew Fuller)

New in Bazaar 1.16 RC1 (Jun 13, 2009)

  • Compatibility Breaks:
  • Display prompt on stderr (instead of stdout) when querying users so that the output of commands can be safely redirected. (Vincent Ladeuil, #376582)
  • New Features:
  • A new repository format 2a has been added. This is a beta release of the the brisbane-core (aka group-compress) project. This format now suitable for wider testing by advanced users willing to deal with some bugs. We would appreciate test reports, either positive or negative. Format 2a is substantially smaller and faster for many operations on many trees. This format or an updated version will become the default in bzr 2.0.
  • This is a rich-root format, so this repository format can be used with bzr-svn. Bazaar branches in previous non-rich-root formats can be converted (including by merge, push and pull) to format 2a, but not vice versa. We recommend upgrading previous development formats to 2a.
  • Upgrading to this format can take considerable time because it expands and more concisely repacks the full history.
  • If you use stacked branches, you must upgrade the stacked branches before the stacked-on branches. (See )
  • --development7-rich-root is a new dev format, similar to --dev6 but using a Revision serializer using bencode rather than XML. (Jelmer Vernooij, John Arbash Meinel)
  • mail_client=claws now supports --body (and message body hooks). Also uses configured from address. (Barry Warsaw)
  • Improvements:
  • --development6-rich-root can now stack. (Modulo some smart-server bugs with stacking and non default formats.) (John Arbash Meinel, #373455)
  • --development6-rich-root delays generating a delta index for the first object inserted into a group. This has a beneficial impact on bzr commit since each committed texts goes to its own group. For committing a 90MB file, it drops peak memory by about 200MB, and speeds up commit from 7s => 4s. (John Arbash Meinel)
  • Numerous operations are now faster for huge projects, i.e. those with a large number of files and/or a large number of revisions, particularly when the latest development format is used. These operations (and improvements on OpenOffice.org) include: branch in a shared repository (2X faster), branch --no-tree (100X faster), diff (2X faster), tags (70X faster) (Ian Clatworthy)
  • Pyrex version of bencode support. This provides optimized support for both encoding and decoding, and is now found at bzrlib.bencode. bzrlib.utils.bencode is now deprecated. (Alexander Belchenko, Jelmer Vernooij, John Arbash Meinel)
  • Bug Fixes:
  • Bazaar can now pass attachment files to the mutt email client. (Edwin Grubbs, #384158)
  • Better message in bzr add output suggesting using bzr ignored to see which files can also be added. (Jason Spashett, #76616)
  • bzr pull -r 123 from a stacked branch on a smart server no longer fails. Also, the Branch.revision_history() API now works in the same situation. (Andrew Bennetts, #380314)
  • bzr serve on Windows no longer displays a traceback simply because a TCP client disconnected. (Andrew Bennetts)
  • Clarify the rules for locking and fallback repositories. Fix bugs in how RemoteRepository was handling fallbacks along with the _real_repository. (Andrew Bennetts, John Arbash Meinel, #375496)
  • Fix a small bug with fetching revisions w/ ghosts into a new stacked branch. Not often triggered, because it required ghosts to be part of the fetched revisions, not in the stacked-on ancestry. (John Arbash Meinel)
  • Fix status and commit to work with content filtered trees, addressing numerous bad bugs with line-ending support. (Ian Clatworthy, #362030)
  • Fix problem of "directory not empty" when contending for a lock over sftp. (Martin Pool, #340352)
  • Fix rule handling so that eol is optional, not mandatory. (Ian Clatworthy, #379370)
  • Pushing a new stacked branch to a 1.15 smart server was broken due to a bug in the BzrDirFormat.initialize_ex smart verb. This is fixed in 1.16, but required changes to the network protocol, so the BzrDirFormat.initialize_ex verb has been removed and replaced with a corrected BzrDirFormat.initialize_ex_1.16 verb. 1.15 clients will still work with a 1.16 server as they will fallback to slower (and bug-free) methods. (Jonathan Lange, Robert Collins, Andrew Bennetts, #385132)
  • Reconcile can now deal with text revisions that originated in revisions that are ghosts. (Jelmer Vernooij, #336749)
  • Support cloning of branches with ghosts in the left hand side history. (Jelmer Vernooij, #248540)
  • The ''bzr diff'' now catches OSError from osutils.rmtree and logs a helpful message to the trace file, unless the temp directory really was removed (which would be very strange). Since the diff operation has succeeded from the user's perspective, no output is written to stderr or stdout. (Maritza Mendez, #363837)
  • Translate errors received from a smart server in response to a BzrDirFormat.initialize or BzrDirFormat.initialize_ex request. This was causing tracebacks even for mundane errors like PermissionDenied. (Andrew Bennetts, #381329)
  • Documentation:
  • Added directory structure and started translation of docs in Russian. (Alexey Shtokalo, Alexander Iljin, Alexander Belchenko, Dmitry Vasiliev, Volodymyr Kotulskyi)
  • API Changes:
  • Added osutils.parent_directories(). (Ian Clatworthy)
  • bzrlib.progress.ProgressBar, ChildProgress, DotsProgressBar, TTYProgressBar and child_progress are now deprecated; use ui_factory.nested_progress_bar instead. (Martin Pool)
  • graph.StackedParentsProvider is now a public API, replacing graph._StackedParentsProvider. The api is now considered stable and ready for external users. (Gary van der Merwe)
  • bzrlib.user_encoding is deprecated in favor of get_user_encoding. (Alexander Belchenko)
  • TreeTransformBase no longer assumes that limbo is provided via disk. DiskTreeTransform now provides disk functionality. (Aaron Bentley)
  • Internals:
  • Remove weave.py script for accessing internals of old weave-format repositories. (Martin Pool)
  • Testing:
  • The number of cores is now correctly detected on OSX. (John Szakmeister)
  • The number of cores is also detected on Solaris and win32. (Vincent Ladeuil)
  • The number of cores is also detected on FreeBSD. (Matthew Fuller)

New in Bazaar 1.15.1 (Jun 10, 2009)

  • Translate errors received from a smart server in response to a ``BzrDirFormat.initialize`` or ``BzrDirFormat.initialize_ex`` request. This was causing tracebacks even for mundane errors like ``PermissionDenied``. (Andrew Bennetts, #381329)

New in Bazaar 1.15 (May 23, 2009)

  • The smart server will no longer raise 'NoSuchRevision' when streaming content with a size mismatch in a reconstructed graph search.
  • A new "bzr dpush" command was added.
  • Plugins can now define their own annotation tie-breaker

New in Bazaar 1.14.1 (May 4, 2009)

  • Change api_minimum_version back to api_minimum_version = (1, 13, 0)

New in Bazaar 1.14 RC2 (Apr 29, 2009)

  • Fix for bug 358037 Revision not in bzrlib.groupcompress.GroupCompressVersionedFiles (Brian de Alwis, John A Meinel)
  • Fix for bug 354036 ErrorFromSmartServer - AbsentContentFactory object has no attribute 'get_bytes_as' exception while pulling from Launchpad (Jean-Francois Roy, Andrew Bennetts, Robert Collins)
  • Fix for bug 355280 eol content filters are never loaded and thus never applied (Brian de Alwis, Ian Clatworthy)
  • bzr.dev -r4280 Change _fetch_uses_deltas = False for CHK repos until we can write a better fix. (John Arbash Meinel, Robert Collins)
  • Fix for bug 361574 uncommit recommends undefined --levels and -n options (Marius Kruger, Ian Clatworthy)
  • bzr.dev r4289 as cherrypicked at lp:~spiv/bzr/stacking-cherrypick-1.14 (Andrew Bennetts, Robert Collins)
  • Compatibility Breaks:
  • A previously disabled code path to accelerate getting configuration settings from a smart server has been reinstated. We think this may cause a incompatibility with servers older than bzr 0.15. We intend to issue a point release to address this if it turns out to be a problem. (Robert Collins, Andrew Bennetts)
  • bzr no longer autodetects nested trees as 'tree-references'. They must now be explicitly added tree references. At the commandline, use join --reference instead of add. (Aaron Bentley)
  • The --long log format (the default) no longer shows merged revisions implicitly, making it consistent with the short and line log formats. To see merged revisions for just a given revision, use bzr log -n0 -rX. To see every merged revision, use bzr log -n0. (Ian Clatworthy)
  • New Features:
  • New formats 1.14 and 1.14-rich-root supporting End-Of-Line (EOL) conversions, keyword templating (via the bzr-keywords plugin) and generic content filtering. These formats replace the experimental development-wt5 and development-wt5-rich-root formats respectively, but have support for filtered views disabled. (Ian Clatworthy)
  • New mv --auto option recognizes renames after they occur. (Aaron Bentley)
  • bzr can now get passwords from stdin without requiring a controlling terminal (i.e. by redirecting stdin). (Vincent Ladeuil)
  • bzr log now supports filtering of multiple files and directories and will show changes that touch any of them. Furthermore, directory filtering now shows the changes to any children of that directory, not just the directory object itself. (Ian Clatworthy, #97715)
  • bzr shelve can now apply changes without storing anything on the shelf, via the new --destroy option. (Aaron Bentley)
  • bzr send now accepts --body to specify an initial message body. (Aaron bentley)
  • bzr xxx --usage where xxx is a command now shows a usage message and the options without the descriptive help sections (like Description and Examples). A message is also given explaining how to see the complete help, i.e. bzr help xxx. (Ian Clatworthy)
  • Content filters can now be used to provide custom conversion between the canonical format of content (i.e. as stored) and the convenience format of content (i.e. as created in working trees). See bzr help content-filters for further details. (Ian Clatworthy, Alexander Belchenko)
  • End-of-line conversion is now supported for formats supporting content filtering. See bzr help eol for details. (Ian Clatworthy)
  • Newly-blessed join command allows combining two trees into one. (Aaron Bentley)
  • Improvements:
  • A new format name alias default-rich-root has been added and points at the closest relative of the default format that supports rich roots. (Jelmer Vernooij, #338061)
  • Branching from a stacked branch using bzr*:// will now stream the data when the target repository does not need topological ordering, reducing round trips and network overhead. This uses the existing smart server methods added in 1.13, so will work on any 1.13 or newer server. (Robert Collins, Andrew Bennetts)
  • bzr cat and bzr export now supports a --filters option that displays/saves the content after content filters are applied. (Ian Clatworthy)
  • bzr ignore gives a more informative message when existing version controlled files match the ignore pattern. (Neil Martinsen-Burrell, #248895)
  • bzr log now has --include-merges as an alias for --levels 0. (Ian Clatworthy)
  • bzr send is faster on repositories with deep histories. (Ian Clatworthy)
  • Progress bars now show the rate of network activity for bzr+ssh:// and bzr:// connections. (Andrew Bennetts)
  • Pushing to a stacked pack-format branch on a 1.12 or older smart server now takes many less round trips. (Andrew Bennetts, Robert Collins, #294479)
  • Streaming push can be done to older repository formats. This is implemented using a new Repository.insert_stream_locked RPC. (Andrew Bennetts, Robert Collins)
  • The "ignoring files outside view: .." message has been re-worded to "Ignoring files outside view. View is .." to reduce confusion about what was being considered and what was being ignored. (Ian Clatworthy)
  • The long log formatter now shows [merge] indicators. If only one level of revisions is displayed and merges are found, the long and short log formatters now tell the user how to see the hidden merged revisions. (Ian Clatworthy)
  • The brisbane-core project has delivered its beta format development6-rich-root. This format is suitable for judicious testing by early adopters. In particular if you are benchmarking bzr performance please be sure to test using this format. At this stage more information is best obtained by contacting the Bazaar mailing list or IRC channel if you are interested in using this format. We will make end user documentation available closer to blessing the format as production ready. (Robert Collins, John Arbash Meinel, Ian Clatworthy, Vincent Ladeuil, Andrew Bennetts, Martin Pool)
  • Tildes are no longer escaped. No more ~user/project/branch! (Jonathan Lange)
  • Bug Fixes:
  • Pushing a new stacked branch will also push the parent inventories for revisions at the stacking boundary. This makes sure that the stacked branch has enough data to calculate inventory deltas for all of its revisions (without requiring the fallback branch). This avoids "'AbsentContentFactory' object has no attribute 'get_bytes_as'" errors when fetching the stacked branch from a 1.13 (or later) smart server. This partially fixes #354036. (Andrew Bennetts, Robert Collins)
  • End-Of-Line content filters are now loaded correctly. (Ian Clatworthy, Brian de Alwis, #355280)
  • Authentication plugins now receive all the parameters from the request itself (aka host, port, realm, path, etc). Previously, only the authentication section name, username and encoded password were provided. (Jean-Francois Roy)
  • bzr gives a better message if an invalid regexp is passed to bzr log -m. (Anne Mohsen, Martin Pool)
  • bzr split now says "See also: join" (Aaron Bentley, #335015)
  • bzr version-info now works in empty branches. (Jelmer Vernooij, #313028)
  • Fix "is not a stackable format" error when pushing a stackable-format branch with an unstackable-format repository to a destination with a default stacking policy. (Andrew Bennetts)
  • Fixed incorrect "Source format does not support stacking" warning when pushing to a smart server. (Andrew Bennetts, #334114)
  • Fix 'make check-dist-tarball' failure by converting paths to unicode when needed. (Vincent Ladeuil, #355454)
  • Fixed "Specified file 'x/y/z' is outside current view: " occurring on bzr add x/y/z in formats supporting views when no view is defined. (Ian Clatworthy, #344708)
  • It is no longer possible to fetch between repositories while the target repository is in a write group. This prevents race conditions that prevent the use of RPC's to perform fetch, and thus allows optimising more operations. (Robert Collins, Andrew Bennetts)
  • merge --force works again. (Robert Collins, #342105)
  • No more warnings are issued about sha being deprecated under python-2.6. (Vincent Ladeuil, #346593)
  • Pushing a new branch to a server that has a stacking policy will now upgrade from the local branch format when the stacking policy points at a branch which is itself stackable, because we know the client can read both branches, we know that the trunk for the project can be read too, so the upgrade will not inconvenience users. (Robert Collins, #345169)
  • Pushing a new stacked branch will also push the parent inventories for revisions at the stacking boundary. This makes sure that the stacked branch has enough data to calculate inventory deltas for all of its revisions (without requiring the fallback branch). This avoids "'AbsentContentFactory' object has no attribute 'get_bytes_as'" errors when fetching the stacked branch from a 1.13 (or later) smart server. This partially fixes #354036. (Andrew Bennetts, Robert Collins)
  • The full test suite is passing again on OSX. Several minor issues (mostly test related) have been fixed. (Vincent Ladeuil, #355273).
  • The GNU Changelog formatter is slightly improved in the case where the delta is empty, and now correctly claims not to support tags. (Andrea Bolognani)
  • Shelve can now shelve changes to a symlink target. (James Westby, #341558)
  • The help for the info command has been corrected. (Ian Clatworthy, #351931)
  • Upgrade will now use a sensible default format if the source repository uses rich roots. (Jelmer Vernooij, #252908)
  • Documentation:
  • Expanded the index of the developer documentation. (Eric Siegerman)
  • New topic bzr help debug-flags. (Martin Pool)
  • The generated manpage now explicitly lists aliases as commands. (James Westby, #336998)
  • API Changes:
  • APIs deprecated in 1.6 and previous versions of bzr are now removed. (Martin Pool)
  • CommitReporter is no longer called with unchanged status during commit - this was a full-tree overhead that bzr no longer performs. (Robert Collins)
  • New abstract UIFactory method get_username which will be called to obtain the username to use when connecting to remote machines. (Jelmer Vernooij)
  • New API Inventory.filter() added that filters an inventory by a set of file-ids so that only those fileids, their parents and their children are included. (Ian Clatworthy)
  • New sort order for get_record_stream groupcompress which sorts optimally for use with groupcompress compressors. (John Arbash Meinel, Robert Collins)
  • Repository APIs get_deltas_for_revisions() and get_revision_delta() now support an optional specific_fileids parameter. If provided, the deltas are filtered so that only those file-ids, their parents and their children are included. (Ian Clatworthy)
  • The get_credentials and set_credentials methods of AuthenticationConfig now accept an optional realm argument. (Jean-Francois Roy)
  • The pb argument to fetch() is deprecated. (Martin Pool)
  • The Serializer class and the serializer format registry have moved from bzrlib.xml_serializer to bzrlib.serializer. (Jelmer Vernooij)
  • The smart server jail now hooks into BzrDir.open to prevent any BzrDir that is not inside the backing transport from being opened. See the module documentation for bzrlib.smart.request for details. (Andrew Bennetts, Robert Collins)
  • Tree.get_symlink_target now always returns a unicode string result or None. Previously it would return the bytes from reading the link which could be in any arbitrary encoding. (Robert Collins)
  • Testing:
  • bzrlib.tests.TestCase now fails the test if its own setUp and tearDown weren't called. This catches faulty tests that forget to upcall when overriding setUp and tearDown. Those faulty tests were not properly isolated. (Andrew Bennetts, Robert Collins)
  • Fix test_msgeditor.MsgEditorTest test isolation. (Vincent Ladeuil, #347130)
  • medusa is not used anymore as an FTP test server starting with python2.6. A new FTP test server based on pyftplib can be used instead. This new server is a soft dependency as medusa which is still preferred if both are available (modulo python version). (Vincent Ladeuil)
  • Internals:
  • Added chk_map for fast, trie-based storage of tuple to string maps. (Robert Collins, John Arbash Meinel, Vincent Ladeuil)
  • Added bzrlib.chk_map for fast, trie-based storage of tuple to string maps. (Robert Collins, John Arbash Meinel, Vincent Ladeuil)
  • Added bzrlib.inventory_delta module. This will be used for serializing and deserializing inventory deltas for more efficient streaming on the the network. (Robert Collins, Andrew Bennetts)
  • Branch._get_config has been added, which splits out access to the specific config file from the branch. This is used to let RemoteBranch avoid constructing real branch objects to access configuration settings. (Robert Collins, Andrew Bennetts)
  • Branch now implements set_stacked_on_url in the base class as the implementation is generic and should impact foreign formats. This helps performance for RemoteBranch push operations to new stacked branches. (Robert Collins, Andrew Bennetts)
  • BtreeIndex._spill_mem_keys_to_disk() now generates disk index with optmizations turned off. This only has effect when processing > 100,000 keys during something like bzr pack. (John Arbash Meinel)
  • bzr selftest now accepts --subunit to run in subunit output mode. Requires lp:subunit installed to work, but is not a hard dependency. (Robert Collins)
  • BzrDir.open_branch now takes an optional ignore_fallbacks parameter for controlling opening of stacked branches. (Andrew Bennetts, Robert Collins)
  • CommitBuilder has a new method, record_iter_changes which works in terms of an iter_changes iterator rather than full tree scanning. (Robert Collins)
  • DirState can now be passed a custom SHA1Provider object enabling it to store the SHA1 and stat of the canonical (post content filtered) form. (Ian Clatworthy)
  • New assertLength method based on one Martin has squirreled away somewhere. (Robert Collins, Martin Pool)
  • New hook BzrDir.pre_open which runs before opening BzrDir objects, allowing better enforcement of the smart server jail when dealing with stacked branches. (Robert Collins, Andrew Bennetts)
  • New hook RioVersionInfoBuilder.revision, allowing extra entries to be added to the stanza that is printed for a particular revision. (Jelmer Vernooij)
  • New repository method refresh_data to cause any repository to make visible data inserted into the repository by a smart server fetch operation. (Robert Collins, Andrew Bennetts)
  • register_filter_stack_map now takes an optional fallback parameter, a callable to invoke if a preference has a value not in the map of filter stacks. This enhancement allows, for example, bzr-svn to handle existing svn properties that define a list of keywords to be expanded. (Ian Clatworthy)
  • RemoteBranchConfig will use a new verb Branch.set_config_option to write config settings to smart servers that support this, saving 5 round trips on the stacked streaming acceptance test. (Robert Collins, Andrew Bennetts)
  • RemoteBranch now provides _get_config for access to just the branch specific configuration from a remote server, which uses the already existing Branch.get_config_file smart verb. (Robert Collins, Andrew Bennetts)
  • RemoteRepository will now negatively cache missing revisions during get_parent_map while read-locked. Write-locks are unaffected. (Robert Collins, Andrew Bennetts)
  • Removed InterRemoteToOther, InterOtherToRemote and InterPackToRemotePack classes, as they are now unnecessary. (Andrew Bennetts)
  • RepositoryFormat as a new attribute fast_deltas to indicate whether the repository can efficiently generate deltas between trees regardless of tree size. (Robert Collins)
  • Repository.iter_files_bytes() now properly returns an "iterable of byte strings" (aka 'chunked') for the content. It previously was returning a plain string, which worked, but performed very poorly when building a working tree (file.writelines(str) is very inefficient). This can have a large effect on bzr checkout times. (John Arbash Meinel)
  • selftest now supports a --parallel option, with values of 'fork' or 'subprocess' to run the test suite in parallel. Currently only linux machine work, other platforms need patches submitted. (Robert Collins, Vincent Ladeuil)
  • tests.run_suite has a new parameter suite_decorators, a list of callables to use to decorate the test suite. Such decorators can add or remove tests, or even remote the test suite to another machine if desired. (Robert Collins)
  • The smart server verb Repository.get_parent_map can now include information about ghosts when the special revision include-missing: is in the requested parents map list. With this flag, ghosts are included as missing:REVISION_ID. (Robert Collins, Andrew Bennetts)
  • _walk_to_common_revisions will now batch up at least 50 revisions before calling get_parent_map on the target, regardless of InterRepository. (Andrew Bennetts, Robert Collins)

New in Bazaar 1.13.2 (Apr 29, 2009)

  • Fix for bug 354036 ErrorFromSmartServer - AbsentContentFactory object has no attribute 'get_bytes_as' exception while pulling from Launchpad (Jean-Francois Roy, Andrew Bennetts, Robert Collins)

New in Bazaar 1.14 RC1 (Apr 9, 2009)

  • New formats 1.14 and 1.14-rich-root supporting End-Of-Line (EOL) conversions, keyword templating (via the bzr-keywords plugin) and generic content filtering. End-of-line conversion is now supported for formats supporting content filtering.
  • Compatibility Breaks:
  • A previously disabled code path to accelerate getting configuration settings from a smart server has been reinstated. We think this may cause a incompatibility with servers older than bzr 0.15. We intend to issue a point release to address this if it turns out to be a problem. (Robert Collins, Andrew Bennetts)
  • bzr no longer autodetects nested trees as 'tree-references'. They must now be explicitly added tree references. At the commandline, use join --reference instead of add. (Aaron Bentley)
  • The --long log format (the default) no longer shows merged revisions implicitly, making it consistent with the short and line log formats. To see merged revisions for just a given revision, use bzr log -n0 -rX. To see every merged revision, use bzr log -n0. (Ian Clatworthy)
  • New Features:
  • New formats 1.14 and 1.14-rich-root supporting End-Of-Line (EOL) conversions, keyword templating (via the bzr-keywords plugin) and generic content filtering. These formats replace the experimental development-wt5 and development-wt5-rich-root formats respectively, but have support for filtered views disabled. (Ian Clatworthy)
  • New mv --auto option recognizes renames after they occur. (Aaron Bentley)
  • bzr can now get passwords from stdin without requiring a controlling terminal (i.e. by redirecting stdin). (Vincent Ladeuil)
  • bzr log now supports filtering of multiple files and directories and will show changes that touch any of them. Furthermore, directory filtering now shows the changes to any children of that directory, not just the directory object itself. (Ian Clatworthy, #97715)
  • bzr shelve can now apply changes without storing anything on the shelf, via the new --destroy option. (Aaron Bentley)
  • bzr send now accepts --body to specify an initial message body. (Aaron bentley)
  • bzr xxx --usage where xxx is a command now shows a usage message and the options without the descriptive help sections (like Description and Examples). A message is also given explaining how to see the complete help, i.e. bzr help xxx. (Ian Clatworthy)
  • Content filters can now be used to provide custom conversion between the canonical format of content (i.e. as stored) and the convenience format of content (i.e. as created in working trees). See bzr help content-filters for further details. (Ian Clatworthy, Alexander Belchenko)
  • End-of-line conversion is now supported for formats supporting content filtering. See bzr help eol for details. (Ian Clatworthy)
  • Newly-blessed join command allows combining two trees into one. (Aaron Bentley)
  • Improvements:
  • A new format name alias default-rich-root has been added and points at the closest relative of the default format that supports rich roots. (Jelmer Vernooij, #338061)
  • Branching from a stacked branch using bzr*:// will now stream the data when the target repository does not need topological ordering, reducing round trips and network overhead. This uses the existing smart server methods added in 1.13, so will work on any 1.13 or newer server. (Robert Collins, Andrew Bennetts)
  • bzr cat and bzr export now supports a --filters option that displays/saves the content after content filters are applied. (Ian Clatworthy)
  • bzr ignore gives a more informative message when existing version controlled files match the ignore pattern. (Neil Martinsen-Burrell, #248895)
  • bzr send is faster on repositories with deep histories. (Ian Clatworthy)
  • Progress bars now show the rate of network activity for bzr+ssh:// and bzr:// connections. (Andrew Bennetts)
  • Pushing to a stacked pack-format branch on a 1.12 or older smart server now takes many less round trips. (Andrew Bennetts, Robert Collins, #294479)
  • Streaming push can be done to older repository formats. This is implemented using a new Repository.insert_stream_locked RPC. (Andrew Bennetts, Robert Collins)
  • The "ignoring files outside view: .." message has been re-worded to "Ignoring files outside view. View is .." to reduce confusion about what was being considered and what was being ignored. (Ian Clatworthy)
  • The long log formatter now shows [merge] indicators. If only one level of revisions is displayed and merges are found, the long and short log formatters now tell the user how to see the hidden merged revisions. (Ian Clatworthy)
  • The brisbane-core project has delivered its beta format development6-rich-root. This format is suitable for judicious testing by early adopters. In particular if you are benchmarking bzr performance please be sure to test using this format. At this stage more information is best obtained by contacting the Bazaar mailing list or IRC channel if you are interested in using this format. We will make end user documentation available closer to blessing the format as production ready. (Robert Collins, John Arbash Meinel, Ian Clatworthy, Vincent Ladeuil, Andrew Bennetts, Martin Pool)
  • Tildes are no longer escaped. No more ~user/project/branch! (Jonathan Lange)
  • Bug Fixes:
  • Authentication plugins now receive all the parameters from the request itself (aka host, port, realm, path, etc). Previously, only the authentication section name, username and encoded password were provided. (Jean-Francois Roy)
  • bzr gives a better message if an invalid regexp is passed to bzr log -m. (Anne Mohsen, Martin Pool)
  • bzr split now says "See also: join" (Aaron Bentley, #335015)
  • bzr version-info now works in empty branches. (Jelmer Vernooij, #313028)
  • Fix "is not a stackable format" error when pushing a stackable-format branch with an unstackable-format repository to a destination with a default stacking policy. (Andrew Bennetts)
  • Fixed incorrect "Source format does not support stacking" warning when pushing to a smart server. (Andrew Bennetts, #334114)
  • Fix 'make check-dist-tarball' failure by converting paths to unicode when needed. (Vincent Ladeuil, #355454)
  • Fixed "Specified file 'x/y/z' is outside current view: " occurring on bzr add x/y/z in formats supporting views when no view is defined. (Ian Clatworthy, #344708)
  • It is no longer possible to fetch between repositories while the target repository is in a write group. This prevents race conditions that prevent the use of RPC's to perform fetch, and thus allows optimising more operations. (Robert Collins, Andrew Bennetts)
  • merge --force works again. (Robert Collins, #342105)
  • No more warnings are issued about sha being deprecated under python-2.6. (Vincent Ladeuil, #346593)
  • Pushing a new branch to a server that has a stacking policy will now upgrade from the local branch format when the stacking policy points at a branch which is itself stackable, because we know the client can read both branches, we know that the trunk for the project can be read too, so the upgrade will not inconvenience users. (Robert Collins, #345169)
  • The full test suite is passing again on OSX. Several minor issues (mostly test related) have been fixed. (Vincent Ladeuil, #355273).
  • The GNU Changelog formatter is slightly improved in the case where the delta is empty, and now correctly claims not to support tags. (Andrea Bolognani)
  • Shelve can now shelve changes to a symlink target. (James Westby, #341558)
  • The help for the info command has been corrected. (Ian Clatworthy, #351931)
  • Upgrade will now use a sensible default format if the source repository uses rich roots. (Jelmer Vernooij, #252908)
  • Documentation:
  • Expanded the index of the developer documentation. (Eric Siegerman)
  • New topic bzr help debug-flags. (Martin Pool)
  • The generated manpage now explicitly lists aliases as commands. (James Westby, #336998)
  • API Changes:
  • APIs deprecated in 1.6 and previous versions of bzr are now removed. (Martin Pool)
  • CommitReporter is no longer called with unchanged status during commit - this was a full-tree overhead that bzr no longer performs. (Robert Collins)
  • New abstract UIFactory method get_username which will be called to obtain the username to use when connecting to remote machines. (Jelmer Vernooij)
  • New API Inventory.filter() added that filters an inventory by a set of file-ids so that only those fileids, their parents and their children are included. (Ian Clatworthy)
  • New sort order for get_record_stream groupcompress which sorts optimally for use with groupcompress compressors. (John Arbash Meinel, Robert Collins)
  • Repository APIs get_deltas_for_revisions() and get_revision_delta() now support an optional specific_fileids parameter. If provided, the deltas are filtered so that only those file-ids, their parents and their children are included. (Ian Clatworthy)
  • The get_credentials and set_credentials methods of AuthenticationConfig now accept an optional realm argument. (Jean-Francois Roy)
  • The pb argument to fetch() is deprecated. (Martin Pool)
  • The Serializer class and the serializer format registry have moved from bzrlib.xml_serializer to bzrlib.serializer. (Jelmer Vernooij)
  • The smart server jail now hooks into BzrDir.open to prevent any BzrDir that is not inside the backing transport from being opened. See the module documentation for bzrlib.smart.request for details. (Andrew Bennetts, Robert Collins)
  • Tree.get_symlink_target now always returns a unicode string result or None. Previously it would return the bytes from reading the link which could be in any arbitrary encoding. (Robert Collins)
  • Testing:
  • bzrlib.tests.TestCase now fails the test if its own setUp and tearDown weren't called. This catches faulty tests that forget to upcall when overriding setUp and tearDown. Those faulty tests were not properly isolated. (Andrew Bennetts, Robert Collins)
  • Fix test_msgeditor.MsgEditorTest test isolation. (Vincent Ladeuil, #347130)
  • medusa is not used anymore as an FTP test server starting with python2.6. A new FTP test server based on pyftplib can be used instead. This new server is a soft dependency as medusa which is still preferred if both are available (modulo python version). (Vincent Ladeuil)
  • Internals:
  • Added chk_map for fast, trie-based storage of tuple to string maps. (Robert Collins, John Arbash Meinel, Vincent Ladeuil)
  • Added bzrlib.chk_map for fast, trie-based storage of tuple to string maps. (Robert Collins, John Arbash Meinel, Vincent Ladeuil)
  • Added bzrlib.inventory_delta module. This will be used for serializing and deserializing inventory deltas for more efficient streaming on the the network. (Robert Collins, Andrew Bennetts)
  • Branch._get_config has been added, which splits out access to the specific config file from the branch. This is used to let RemoteBranch avoid constructing real branch objects to access configuration settings. (Robert Collins, Andrew Bennetts)
  • Branch now implements set_stacked_on_url in the base class as the implementation is generic and should impact foreign formats. This helps performance for RemoteBranch push operations to new stacked branches. (Robert Collins, Andrew Bennetts)
  • BtreeIndex._spill_mem_keys_to_disk() now generates disk index with optmizations turned off. This only has effect when processing > 100,000 keys during something like bzr pack. (John Arbash Meinel)
  • bzr selftest now accepts --subunit to run in subunit output mode. Requires lp:subunit installed to work, but is not a hard dependency. (Robert Collins)
  • BzrDir.open_branch now takes an optional ignore_fallbacks parameter for controlling opening of stacked branches. (Andrew Bennetts, Robert Collins)
  • CommitBuilder has a new method, record_iter_changes which works in terms of an iter_changes iterator rather than full tree scanning. (Robert Collins)
  • DirState can now be passed a custom SHA1Provider object enabling it to store the SHA1 and stat of the canonical (post content filtered) form. (Ian Clatworthy)
  • New assertLength method based on one Martin has squirreled away somewhere. (Robert Collins, Martin Pool)
  • New hook BzrDir.pre_open which runs before opening BzrDir objects, allowing better enforcement of the smart server jail when dealing with stacked branches. (Robert Collins, Andrew Bennetts)
  • New hook RioVersionInfoBuilder.revision, allowing extra entries to be added to the stanza that is printed for a particular revision. (Jelmer Vernooij)
  • New repository method refresh_data to cause any repository to make visible data inserted into the repository by a smart server fetch operation. (Robert Collins, Andrew Bennetts)
  • register_filter_stack_map now takes an optional fallback parameter, a callable to invoke if a preference has a value not in the map of filter stacks. This enhancement allows, for example, bzr-svn to handle existing svn properties that define a list of keywords to be expanded. (Ian Clatworthy)
  • RemoteBranchConfig will use a new verb Branch.set_config_option to write config settings to smart servers that support this, saving 5 round trips on the stacked streaming acceptance test. (Robert Collins, Andrew Bennetts)
  • RemoteBranch now provides _get_config for access to just the branch specific configuration from a remote server, which uses the already existing Branch.get_config_file smart verb. (Robert Collins, Andrew Bennetts)
  • RemoteRepository will now negatively cache missing revisions during get_parent_map while read-locked. Write-locks are unaffected. (Robert Collins, Andrew Bennetts)
  • Removed InterRemoteToOther, InterOtherToRemote and InterPackToRemotePack classes, as they are now unnecessary. (Andrew Bennetts)
  • RepositoryFormat as a new attribute fast_deltas to indicate whether the repository can efficiently generate deltas between trees regardless of tree size. (Robert Collins)
  • Repository.iter_files_bytes() now properly returns an "iterable of byte strings" (aka 'chunked') for the content. It previously was returning a plain string, which worked, but performed very poorly when building a working tree (file.writelines(str) is very inefficient). This can have a large effect on bzr checkout times. (John Arbash Meinel)
  • selftest now supports a --parallel option, with values of 'fork' or 'subprocess' to run the test suite in parallel. Currently only linux machine work, other platforms need patches submitted. (Robert Collins, Vincent Ladeuil)
  • tests.run_suite has a new parameter suite_decorators, a list of callables to use to decorate the test suite. Such decorators can add or remove tests, or even remote the test suite to another machine if desired. (Robert Collins)
  • The smart server verb Repository.get_parent_map can now include information about ghosts when the special revision include-missing: is in the requested parents map list. With this flag, ghosts are included as missing:REVISION_ID. (Robert Collins, Andrew Bennetts)
  • _walk_to_common_revisions will now batch up at least 50 revisions before calling get_parent_map on the target, regardless of InterRepository. (Andrew Bennetts, Robert Collins)

New in Bazaar 1.13.1 (Mar 24, 2009)

  • Change ./bzr's _script_version to match ./bzrlib/__init__.py version_info. (Bob Tanner, Martin Pool, #345232)
  • Distribution archives for 1.13 do not contain generated C extension modules (Jean-Francois Roy, Bob Tanner, #344465)
  • GNU ChangeLog output can now be produced by bzr log --format gnu-changelog is incorrect (Deejay, Bob Tanner, Martin Pool, Robert Collins, #343928)
  • merge --force works again. (Robert Collins, #342105)

New in Bazaar 1.13 RC1 (Mar 11, 2009)

  • This release includes bug fixes and a few performance and feature improvements. GNU Changelog output can now be produced by ``bzr log --format gnu-changelog``. Debug flags can now be set in ``~/.bazaar/bazaar.conf``. Lightweight Checkouts and Stacked Branches should both be much faster over remote connections.

New in Bazaar 1.11 RC1 (Jan 9, 2009)

  • This first monthly release of Bazaar for 2009 improves Bazaar's operation in Windows, Mac OS X, and other situations where file names are matched without regard to capitalization: Bazaar tries to match the case of an existing file. This release of Bazaar also improves the efficiency of Tortoise Windows Shell integration and lets it work on 64-bit platforms. The UI through which Bazaar supports historic formats has been improved, so 'bzr help formats' now gives a simpler and shorter list, with clear advice. This release also fixes a number of bugs, particularly a glitch that can occur when there are concurrent writes to a pack repository.

New in Bazaar 1.10 (Dec 6, 2008)

  • Don't set a pack write cache size from RepoFetcher, because the cache is not coherent with reads and causes ShortReadvErrors. This reverses the change that fixed #294479. (Martin Pool, #303856)
  • Properly handle when a revision can be inserted as a delta versus when it needs to be expanded to a fulltext for stacked branches. There was a bug involving merge revisions. As a method to help prevent future difficulties, also make stacked fetches sort topologically. (John Arbash Meinel, #304841)

New in Bazaar 1.10 RC1 (Nov 28, 2008)

  • This release of Bazaar focusses on performance improvements when pushing and pulling revisions, both locally and to remote networks. The popular ``shelve`` and ``unshelve`` commands, used to interactively revert and restore work in progress, have been merged from bzrtools into the bzr core. There are also bug fixes for portability, and for stacked branches.

New in Bazaar 1.9 (Nov 7, 2008)

  • NEW FEATURES:
  • New Branch hook transform_fallback_location allows a function to be called when looking up the stacked source. (Michael Hudson)
  • New repository formats 1.9 and 1.9-rich-root. These have all the functionality of 1.6, but use the new btree indexes. These indexes are both smaller and faster for access to historical information. (John Arbash Meinel)
  • IMPROVEMENTS:
  • BTreeIndex code now is able to prefetch extra pages to help tune the tradeoff between bandwidth and latency. Should be tuned appropriately to not impact commands which need minimal information, but provide a significant boost to ones that need more context. Only has a direct impact on the --development2 format which uses btree's for the indexes. (John Arbash Meinel)
  • bzr dump-btree is a hidden command introduced to allow dumping the contents of a compressed btree file. (John Arbash Meinel)
  • bzr pack now tells the index builders to optimize for size. For btree index repositories, this can save 25% of the index size (mostly in the text indexes). (John Arbash Meinel)
  • bzr push to an existing branch or repository on a smart server is faster, due to Bazaar making more use of the get_parent_map RPC when querying the remote branch's revision graph. (Andrew Bennetts)
  • default username for bzr+ssh and sftp can be configured in authentication.conf. (Aaron Bentley)
  • launchpad-login now provides a default username for bzr+ssh and sftp URLs, allowing username-free URLs to work for everyone. (Aaron Bentley)
  • lp: lookups no longer include usernames, making them shareable and shorter. (Aaron Bentley)
  • New PackRepository.autopack smart server RPC, which does autopacking entirely on the server. This is much faster than autopacking via plain file methods, which downloads a large amount of pack data and then re-uploads the same pack data into a single file. This fixes a major (although infrequent) cause of lengthy delays when using a smart server. For example, pushing the 10th revision to a repository with 9 packs now takes 44 RPCs rather than 179, and much less bandwidth too. This requires Bazaar 1.9 on both the client and the server, otherwise the client will fallback to the slower method. (Andrew Bennetts)
  • BUG FIXES:
  • A failure to load a plugin due to an IncompatibleAPI exception is now correctly reported. (Robert Collins, #279451)
  • API versioning support now has a multiple-version checking api require_any_api. (Robert Collins, #279447)
  • bzr branch --stacked from a smart server to a standalone branch works again. This fixes a regression in 1.7 and 1.8. (Andrew Bennetts, #270397)
  • bzr co uses less memory. It used to unpack the entire WT into memory before writing it to disk. This was a little bit faster, but consumed lots of memory. (John Arbash Meinel, #269456)
  • bzr missing --quiet no longer prints messages about whether there are missing revisions. The exit code indicates whether there were or not. (Martin Pool, #284748)
  • Fixes to the annotate code. The fast-path which re-used the stored deltas was accidentally disabled all the time, instead of only when a branch was stacked. Second, the code would accidentally re-use a delta even if it wasn't against the left-parent, this could only happen if bzr reconcile decided that the parent ordering was incorrect in the file graph. (John Arbash Meinel)
  • "Permission denied" errors that occur when pushing a new branch to a smart server no longer cause tracebacks. (Andrew Bennetts, #278673)
  • Some compatibility fixes for building the extensions with MSVC and for python2.4. (John Arbash Meinel, #277484)
  • The index logic is now able to reload the list of pack files if and index ends up disappearing. We still don't reload if the pack data itself goes missing after checking the index. This bug appears as a transient failure (file not found) when another process is writing to the repository. (John Arbash Meinel, #153786)
  • bzr switch and bzr bind will now update the branch nickname if it was previously set. All checkouts will now refer to the bound branch for a nickname if one was not explicitly set. (Marius Kruger, #230903)
  • DOCUMENTATION:
  • Improved hook documentation. (Michael Ernst)
  • API CHANGES:
  • commands.plugins_cmds is now a CommandRegistry, not a dict.
  • INTERNALS:
  • New AuthenticationConfig.set_credentials method allows easy programmatic configuration of authetication credentials.

New in Bazaar 1.8 (Oct 17, 2008)

  • Fix "Must end write group" error when another error occurs during bzr push. (Andrew Bennetts, #230902)
  • Some Pyrex versions require the WIN32 macro defined to compile on that platform. (Alexander Belchenko, Martin Pool, #277481)

New in Bazaar 1.8 RC1 (Oct 8, 2008)

  • ``bzr log file`` has been changed. It now uses a different method for determining which revisions to show as merging the changes to the file. It now only shows revisions which merged the change towards your mainline. This simplifies the output, makes it faster, and reduces memory consumption. (John Arbash Meinel)
  • ``bzr merge`` now defaults to having ``--reprocess`` set, whenever ``--show-base`` is not supplied. (John Arbash Meinel)
  • ``bzr+http//`` will now optionally load plugins and write logs on the server. (Marius Kruger)
  • ``bzrlib._dirstate_helpers_c.pyx`` does not compile correctly with Pyrex 0.9.4.1 (it generates C code which causes segfaults). We explicitly blacklist that version of the compiler for that extension. Packaged versions will include .c files created with pyrex >= 0.9.6 so it doesn't effect releases, only users running from the source tree. (John Arbash Meinel, #276868)
  • bzr is now compatible with python-2.6. python-2.6 is not yet officially supported (nor released, tests were conducted with the dev version of python-2.6rc2), but all known problems have been fixed. Feedback welcome. (Vincent Ladeuil, #269535)
  • ``bzr annotate`` will now include uncommitted changes from the local working tree by default. Such uncommitted changes are given the revision number they would get if a commit was done, followed with a ? to indicate that its not actually known. (Robert Collins, #3439)
  • ``bzr branch`` now accepts a ``--standalone`` option, which creates a standalone branch regardless of the presence of shared repositories. (Daniel Watkins)
  • ``bzr push`` is faster in the case there are no new revisions to push. It is also faster if there are no tags in the local branch. (Andrew Bennetts)
  • File changes during a commit will update the tree stat cache. (Robert Collins)
  • Location aliases can now accept a trailing path. (Micheal Hudson)
  • New hooks ``Lock.hooks`` when LockDirs are acquired and released. (Robert Collins, MartinPool)
  • Switching in heavyweight checkouts uses the master branch's context, not the checkout's context. (Adrian Wilkins)
  • ``status`` on large trees is now faster, due to optimisations in the walkdirs code. Of particular note, the walkdirs code now performs a temporary ``chdir()`` while reading a single directory; if your platform has non thread-local current working directories (and is not windows which has its own implementation), this may introduce a race condition during concurrent uses of bzrlib. The bzrlib CLI will not encounter this as it is single threaded for working tree operations. (Robert Collins)
  • The C extensions now build on python 2.4 (Robert Collins, #271939)
  • The ``-Dhpss`` debug flag now reports the number of smart server calls per medium to stderr. This is in addition to the existing detailed logging to the .bzr.log trace file. (Andrew Bennetts)
  • Avoid random failures arising from misinterpreted ``errno`` values in ``_readdir_pyx.read_dir``. (Martin Pool, #279381)
  • Branching from a shared repository on a smart server into a new repository now preserves the repository format. (Andrew Bennetts, #269214)
  • ``bzr log`` now accepts a ``--change`` option. (Vincent Ladeuil, #248427)
  • ``bzr missing`` now accepts an ``--include-merges`` option. (Vincent Ladeuil, #233817)
  • Don't try to filter (internally) '.bzr' from the files to be deleted if it's not there. (Vincent Ladeuil, #272648)
  • Fix '_in_buffer' AttributeError when using the -Dhpss debug flag. (Andrew Bennetts)
  • Fix TooManyConcurrentRequests errors caused by a connection failure when doing ``bzr pull`` or ``bzr merge`` from a ``bzr+ssh`` URL. (Andrew Bennetts, #246233)
  • Fixed ``bzr st -r branch:PATH_TO_BRANCH`` where the other branch is in a different repository than the current one. (Lukáš Lalinský, #144421)
  • Make the first line of the manpage preamble a comment again. (David Futcher, #242106)
  • Remove use of optional parameter in GSSAPI FTP support, since it breaks newer versions of Python-Kerberos. (Jelmer Vernooij)
  • The autopacking logic will now always create a single new pack from all of the content which it deems is worth moving. This avoids the 'repack a single pack' bug and should result in better packing overall. (John Arbash Meinel, #242510, #172644)
  • Trivial documentation fix. (John Arbash Meinel, #270471)
  • Explain revision/range identifiers. (Daniel Clemente)
  • ``CommitBuilder.record_entry_contents`` returns one more element in its result tuple - an optional file system hash for the hash cache to use. (Robert Collins)
  • ``dirstate.DirState.update_entry`` will now only calculate the sha1 of a file if it is likely to be needed in determining the output of iter_changes. (Robert Collins)
  • The PackRepository, RepositoryPackCollection, NewPack classes have a slightly changed interface to support different index types; as a result other users of these classes need to supply the index types they want. (Robert Collins)
  • ``bzrlib.tests.repository_implementations`` has been renamed to ``bzrlib.tests.per_repository`` so that we have a common structure (and it is shorter). (John Arbash Meinel, #239343)
  • ``LocalTransport.abspath()`` now returns a drive letter if the transport has one, fixing numerous tests on Windows. (Mark Hammond)
  • PreviewTree is now tested via intertree_implementations. (Aaron Bentley)
  • The full test suite is passing again on OSX. (Guillermo Gonzalez, Vincent Ladeuil)
  • The full test suite passes when run with ``-Eallow_debug``. (Andrew Bennetts)
  • A new hook, ``Branch.open``, has been added, which is called when branch objects are opened. (Robert Collins)
  • ``bzrlib.osutils._walkdirs_utf8`` has been refactored into common tree walking, and modular directory listing code to aid future performance optimisations and refactoring. (Robert Collins)
  • ``bzrlib.trace.debug_memory`` can be used to get a quick memory dump in the middle of processing. It only reports memory if ``/proc/PID/status`` is available. (John Arbash Meinel)
  • New method ``RevisionSpec.as_tree`` for representing the revision specifier as a revision tree object. (Lukáš Lalinský)
  • New race-free method on MutableTree ``get_file_with_stat`` for use when generating stat cache results. (Robert Collins)
  • New win32utils.get_local_appdata_location() provides access to a local directory for storing data. (Mark Hammond)
  • To be compatible with python-2.6 a few new rules should be observed. 'message' attribute can't be used anymore in exception classes, 'sha' and 'md5' modules have been deprecated (use osutils.[md5|sha]), object__init__ and object.__new__ don't accept parameters anymore. (Vincent Ladeuil)

New in Bazaar 1.7.1 (Oct 2, 2008)

  • No changes from 1.7.1rc1.

New in Bazaar 1.6 (Aug 26, 2008)

  • This release includes
  • new features like Stacked Branches, improved weave merge, and an updated
  • server protocol (now on v3) which will allow for better cross version
  • compatibility. With this release we have deprecated Knit format
  • repositories, and recommend that users upgrade them, we will continue to
  • support reading and writing them for the forseeable future, but we will
  • not be tuning them for performance as pack repositories have proven to be
  • better at scaling. This will also be the first release to bundle
  • TortoiseBzr in the standalone Windows installer.

New in Bazaar 1.6 RC2 (Aug 14, 2008)

  • ``bzr upgrade`` on remote branches accessed via bzr:// and bzr ssh:// now works. (Andrew Bennetts)
  • Change the ``get_format_description()`` strings for ``RepositoryFormatKnitPack5`` et al to be single line messages. (Aaron Bentley)
  • Fix for a regression on Win32 where we would try to call ``os.listdir()`` on a file and not catch the exception properly. (Windows raises a different exception.) This would manifest in places like ``bzr rm file`` or ``bzr switch``. (Mark Hammond, John Arbash Meinel)
  • ``Inventory.copy()`` was failing to set the revision property for the root entry. (Jelmer Vernooij)
  • sftp transport: added missing ``FileExists`` case to ``_translate_io_exception`` (Christophe Troestler, #123475)
  • The help for ``bzr ignored`` now suggests ``bzr ls --ignored`` for scripting use. (Robert Collins, #3834)
  • The default ``annotate`` logic will now always assign the last-modified value of a line to one of the revisions that modified it, rather than a merge revision. This would happen when both sides claimed to have modified the line resulting in the same text. The choice is arbitrary but stable, so merges in different directions will get the same results. (John Arbash Meinel, #232188)

New in Bazaar 1.6 Beta 3 (Jul 17, 2008)

  • This release adds a new 'stacked branches' feature allowing branches to
  • share storage without being in the same repository or on the same machine. It also adds a new hook, improved weaves, aliases for related locations, faster bzr ssh push, and several bug fixes.

New in Bazaar 1.6 Beta 2 (Jun 10, 2008)

  • Avoid KnitCorrupt error extracting inventories from some repositories. (The data is not corrupt; an internal check is detecting a problem reading from the repository.) (Martin Pool, Andrew Bennetts, Robert Collins, #234748)
  • Inserting a bundle which changes the contents of a file with no trailing end of line, causing a knit snapshot in a 'knits' repository will no longer cause KnitCorrupt. (Robert Collins)
  • RemoteBranch.pull needs to return the self._real_branch's pull result. It was instead just returning None, which breaks bzr pull. (John Arbash Meinel, #238149)
  • Sanitize branch nick before using it as an attachment filename in bzr send. (Luk�a Lalinsk��, #210218)
  • Squash inv_entry.symlink_target to a plain string when generating DirState details. This prevents from getting a UnicodeError when you have symlinks and non-ascii filenames. (John Arbash Meinel, #135320)
  • Added the 'alias' command to set/unset and display aliases. (Tim Penhey)
  • added, modified, and unknowns behaviour made consistent (all three now quote paths where required). Added --null option to added and modified (for null-separated unknowns, use ls --unknown --null) (Adrian Wilkins)
  • Faster branching (1.09x) and lightweight checkouts (1.06x) on large trees. (Ian Clatworthy, Aaron Bentley)
  • bzr status was breaking if you merged the same revision twice. (John Arbash Meinel, #235407)
  • Added Bazaar Zen section to the User Guide. (Ian Clatworthy)
  • Fix the test HTTPServer to be isolated from chdir calls made while it is running, allowing it to be used in blackbox tests. (Robert Collins)
  • WorkingTree.set_parent_(ids/trees) will now filter out revisions which are in the ancestry of other revisions. So if you merge the same tree twice, or merge an ancestor of an existing merge, it will only record the newest. (If you merge a descendent, it will replace its ancestor). (John Arbash Meinel, #235407)
  • Knit record serialisation is now stricter on what it will accept, to guard against potential internal bugs, or broken input. (Robert Collins)

New in Bazaar 1.5 (May 28, 2008)

  • Suppress deprecation warnings when bzrlib is a 'final' release. This way users of packaged software won't be bothered with DeprecationWarnings, but developers and testers will still see them.
  • Incorporate feedback from Jelmer Vernooij and Neil Martinsen-Burrell on the plugin and integration chapters of the User Guide.