Bazaar Release Notes

bzr 2.3.5

2.3.5:NOT RELEASED YET

External Compatibility Breaks

New Features

Improvements

Bug Fixes

  • Cope cleanly with buggy HTTP proxies that close the socket in the middle of a multipart response. (Martin Pool, #198646).
  • cStringIO is now unconditionally imported in bzrlib.config. (Jelmer Vernooij, #905361)
  • Fix “Unprintable exception” error when a RetryWithNewPacks error is displayed. (Andrew Bennetts)

Documentation

API Changes

Internals

Testing

bzr 2.3.4

Codename:One and counting
2.3.4:2011-07-14

This is a bugfix release. Upgrading is recommended for all users of earlier 2.3 releases.

This mainly fixes bug #786980 which blocked the SRU process for Ubuntu Natty.

External Compatibility Breaks

New Features

Improvements

  • Tweak an RPC implementation for Repository.get_parent_map, it was doing an inefficient small_set.difference_update(large_set) when we can do small_set = small_set.difference(large_set). This speeds up discovery time by about 10%. (John Arbash Meinel)

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)

API Changes

Internals

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)

bzr 2.3.3

2.3.3:2011-05-13

This is a bugfix release. Upgrading is recommended for all users of earlier 2.3 releases.

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)

bzr 2.3.2

2.3.2:2011-05-12

This is a bugfix release. Upgrading is recommended for all users of earlier 2.3 releases.

This was never released due to bug #760435 interrupting the release process by breaking the test suite under python-2.7 on natty.

External Compatibility Breaks

None

New Features

None

Improvements

  • Getting all entries from CHKInventory.iter_entries_by_dir() has been sped up dramatically for large trees. Iterating by dir is not the best way to load data from a CHK inventory, so it preloads all the items in the correct order. (With the gcc-tree, this changes it (re)reading 8GB of CHK data, down to just 150MB.) This has noticeable affects for things like building checkouts, etc. (John Arbash Meinel, #737234)

Bug Fixes

  • Bazaar now infers the default user email address on Unix from the local account name plus the contents of /etc/mailname if that file exists. In particular, this means that committing as root through etckeeper will normally not require running bzr whoami first. (Martin Pool, #616878)
  • bzr merge --preview --pull should respect the --preview option first, and not actually change the branch tip revision. (John Arbash Meinel, Dennis Duchier, #760152)
  • bzr push into a repository (that doesn’t have a branch), will no longer copy all revisions in the repository. Only the ones in the ancestry of the source branch, like it does in all other cases. (John Arbash Meinel, #465517)
  • Fix UnboundLocalError: local variable 'lock_url' in wait_lock error, especially while trying to save configuration from QBzr. (Martin Pool, #733136)
  • Fix “Unable to obtain lock” error when pushing to a bound branch if tags had changed. Bazaar was attempting to open and lock the master branch twice in this case. (Andrew Bennetts, #733350)
  • 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)
  • When reporting a crash without apport, don’t print the full list of plugins because it’s often too long. (Martin Pool, #716389)

API Changes

None.

Testing

  • FreeBSD8 has switched to python-2.7 which revealed a re-occurrence of a test failure in the launchpad plugin. xmlrpclib.py on natty carries a patch that is not in python-2.7 upstream and masked the issue. An additional fix has been added in the interim (<http://psf.upfronthosting.co.za/roundup/tracker/issue8194> should be fixed in python > 2.7.1). (Vincent Ladeuil, #654733)

bzr 2.3.1

2.3.1:2011-03-10

This is a bugfix release. Upgrading is recommended for all users of earlier 2.3 releases.

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)

bzr 2.3.0

2.3.0:2011-02-03

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.

Users are encouraged to upgrade from the other stable series.

bzr 2.3b5

2.3.b5:2011-01-13

This is the fifth and last beta of the 2.3 series, leading up to a 2.3.0 release in February. Beta releases are suitable for everyday use but may cause some incompatibilities with plugins.

2.3b5 includes bug fixes for committing to stacked branches, smoother upgrades of multiple branches, compatibility with python-2.7, full test suite passing on Ubuntu Natty and windows, less round-trips for several smart server operations, better support text conflicts resolve actions and some more.

All known fixed bugs in other series (2.0, 2.1, 2.2) are also included here.

External Compatibility Breaks

(none)

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

  • 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)

bzr 2.3b4

2.3.b4:2010-12-03

This is the fourth beta of the 2.3 series, leading up to a 2.3.0 release in February. Beta releases are suitable for everyday use but may cause some incompatibilities with plugins.

2.3b4 includes bug fixes for the config command and conflict resolution. More changes were made for the test scripts handling to make it easier to add reproducing recipes to bugs.

It also includes bug fixes from the 2.2.2 release as well as the bug fixes in the upcoming 2.0.7, 2.1.4 and 2.2.3 releases. This means that all known fixed bugs at the time of this release are included.

External Compatibility Breaks

(none)

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 <option> 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 <file> will not crash anymore if <file> 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])
  • Introduce an overrideEnv() helper for tests that needs to change the environment variables while respecting the isolation rules. Get rid of TestCase._restoreEnvironment which is now useless. (Vincent Ladeuil, #690563)
  • 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)

bzr 2.3b3

2.3b3:2010-11-05

External Compatibility Breaks

(none)

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, #665100)
  • 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)
  • The branch.tags.merge_to(target_branch) API used by plugins such as bzr-builddeb now propagates changes to the master branch of the target branch (if there is one). This makes it consistent with the other tag APIs. (Andrew Bennetts, #603395)
  • 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, #631515)

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)

bzr 2.3b2

2.3b2:2010-10-08

External 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)
  • BzrDir.generate_backup_name has been deprecated and replaced by a private method. osutils.available_backup_name provides an extensible replacement. This allowed the deprecation of bzrlib.transform.get_backup_name, bzrlib.transform._get_backup_name and bzrlib.transform.TreeTransformBase.has_named_child. (Vincent Ladeuil)

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)
  • Add -Dmem_dump debug flag, which uses meliae to dump memory to a file upon an out of memory error. (Karl Bielefeldt, #551391)
  • 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)

Improvements

  • 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)
  • 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)
  • When using the pycurl client module, Bazaar shows some of the text from HTTP server error messages. (Martin Pool, #656667)

Bug Fixes

  • 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)
  • 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)
  • Deleting a versioned directory can leave orphans: unversioned files that were present don’t have a parent anymore. The bzr.transform.orphan_policy configuration option controls the bzr behaviour: conflict (the default) leave the orphans in place and create a conflict for the directory, move create orphans named <file>.~#~ in a bzr-orphans directory at the root of the working tree. (Vincent Ladeuil, #323111)

Improvements

Documentation

  • Correct the documentation for setting up the smart server with Apache. (Neil Martinsen-Burrell, #311518)
  • Fix rst typos in bzrlib/help_topics/en/conflict-types.txt. (Vincent Ladeuil, #660943)
  • 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 a new simpler way to generate multiple test variations, by setting the scenarios attribute of a test class to a list of scenarios descriptions, then using load_tests_apply_scenarios. (See the testing guide and bzrlib.tests.scenarios.) Simplify test_http using this. (Martin Pool, #597791)
  • 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)
  • Skip tests that needs a bzr source tree when there isn’t one. This is needed to successfully 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)
  • 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)

bzr 2.3b1

2.3b1:2010-09-20

This is the first beta of the 2.3 series, leading up to a 2.3.0 release in January or February. Beta releases are suitable for everyday use but may cause some incompatibilities with plugins. Some plugins may need small updates to work with 2.3b1.

2.3b1 includes some performance improvements in both speed and memory consumption, some preliminary support for generating a texinfo version of the doc and better support for launchpad. Many changes were made to make our test suite more robust as well as numerous documentation fixes. It improves the common infrastructure for dealing with colocated named branches and foreign branches. We plan to continue with these themes through the 2.3 series.

It also includes bug fixes for 2.0.6, 2.1.3 and 2.2.1 and over 40 fixes of its own.

External Compatibility Breaks

(none)

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)

Improvements

  • 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 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 extension 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)
  • 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)
  • 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)
  • Reduce peak memory by one copy of compressed text when writing to pack repositories. (John Arbash Meinel, #566940)
  • 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)

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 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)
  • bzr commit SYMLINK now works, rather than trying to commit the target of the symlink. (Martin Pool, John Arbash Meinel, #128562)
  • bzr ignore PATTERNS exits with error if a bad pattern is supplied. InvalidPattern exception error message now shows faulting regular expression. (Parth Malwankar #300062)
  • 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)
  • 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)
  • decode parameter to get() method in FtpTransport and GioTransport classes is deprecated. (Alexander Belchenko)
  • 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)
  • 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 a problem in bzr’s Makefile that meant syntax errors in some parts of bzr’s source code could cause make check-nodocs to incorrectly return an exit code of 0. (Vincent Ladeuil, #626667)
  • 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)
  • 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)
  • 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)
  • 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'. This was a regression from Bazaar 2.1. (Andrew Bennetts, #636930)

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

  • 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)

  • 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)

  • 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)

  • 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)

  • 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)

  • FileInWrongBranch is deprecated in favour of PathNotChild and no longer raised. (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)

  • tree_files and internal_tree_files are now deprecated in favor of WorkingTree.open_containing_paths. (Martin Pool)

Internals

  • Remove used and broken code path in BranchInitHookParams.__repr__. (Andrew Bennetts)

Testing

  • Avoid spurious failures in ssh tests: wait for the SSH server to actually finish, rather than just waiting for it to negotiate the key exchange. (John Arbash Meinel, #626876)
  • 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. (Martin [gz], #633462)
  • The old bzr selftest --benchmark option has been removed. <https://launchpad.net/bzr-usertest> is an actively-maintained macrobenchmark suite. (Martin Pool)
  • 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)